Oficina Sesc Android - V1

1,588 views

Published on

Oficina SESC Android - Ago/2012

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,588
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
100
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Oficina Sesc Android - V1

  1. 1. {
  2. 2. AgendaO que é Android ?História do AndroidOutros SistemasO limite é a imaginação
  3. 3. O que é Android ?Android é um sistema operacional baseado em linux para dispositivos móveis. É desenvolvido pela Open Handset Alliance, liderado pelo Google
  4. 4. História 6% 5% Surge o consórciotorna Handset Alliance, formado por Android se Open o Google acredita emprimeiros tablets com Android. 47 uma pequena empresa São lançados os empresas. líder em vendas pelo Notícias da BBC e WallStreet dizem que Google chamada é definir padrões para um sistema aberto, sem O objetivo Android mercado restrito de celulares. Inc., que tinha um projeto de está entrando no lançam modelos com android. Isto faz Outros fabricantes 59%. mundo, com o primeiro pagar licensas. criar um alcança a operacionalcelular celulares dia e AAndroid sistema marca de 700.000 ativações por o empresa fabricantes tenham quepara com Android: que os HTC lança 30% alcançar a marca de 43% dos celulares vendidos nos projeta uma marca de Dream de 250% ao ano. HTC aumento Google é o líder deste consórcio e oferece o Android 59% baseado em linux. Estados Unidos, com 362.000 ativações por dia. Começaram boatos de operacional. estava como sistema que Google fabricando um celular. Google comprou a empresa Android IOS Symbian Windows phone Fonte: http://en.wikipedia.org/wiki/Mobile_operating_system#Mobile_OS_comparison 2005 2007 2010 2012 2006 2008 2011
  5. 5. Novidades android
  6. 6. O que é possível fazer com um smartphone ? Guardar arquivos via USB Acessar sites na internet Ouvir rádio Jogar video-game Tirar fotos usando flash Ler PDF e Documentos Gravar e reproduzir vídeos Receber e enviar mensagens SMS Calcular com calculadora científica Dirigir com GPS e mapas Reproduzir MP3 Fazer e receber ligações Gravar sons
  7. 7. O Futuro é agora 1982 2012
  8. 8. Os equipamentos são substituídos por aplicativos
  9. 9. Para criar uma aplicação é Java necessário conhecer uma C C♯ linguagem de programação C++ Objective-C PHP Visual Basic Python20 linguagens de programação mais populares Perl JavaScript Delphi Pascal Ruby Lisp Transact-SQL Pascal Visual Basic .NET PL/SQL Logo AdaFonte: http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o R
  10. 10. Sistemas operacionais e linguagens de programação. Qualquer uma das linguagens deprogramação requer estudo e dedicação.
  11. 11. AgendaAmbiente de desevolvimentoprincípiosHello worldComponentes visuais
  12. 12. Ambiente de desevolvimento Todo o ambiente de desenvolvimento é open-source Eclipse: http://www.eclipse.org Android SDK: http://developer.android.com/sdk
  13. 13. Activity Android possui alguns conceitos interessantes em sua arquitetura Activity Intent Service Content Provider Broadcast Receiver
  14. 14. Activity Para testar os conceitos a seguir, vamos criar uma nova aplicação
  15. 15. 1º Conceito: Activity XML <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:padding="@dimen/padding_medium" android:text="@string/hello_world" tools:context=".MainActivity" /> </RelativeLayout> Classe JAVA public class MainActivity extends Activity {Cada tela individual é @Overrideuma Activity. Usuários public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); conseguem executar setContentView(R.layout.activity_main); } ações interagindo através de @Override public boolean onCreateOptionsMenu(Menu menu) { componentes visuais getMenuInflater().inflate(R.menu.activity_main, menu); return true; em uma activity. } }
  16. 16. princípios Background Ciclo de vida da activity onRestart()onCreate() onStart() onResume() onPause() onStop() onDestroy() Null
  17. 17. Activity Precisamos atribuir identificadores para os componentes da tela Dicas: • Use padrões para nomear componentes • Use nomes simples • Adicione ao nome do componente o tipo (ex: “btProcessar”, nome para o botão processar)
  18. 18. Activity Para facilitar a internacionalização da aplicação, é recomendado usar strings.xml Tela para ajudar a inserir uma nova string <resources> res/values/strings.xml <string name="app_name">Ajuste9Digitos</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> <string name="title_activity_tela1">Tela 1</string> <string name="botao">Processar</string> <string name="title_activity_tela2">Tela 2</string> <string name="clique">Clique no botao</string> <string name="ir_para_contatos">Ir para contatos</string> </resources>
  19. 19. Activity Para adicionar funções ao botão, precisamos programar
  20. 20. Activity Para adicionar funções ao botão, precisamos programar … ProgressDialog dialogo; Handler handler; … …Button botao =(Button)findViewById(R.id.btProcessar); …
  21. 21. Activity Para adicionar funções ao botão, precisamos programarButton botao =(Button)findViewById(R.id.btProcessar);botao.setOnClickListener(this);Faça a Activity implementar o Listener do Click (OnClickListener) … Activity implements OnClickListener{ Você será obrigado a ter o método onClick @Override public void onClick(View arg0) { Toast.makeText(Tela1Activity.this, “Click”, 1000).show(); }
  22. 22. Activity Forma errada de processar e executar métodos Simulando um processamento pesado private void processar(){ int contador = 1; while(contador < 150000){ Log.i("Tela1", "Estou no " + contador); contador++; } }Chame o método processar() no método onClick() http://queninguemle.blogspot.com.br/
  23. 23. Activity Forma correta de processar e executar métodos private void processar(){ int contador = 0; while(contador < 100000){ contador++; Log.i("Tela1", "Estou no " + contador); } } Chame o método processar() em uma ThreadRunnable contar = new Runnable(){ @Override public void run() { processar(); }};Thread paralelo = new Thread(contar);paralelo.start(); dialogo = ProgressDialog.show(Tela1Activity.this, "Aguarde", "Processando");
  24. 24. 2º Conceito: Intent Intent Intenção Intent é uma descrição abstrata de uma operação que será executada
  25. 25. IntentPara navegar entre activities, precisamos informar a nossa intenção Intent AndroidManifest.xml
  26. 26. 3º Content ProviderProvedor de conteúdo Android permite armazenar informações de diversas maneiras. Banco de dados Arquivos de texto Preferencias de sistema Porém, geralmente as informações ficam salvas dentro do pacote da aplicação. Somente a aplicação pode acessar !
  27. 27. 3º Content ProviderProvedor de conteúdo O Conceito de “Content Provider” permite que essas informações sejam públicasPara utilizar o content provider, é necessário utilizar URI para identificar a informação Uniform Resource Identifier (Identificador Uniforme de Recursos) content://com.android.contacts/contacts/ ContactsContract.Contacts.CONTENT_URI content://com.android.contacts/contacts/1 content://media/external/images/media
  28. 28. 3º Content Provider Provedor de conteúdoprivate void listarContatos(){ Uri contatos = ContactsContract.Contacts.CONTENT_URI; ContentResolver content = getContentResolver(); Cursor cursor = content.query(contatos, null, null, null, null); while(cursor.moveToNext()){ for(int i=0; i < cursor.getColumnCount(); i++){ String info = cursor.getColumnName(i) + " = " + cursor.getString(i); Log.i("Tela1",info); } }}
  29. 29. Sua aplicação vive sozinha ? Comunicação Senão … Interação Informações Live Streaming
  30. 30. Comunicação entre aplicações Webservices REST + JSON JavaScript Object Notation Chave Valor{ “pergunta”:{ "numero_pergunta":"3", "pergunta":"Quantas vezes o Brasil foi campeao da copa ?", "3":"6 vezes (hexa)", "2":"5 vezes (penta)", "1":"4 vezes (tetra)" }}
  31. 31. princípios Http Webservice JSON
  32. 32. Conectando a apicação Para se conectar á redes sociais, é necessário conhecer a API Ex.: https://userstream.twitter.com/2/user.json https://api.foursquare.com/v2/users/1/friend
  33. 33. Conectando a apicação
  34. 34. Conectando a apicação
  35. 35. Conectando a apicação
  36. 36. Conectando a apicação
  37. 37. Conectando a apicação
  38. 38. Hora de programar
  39. 39. Google android add-ins Para facilitar o desenvolvimento e promover idéias inovadoras, Google oferece um conjunto especial de APIs para Android
  40. 40. Google android add-ins USB Open Accessory Google MAPs Google Cloud Messaging Google Play Google Analytics
  41. 41. Google android add-ins Google Maps API fornece um poderoso ambiente para adicionar funcionalidades de mapas em sua aplicação Possui uma variedade de classes para renderizar mapas, além de diversas opções de visualizar e controlar mapas A classe principal é chamada de MapView, responsável por renderizar, reconhecer gestos para fazer zoom, e fazer requisições adicionais ao servidor de mapas
  42. 42. Google android add-ins Para começar a usar, é necessário baixar o pacote Google APIs no SDK Manager do Android Plugin Google APIs
  43. 43. Passos para ter sucesso com mapas Crie um emulador com suporte á Google APIs e GPS Crie um novo projeto (Android Application Project) Adicione as permissões no AndroidManifest.xml Arranque o Hello World da tela, e coloque no lugar um MapView Altere a classe para herdar de MapActivity, e não mais Activity Gere a chave GoogleMaps (não é tão de graça assim) Altere o XML, insira a chave que recebeu do Google Rode a aplicação e parta para o abraço !
  44. 44. Passos para ter sucesso com mapas Criando o emuladorVamos criar um novo emulador, informando queutilizaremos a GoogleAPI.Android AVD Manager -> New -> GoogleAPIs (Google Inc.)
  45. 45. Passos para ter sucesso com mapas Crie o novo projeto Vamos criar um novo projetoNew -> Android Application Project
  46. 46. Passos para ter sucesso com mapas Adicione permissões no AndroidManifest.xml Precisamos alterar o AndroidManifest.xml Tenha cuidado ao digitar em meio as tags.<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>Dentro de application<uses-library android:name="com.google.android.maps"/>
  47. 47. Passos para ter sucesso com mapasArranque o Hello World da tela (tela_mapa.xml) e insira o MapView<RelativeLayoutxmlns:android=http://schemas.android.com/apk/res/androidxmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.google.android.maps.MapView android:id="@+id/mapa" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="CHAVE_GOOGLE_MAPS" />
  48. 48. Passos para ter sucesso com mapasFaça a Activity herdar de MapActivity … TelaMapaActivity extends MapActivity { . . . @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
  49. 49. Passos para ter sucesso com mapasRode a aplicação (para gerar o arquivo debug.keystore)Rode a aplicação agora, e receba um erro grátis !java.io.IOException: Server returned: 3
  50. 50. Passos para ter sucesso com mapasGere a chave GoogleMaps (não é tão de graça assim) Precisamos gerar a chave para utilizar o mapaWindows Vista: C:Users<user>.androiddebug.keystoreWindows XP: C:Documents and Settings<user>.androiddebug.keystoreLinux: ˜/.android/debug.keystore Linux: no terminal cd .android
  51. 51. Passos para ter sucesso com mapasGere a chave GoogleMaps (não é tão de graça assim)No terminal, digite:keytool –list –keystore debug.keystoreInsira a senha: android Your keystore contains 1 entry androiddebugkey, Jul 17, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): 51:15:A4:15:DB:23:9E:C6:E2:77:04:3B:37:CA:53:70
  52. 52. Passos para ter sucesso com mapasGere a chave GoogleMaps (não é tão de graça assim) https://developers.google.com/android/maps-api-signup
  53. 53. oficinasescandroidoficin@sesC
  54. 54. Passos para ter sucesso com mapasRode a aplicação novamente
  55. 55. Passos para ter sucesso com mapas Crie um emulador com suporte á Google APIs e GPS Crie um novo projeto (Android Application Project) Adicione as permissões no AndroidManifest.xml Arranque o Hello World da tela, e coloque no lugar um MapView Altere a classe para herdar de MapActivity, e não mais Activity Gere a chave GoogleMaps (não é tão de graça assim) Altere o XML, insira a chave que recebeu do Google Rode a aplicação e parta para o abraço !
  56. 56. Controlando o mapa É possível controlar o mapa através de programação … extends MapActivity { MapView mapa; MapController controlador; GeoPoint ponto; … setContentView(R.layout.tela_mapa); mapa = (MapView) findViewById(R.id.mapa); mapa.setSatellite(true); mapa.setBuiltInZoomControls(true); controlador = mapa.getController(); controlador.setZoom(17);
  57. 57. Controlando o mapa É possível controlar o mapa através de programaçãocontrolador.setZoom(17);final MyLocationOverlay meuponto = newMyLocationOverlay(this, mapa);meuponto.enableCompass();meuponto.enableMyLocation();mapa.getOverlays().add(meuponto);meuponto.runOnFirstFix(new Runnable(){ @Override public void run() { ponto = meuponto.getMyLocation(); controlador.animateTo(ponto); }});
  58. 58. Testando a minha localizaçãoPara enviar o sinal do GPS, utilize o Emulator Control Longitude -46,547225 Latitude -23,6539964
  59. 59. Movimentando o mapa É necessário um Listener para que o mapa seja atualizado …extends MapActivity implements LocationListener{ Você será a obrigado a ter alguns métodos GeoPoint ponto; LocationManager gerenciador; ... controlador.animateTo(ponto); }});gerenciador =(LocationManager)getSystemService(LOCATION_SERVICE);gerenciador.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, this);
  60. 60. Movimentando o mapa Basta atualizar o ponto, e centralizar no ponto encontrado ! GeoPoint mede latitude e longitude em micrograus, e o GPS retorna em graus. Por isso, tem que converter !@Overridepublic void onLocationChanged(Location location) { Toast.makeText(this, “Ponto encontrado", Toast.LENGTH_LONG).show(); ponto = new GeoPoint( (int) (location.getLatitude() * 1E6), (int) (location.getLongitude()* 1E6) ); controlador.animateTo(ponto);}
  61. 61. Adicionando pontos no mapa Precisamos customizar um ponto para adicionar no mapa. class MeuMarcador extends ItemizedOverlay{ ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); public MeuMarcador(Drawable defaultMarker){ super(boundCenterBottom(defaultMarker)); populate(); } public void adicionarPonto(OverlayItem ponto){ items.add(ponto); populate(); } … }}
  62. 62. Adicionando pontos no mapa Precisamos customizar um ponto para adicionar no mapa. . . . createItem => return items.get(i); size => return items.size();@Overrideprotected boolean onTap(int index) { OverlayItem item = items.get(index); Toast.makeText(TelaMapaActivity.this, item.getSnippet(), Toast.LENGTH_LONG).show(); return super.onTap(index);}
  63. 63. Adicionando pontos no mapa Precisamos customizar um ponto para adicionar no mapa. LocationManager gerenciadorLocal; MeuMarcador marcadores;onLocationChanged ( . . . ) { . . .controlador.animateTo(ponto);OverlayItem item = new OverlayItem(ponto, "Ponto", location.toString());marcadores.adicionarPonto(item);mapa.getOverlays().add(marcadores);
  64. 64. Aplausos para a nossa primeira aplicação !
  65. 65. Como são compiladas as apps. ? imagens.java .class .dex arquivos .apk Instalamos a aplicação .apk nos dispositivos
  66. 66. odair.bonin@gmail.com { Obrigado pela presença

×