Android – uma visão informal José Antonio Borges - 2014 Inst. Tércio Pacitti da UFRJ O Android é um sistema operacional baseado no kernel do Linux, destinado originalmente a dispositivos móveis. • Dá suporte a muitos dispositivos • Biblioteca de interface de usuário rica, suporta gráficos 2-D e 3-D usando os OpenGL ES (OpenGL) • Dá acesso ao sistema de arquivos do Linux • Vem com banco de dados SQLite embutido. • Grande suporte a dispositivos de hardware (GPS, sensores, acelerômetro, áudio/vídeo, etc.) • Teoricamente, código aberto No Android a reutilização de outros componentes de aplicação é um conceito muito comum, conhecido como task (tarefa). Um aplicativo pode acessar outros componentes do Android para realizar uma tarefa, mesmo se este componente não fizer parte desta aplicação. • Programação em Java – Mas as bibliotecas são totalmente diferentes do padrão de Java • Classes em Java são compiladas para dex (Dalvik Virtual Machine) não é Java bytecode – Just in time compiler on Dalvik – Android RunTime (ART) tendência Classificação geral dos programas: Applications (interativas, visuais, em tempo real) Broadcast receivers (Registrados no Android para atender a mensagens do sistema e pedidos das aplicações intents) Services (tarefas longas, não visuais, em background) Content providers (usados para organizar, armazenar e compartilhar dados entre aplicações) Estrutura conceitual do Android • O kernel do Linux, as bibliotecas e o runtime são encapsuladas na estrutura do aplicativo. O desenvolvedor do aplicativo Android normalmente trabalha com as duas camadas de cima para criar novos aplicativos Android. Framework: altamente burocratizado, acessado através de “gerentes” • • • • • • • • • • • • • • AccessibilityManager AccountManager AlarmManager AppWidgetManager AppWidgetManager AudioManager BackupManager BatteryManager FragmentManager GlowManager InputMethodManager KeyguardManager LoaderManager LocationManager • • • • • • • • • • • • • NotificationManager PackageManager PowerManager PreferenceManager RingtoneManager SearchManager SensorManager ServiceManager SupportFragmentManager SyncManager TelephonyManager WaveManager WindowManager Quase tudo tem que ser requisitado através destes gerentes, solicitados em tempo de execução. A programação não é tão simples... Telefones fazem muitas coisas ao mesmo tempo, e elas não se podem interferir, por exemplo... • Programa tem que se preocupar com o estado do telefone: – p.ex.: parar de executar quando a tela está desligada ou se alguma chamada telefônica em curso. – Android provê callbacks para que se saiba quando ocorrem mudanças de estado ciclo de vida. • Proteção é pequena quanto ao monopólio da CPU. – Os programas têm que ser “bem educados”. – Usar um pouquinho e retornar. – Tarefas grandes: threads em background Proteção: • Os aplicativos do Android são isolados de outros aplicativos em execução. • Se os dados precisarem ser compartilhados, o aplicativo deve fazer isso de forma explícita através de um componente Android que trata da partilha dos dados: um serviço ou de um provedor de conteúdo. Permissões são tratadas com cuidado: • Programas indicam explicitamente o que vão usar ou atender AndroidManifest.xml • O Android pode deixar automaticamente ou pode pedir autorização ao usuário. Ferramentas de desenvolvimento • Android SDK • Inclui emuladores • Android NDK • Android debug bridge (adb) • Android Developer Tools (Eclipse) – and Android Studio (Google) http://developer.android.com/sdk/index.html Ambiente de desenvolvimento gratuito, pré-configurado • • • • • Eclipse + ADT plugin Android SDK Tools Plataforma Android-tools A plataforma Android mais recente A imagem do sistema mais recente do Android para o emulador Instalação Stand-alone do ADT (CD distribuído) Extraia o arquivo zip e inicie o Android Developer Tools (Eclipse), que está localizados na pasta eclipse. Clique duplo em eclipse.exe ou crie atalho no desktop Usando o Assistente (wizard) para criar um projeto File → New → Other... → Android → Android Application Project Interface com o usuário Activity base da interface com o usuário Views componentes visuais LayoutManager calcula a posição das Views A partir do 4.0, as Views são colocadas em fragmentos (sub-janelas da activity) para permitir reconfiguração mais fácil de telas. Organização do fonte Mais importantes para conhecer logo. Layout Código Java (no estilo antigo, sem fragmentos) AndroidManifest.xml Para debugs e informação Log.d (“tag”, “informação”); ou Log.i, Log.e, Log.w Mensagens popup simples Toast.makeText(this, “Oi mamãe”, Toast.LENGTH_LONG).show(); (*) Toast precisa do contexto da aplicação: this Referências de hoje • vogella.com/tutorials/Android/article.html • developer.android.com/sdk