Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google Android - Aula 1 - Turma 2015.1

Google Android - Aula 1 - Turma 2015.1

Slides do curso "Desenvolvimento Google Android", aula 1, ministrado na Linux Fi (turma 2015.1).

Eduardo Carneiro

June 13, 2015
Tweet

More Decks by Eduardo Carneiro

Other Decks in Programming

Transcript

  1. 2 Sobre o instrutor • Especialista em Tecnologias para Desenvolvimento

    de Aplicações Móveis pelo CESAR.edu • Desenvolvedor de aplicações móveis na Abacomm Brasil com foco em Android • Professor no Centro Universitário de João Pessoa • Integrante do grupo Androidos
  2. 3 Ementa Módulo 1 • Introdução à plataforma Android •

    Ambiente de desenvolvimento • Conceitos básicos • Activities • Intents e Intent-Filters • Layouts e Views • Fragments • ActionBar
  3. 4 Ementa Módulo 2 • BroadcastReceiver • Notification • Service

    • AlarmManager • Handler • Banco de dados SQLite • Shared preferences • ContentProvider • Google Maps e GPS • HTTP e JSON • SMS • Google Cloud Messaging • Widgets • Sensores • Google Play
  4. 9 História • Em agosto de 2005 a Google adquire

    a Android Inc. • Em novembro de 2007 o Android é apresentado e é formada a OHA • Em outubro de 2008 é lançado o primeiro aparelho com o sistema Android – HTC Dream (T-Mobile G1)
  5. 10 Open Handset Alliance • A OHA é um grupo

    formado por 87 gigantes do mercado de telefonia liderados pelo Google • O objetivo do grupo é definir uma plataforma única, aberta, moderna e flexível, acompanhando as tendências do mercado www.openhandsetalliance.com
  6. 12 Android e seus sabores 1.5 Cupcake 1.6 Donut 2.0

    Eclair 2.2 Froyo 2.3 Gingerbread 3.0 Honeycomb 4.0 Ice Cream Sandwich 4.1 Jelly Bean 4.4 Kitkat 5.0 Lollipop
  7. 13 Mercado Android está em 91,6% dos celulares vendidos no

    1º semestre, diz pesquisa Levantamento da Nielsen Ibope mostra domínio do Google no Brasil. Varejo brasileiro vendeu em 2014 47% mais smartphones que em 2013. Do G1, em São Paulo - 23/09/2014 13h04 Vendas de smartphones passam de 13 milhões no Brasil no 2º trimestre IDC aponta crescimento recorde de vendas, que aumentaram 22%. Entre abril e junho, foram vendidos mais de 100 smartphones por minuto Do G1, em São Paulo - 12/09/2014 16h21 Android está em 91,6% dos celulares vendidos no 1º semestre, diz pesquisa Levantamento da Nielsen Ibope mostra domínio do Google no Brasil. Varejo brasileiro vendeu em 2014 47% mais smartphones que em 2013. Do G1, em São Paulo - 23/09/2014 13h04 Vendas de smartphones passam de 13 milhões no Brasil no 2º trimestre IDC aponta crescimento recorde de vendas, que aumentaram 22%. Entre abril e junho, foram vendidos mais de 100 smartphones por minuto Do G1, em São Paulo - 12/09/2014 16h21
  8. 14 Mercado Smartphone OS Market Share, Q1 2015 Android dominated

    the market with a 78.0% share in 1Q15. Samsung reasserted its global lead with a renewed focus on lower-cost smartphones. IDC - Q1 2015
  9. 16 Interface gráfica Layouts Input Controls Input Events Menus Action

    Bar Search Dialogs Notifications Styles and Themes
  10. 30 Fundamentos App1 Dalvik Processo (UID 10000) App2 Dalvik Processo

    (UID 10001) App3 Dalvik Processo (UID 10002) /data/.../app1 /data/.../app2 /data/.../app3
  11. 31 Manifesto <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.ceducarneiro.exemplo" android:versionCode="1" android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".Tela1Activity" android:label="@string/title_activity_tela1"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.ceducarneiro.exemplo" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".Tela1Activity" android:label="@string/title_activity_tela1"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> AndroidManifest.xml
  12. 32 Componentes Activities Tela única com interface com o usuário.

    Services Componente que roda em background e executa operações de longa duração. Content providers Gerencia um conjunto compartilhado de dados da aplicação. Broadcast receivers Responde às mensagens de broadcasts do sistema.
  13. 33 Activity e View • Cada tela da aplicação vai

    herdar, direta ou indiretamente, de android.app.Activity; • A Activity é o controller do MVC; • Através do método setContentView, indicamos qual android.view.View será exibida.
  14. 34 Classe R • Mapeia cada recurso da aplicação (strings,

    layouts, imagens, etc) em identificadores; • res/layout/screen.xml = R.layout.screen • res/drawable/logo.png = R.drawable.logo • Criada automaticamente na compilação, não deve ser modificada manualmente; • Os nomes devem estar em minúsculo.
  15. 35 Recursos O Android faz alocação automática dos recursos, de

    acordo com a configuração atual do dispositivo. Linguagem e região en, en-US, pt, pt-BR Tamanho da tela small, normal, large, xlarge Aspecto long, notlong Orientação port, land Densidade ldpi, mdpi, hdpi, xhdpi, xxhdpi API v3, v4, v7, etc
  16. 37 Clique do botão <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView

    android:text="Olá, mundo!" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clique aqui" android:onClick="onCliqueAqui" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:text="Olá, mundo!" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clique aqui" android:onClick="onCliqueAqui" /> </LinearLayout> public void onCliqueAqui(View v) { Toast.makeText(this, "Clique!", Toast.LENGTH_LONG).show(); } public void onCliqueAqui(View v) { Toast.makeText(this, "Clique!", Toast.LENGTH_LONG).show(); }
  17. 38 Android Device Monitor • Devices • Emulator Control •

    File Explorer • LogCat • Threads • Heap
  18. 39 LogCat Log.v(“Categoria”, “Verbose”); Log.d(“Categoria”, “Debug”); Log.i(“Categoria”, “Information”); Log.w(“Categoria”, “Warning”);

    Log.e(“Categoria”, “Erro”); Log.v(“Categoria”, “Verbose”); Log.d(“Categoria”, “Debug”); Log.i(“Categoria”, “Information”); Log.w(“Categoria”, “Warning”); Log.e(“Categoria”, “Erro”);
  19. 41 Navegação Intent intencao = new Intent(this, SegundaTelaActivity.class); intencao.putExtra("nome", "Eduardo");

    intencao.putExtra("idade", 28); intencao.putExtra("casado", true); startActivity(intencao); Intent intencao = new Intent(this, SegundaTelaActivity.class); intencao.putExtra("nome", "Eduardo"); intencao.putExtra("idade", 28); intencao.putExtra("casado", true); startActivity(intencao); Intent it = getIntent(); String nome = it.getStringExtra("nome"); int idade = it.getIntExtra("idade", -1); boolean casado = it.getBooleanExtra("habilitado", false); Intent it = getIntent(); String nome = it.getStringExtra("nome"); int idade = it.getIntExtra("idade", -1); boolean casado = it.getBooleanExtra("habilitado", false); PrimeiraTelaActivity SegundaTelaActivity
  20. 43 Salvando a Activity • O Android, por padrão, recria

    a Activity em várias situações: mudança de orientação, alteração de idioma e etc. • Devemos então salvar o estado da Activity usando o método onSaveInstanceState e recuperar no onCreate.
  21. 44 Salvando a Activity @Override public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState); if (savedInstanceState != null){ String nome = savedInstanceState.getString("nome"); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("nome", "Eduardo"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null){ String nome = savedInstanceState.getString("nome"); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("nome", "Eduardo"); }
  22. 45 Obtendo dados de outra Activity @Override protected void onActivityResult(int

    requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == MEU_REQUEST_CODE && resultCode == RESULT_OK) { data.getStringExtra("nome"); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == MEU_REQUEST_CODE && resultCode == RESULT_OK) { data.getStringExtra("nome"); } } Intent intencao = new Intent( this, SegundaTelaActivity.class); startActivityForResult( intencao, MEU_REQUEST_CODE); Intent intencao = new Intent( this, SegundaTelaActivity.class); startActivityForResult( intencao, MEU_REQUEST_CODE); Intent intencao = new Intent(); intencao.putExtra("nome", "Eduardo"); setResult(RESULT_OK, intencao); finish(); Intent intencao = new Intent(); intencao.putExtra("nome", "Eduardo"); setResult(RESULT_OK, intencao); finish();