Projeto Avançado de Software II 3 – Revisão da Lição 2 Eduardo de Lucena Falcão.

Slides:



Advertisements
Apresentações semelhantes
Criando aplicações WEB
Advertisements

Python: Funções Claudio Esperança.
Administração de sistemas operacionais
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Algoritmos e Estrutura de Dados I
Um Processo Baseado em MDA para a Especialização de Mecanismos de Persistência Fabio Seixas Marques Seminário LES – 7 de abril de.
1.
Tutorial I: Criando a interface de uma aplicação em Java
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro Fabrício Firmino de Faria.
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro
Tecnologias para Internet Thyago Maia Tavares de Farias Aula 6.
MANUAL NOVA INTRANET 2010 IMPORTANTE! IMPORTANTE!
Análise de Sistemas Análise e Projeto Prof. Jeime Nunes Site:
Concorrência em Java Threads em Java.
Aula 4 Prof. Naércio Filho Técnico em Informática
Manual - Bikesys Versão 1.0 – Beta Março 2013.
PROGRAMAÇÃO ESTRUTURADA II
Expansão dos Casos de Uso
Usando Microsoft Access 2010
Rodrigo Cristiano Silva
Programação I Aula 2 (Métodos)
ACCESS 2007 EDIMILSON JÚNIOR.
Desenvolvimento para Android Aula 7 - Services
Professor José Rui Aula 10
MICROSOFT Windows XP.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Programação Orientada à Objetos
Programação I Laboratório I
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
Treinamento Fusion Relatórios Fusion ECM Suite
Aula Prática 4 Monitoria IP/CC (~if669).
Laboratório de Programação
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
Equipamentos – Configuração de Balança de Etiquetas
Conceitos Básicos Introdução.
PDV- Balança - Como Configurar
Análise e Projeto de Sistemas
Backup DE DADOS DO USUÁRIO. Cópia de segurança dos dados no computador, alguns fáceis e outros trabalhosos, de acordo com a quantidade de dados. Utilizado.
© 2012 Microsoft Corporation. Todos os direitos reservados. Adicione um contato Sua lista de Contatos simplifica suas comunicações e permite que você veja.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Compras - Saída do Estoque (Correção) 1 IdentificaçãoCOM_012 Data Revisão15/10/2013.
Novidades... Quartetos; – Equilibrar Conhecimento; – Aprender a Ensinar; – Trabalho em Equipe; – Facilitar a Vida do Professor. – Então, definam seus grupos.
Passo a passo – Instrutor PeerMark – Avaliação por Pares.
Programação Distribuída em Java Aula Na aula passada vimos: O protocolo UDP –Características principais –Velocidade x confiabilidade A classe DatagramPacket.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
Expansão dos Casos de Uso
Aula – Sistemas Operacionais
CVS – Gerenciamento de Versões
Departamento de Gestão de Documentos Públicos
Tópicos em Sistemas Operacionais (LINUX) Prof:. Msc. Arimatéia Junior Fortaleza-2011.
COMPUTAÇÃO MÓVEL Prof.: Jean Carlo Mendes
COMPUTAÇÃO MÓVEL Prof.: Jean Carlo Mendes
Array e ArrayList LPOO – 01/09/14.
Linguagem de Programação
Aula 3. ListView ListView é um componente que mostra uma lista de itens Os itens da lista são automaticamente inseridos usando um adapter, implementado.
PROJETO 2: ALUNOS UFRPE Parte 1. Dividindo para conquistar 1. Interação com o usuário 2. Leitura e escrita em arquivos 3. Regra de negócio para executar.
Tudo sobre listas em Android
Aula 7 – Padrão Abstract Factory
Aula 8 – Padrão Singleton
JavaScript Introdução ao JavaScript 1. Objetivos Introdução Sintaxe Básica Arquivo (script) externo Script no HEAD da página Script no BODY da página.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
Bruna Cavallero Martins Universidade Católica de Pelotas.
Questionário (Básico) Autor: Skyup Informática. Atividade - Questionário O módulo permite criar uma série de questões, que deverão ser respondida pelos.
Projeto Avançado de Software II 6 – Popular Movies APP Eduardo de Lucena Falcão.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Informática – Senai. Include e Require O PHP tem duas formas normalmente usadas para incluir o conteúdo de um arquivo PHP, em uma outra página. São elas:
Tarefa Autor: Skyup Informática. Atividade – Tarefa O módulo atividade tarefa tem como principio básico a interação professor-aluno. Os alunos podem apresentar.
Transcrição da apresentação:

Projeto Avançado de Software II 3 – Revisão da Lição 2 Eduardo de Lucena Falcão

Tópicos básicos Adapters (OK) – notifyDataSetChanged( ), add( ) e addAll( ) Resources (OK) – String, String array, Plurals, Formating and Styling Logging (OK) – Logcat Permissions (OK) – Declarando, Dangerous vs Normal permissions MainThread vs. Background Thread (OK) – ASyncTask 2

Relembrando Adapters Faz a ligação entre os dados brutos e a interface gráfica Detém o conhecimento de como da elemento será desenhado (tem uma referencia a um item layout) 3 Sempre que adicionarmos um novo dado ao Adapter, internamente ele chama o método notifyDataSetCanged().

Relembrando Adapters: add versus addAll 4 Notifica os observadores Ao invés de fazer for each chamando add dado por dado, é mais eficiente fazer um addAll.

O código do Android é aberto. – Sempre que preciso, investigue como é a implementação de um certo método/classe; – Não trate o código do Android como uma caixa preta. 5

String Resources Um arquivo que contém String Resources provê strings que podem ser usadas em nossa aplicação. Existem três tipos: – String: recurso XML para prover uma única string – String Array: recurso XML para prover arrays de strings – Quantity Strings (Plurals): recurso XML que considera diferentes strings para fins de pluralização 6

String Uma única string que pode ser referenciada a partir da aplicação ou de outros arquivos de recursos (ex.: xml layout); 7 Usado para acessar a string Deve ficar dentro do diretório values, mas o nome do arquivo é arbitrário. A tag raiz deve ser resources. Elemento xml: string

String 8 Arquivo salvo em res/values/strings.xml Layout XML aplicando a string em uma View Trecho de código da aplicação que recupera a String Também podemos usar getText(). A única diferença é que getText mantém um eventual rich text styling que a string contiver.

String Array 9 Um array de strings que pode ser referenciado apenas a partir da aplicação Usado para acessar o array de strings Deve ficar dentro do diretório values, mas o nome do arquivo é arbitrário. A tag raiz deve ser resources. Pode conter Strings e Arrays de Strings. Elemento xml: string-array Item: adiciona uma string ao array

String Array 10 Arquivo salvo em res/values/strings.xml Trecho de código da aplicação que recupera o array de strings

Plurals ou Quantity Strings Utilizado para se referir ao plural de uma string 11 One e other são as pluralizações mais interessantes para nós Usado para acessar o array de strings Elemento xml: plurals Item: adiciona uma nova string de quantidade

Plurals ou Quantity Strings 12

Plurals ou Quantity Strings 13 Arquivo salvo em res/values/strings.xml Param 1: seleciona o plural mais adequado Param 2: substitui %d

Formatting and Styling 14

Formatting and Styling 15 stringNº decimal

Formatting and Styling HTML – for bold text. – for italic text. – for underline text. 16

Logging 17 Boa prática definir como constante: geralmente, o nome da classe.

LogCat 18 Filtrando pelo id do processo. Nível de logging

Permissões Para proteger a integridade do sistema e privacidade dos usuários, o Android executa cada aplicativo com acesso limitado a recursos externos ao app; – Informações do usuário: contatos – Operações custosas ($): enviar sms/mms – Recursos do sistema: câmera Sempre que o app for usar estes recursos, ele tem que pedir permissão ao sistema A permissão de acesso a alguns recursos é concedida de maneira automática, enquanto que para outros o sistema pede permissão ao usuário Em que momento o app requisita as permissões? – Instalação: Android 5.1 e versões anteriores – Runtime: da versão Android 6.0 em diante 19

Quais permissões seu APP precisa? À medida em que vamos desenvolvendo é possível notar quais permissões o app precisará – Tipicamente, toda informação e recurso que não foi criada pelo app precisará de permissão – Ex.: acesso a internet, ligar a câmera, ligar/desligar WiFi – Dois principais níveis de permissão: normal e perigosa 20

Permissões normais e permissões perigosas Normal: cobre áreas externas que o app vai acessar mas que trazem pouco risco à privacidade do usuário ou operação de outros apps – Ex.: permissão pra setar a timezone – Sempre que o app declara uma permissão normal, ela é concedida automaticamente 21 ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_NETWORK_STATE ACCESS_NOTIFICATION_POLICY ACCESS_WIFI_STATE BLUETOOTH BLUETOOTH_ADMIN BROADCAST_STICKY CHANGE_NETWORK_STATE CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_STATE DISABLE_KEYGUARD EXPAND_STATUS_BAR GET_PACKAGE_SIZE INSTALL_SHORTCUT INTERNET KILL_BACKGROUND_PROCESSES MODIFY_AUDIO_SETTINGS NFC READ_SYNC_SETTINGS READ_SYNC_STATS RECEIVE_BOOT_COMPLETED REORDER_TASKS REQUEST_IGNORE_BATTERY_OPTIMIZATIONS REQUEST_INSTALL_PACKAGES SET_ALARM SET_TIME_ZONE SET_WALLPAPER SET_WALLPAPER_HINTS TRANSMIT_IR UNINSTALL_SHORTCUT USE_FINGERPRINT VIBRATE WAKE_LOCK WRITE_SYNC_SETTINGS

Permissões normais e permissões perigosas Dangerous: cobre áreas externas que o app vai acessar que envolvem informações privadas do usuário, ou que tem potencial de danificar informações já armazenadas, ou finalmente, que podem atrapalhar a operação de outros aplicativos – Ex.: ler os contatos, acessar localização. – Sempre que o app declara uma permissão perigosa, o sistema requisita permissão ao usuário – As permissões são divididas em permission groups Sempre que um aplicativo for pedir permissão a um usuário ele requisita acesso ao permission group como um todo, e não à permissão específica. Mas, se o usuário aceitar, o app só terá acesso à permissão requisitada. Se posteriormente o app requisitar uma permissão de um permission group cujo usuário já aceitou, essa permissão é concedida sem que o sistema pergunte novamente ao usuário. 22

Permissões normais e permissões perigosas 23 CALENDAR : READ_CALENDAR, WRITE_CALENDAR CAMERA : CAMERA CONTACTS : READ_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTS LOCATION : ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION MICROPHONE : RECORD_AUDIO PHONE : READ_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOIC , USE_SIP, PROCESS_OUTGOING_CALLS SENSORS : BODY_SENSORS SMS : SEND_SMS, RECEIVE_SMS, READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS STORAGE : READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE

24

Declarando permissões Declaramos as permissões que o nosso app precisa no Manifest.xml – Dependendo do nível de criticidade, elas serão concedidas automaticamente pelo sistema 25

Declarando permissões Seu app só precisa declarar as permissões para ações que ele mesmo fizer! – Ele não precisará declarar permissão se ele pedir para outro app fazer uma tarefa – Ex.: seu app precisar ler um contato da agenda. Mas, ao invés de fazer diretamente, ele usa um Intent (veremos adiante) para requisitar informações do app de Contatos. Nesta situação, seu app não precisa declarar esta permissão. 26

27

Main thread versus Background thread Operações custosas (tempo) como chamadas na internet ou leitura e escrita em bancos de dados bloquearão a UI. – Se a UI for bloqueada por alguns segundos (cerca de 5) o Android exibe ANR (“app not responding”) 28

Main thread versus Background thread Andoid UI toolkit is not thread-safe – Toda manipulação da UI deve ser realizada a partir da UI thread (main thread) Duas regras para facilitar a nossa vida quando lidamos com thread: – Não bloqueie a thread principal – Não acesse o UI toolkit de fora da thread principal 29

AsyncTask Solução thread-safe para a 2ª regra: “ não acesse o UI toolkit de fora da thread principal ” Executa as operações em uma thread de background e depois publica os resultados na UI thread Como? 1.Estender AsyncTask 2.Implementar o método doInBackground() 3.Implementar onPostExecute() que recebe o resultado de doInBackground() 1.onPostExecute() roda na thread principal, logo você pode usar para atualizar sua UI sem que haja problemas de sincronização 4.Com isto, você poderá executar suas tarefas em background chamando o execute() 30

AsyncTask 1.Estender AsyncTask 2.Implementar o método doInBackground() 3.Implementar onPostExecute() que recebe o resultado de doInBackground() 1.onPostExecute() roda na thread principal, logo você pode usar para atualizar sua UI sem que haja problemas de sincronização 4.Com isto, você poderá executar suas tarefas em background chamando o execute() 31 1.O tipo de parâmetro de doInBackground 2.Objeto para especificar o progresso da tarefa 3.O tipo do parâmetro do resultado da operação, i.e. argumento do onPostExecute

32

Considerando a AsyncTask criada para atualizar os dados exibidos no aplicativo Problema da AsyncTask Alternativa: usar services!

Próxima aula Aprofundando permissões: – Requisitando permissões em tempo de execução: br/training/permissions/requesting.html br/training/permissions/requesting.html – Recomendações sobre permissões: br/training/permissions/requesting.html br/training/permissions/requesting.html – Definindo novas permissões Interface – Menu Options: setHasMenuOptions, inflate – Configuration/refresh button Json parsing 34

Entregáveis Na data: 100% Próxima aula depois do deadline: 50% Daí em diante: 0% 35

Avaliação Mini-testes (aproximadamente 6) + Entregáveis: – Print das telas do app – Código parcial do projeto + Projeto final (individual) Nota – mini-testes (25%) + entregáveis (25%) – Projeto final (50%) 36

Referências br/guide/topics/resources/string-resource.html br/guide/topics/resources/string-resource.html br/tools/debugging/debugging-log.html br/tools/debugging/debugging-log.html br/training/permissions/index.html br/training/permissions/index.html br/guide/topics/security/permissions.html#normal- dangerous br/guide/topics/security/permissions.html#normal- dangerous br/guide/topics/security/normal-permissions.html br/guide/topics/security/normal-permissions.html s-and-threads.html#q=Service s-and-threads.html#q=Service 37