• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Oficina Sesc Android - V1
 

Oficina Sesc Android - V1

on

  • 1,504 views

Oficina SESC Android - Ago/2012

Oficina SESC Android - Ago/2012

Statistics

Views

Total Views
1,504
Views on SlideShare
1,498
Embed Views
6

Actions

Likes
0
Downloads
75
Comments
1

2 Embeds 6

http://www.linkedin.com 5
http://www.slashdocs.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Oficina Sesc Android - V1 Oficina Sesc Android - V1 Presentation Transcript

    • {
    • AgendaO que é Android ?História do AndroidOutros SistemasO limite é a imaginação
    • O que é Android ?Android é um sistema operacional baseado em linux para dispositivos móveis. É desenvolvido pela Open Handset Alliance, liderado pelo Google
    • 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
    • Novidades android
    • 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
    • O Futuro é agora 1982 2012
    • Os equipamentos são substituídos por aplicativos
    • 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
    • Sistemas operacionais e linguagens de programação. Qualquer uma das linguagens deprogramação requer estudo e dedicação.
    • AgendaAmbiente de desevolvimentoprincípiosHello worldComponentes visuais
    • Ambiente de desevolvimento Todo o ambiente de desenvolvimento é open-source Eclipse: http://www.eclipse.org Android SDK: http://developer.android.com/sdk
    • Activity Android possui alguns conceitos interessantes em sua arquitetura Activity Intent Service Content Provider Broadcast Receiver
    • Activity Para testar os conceitos a seguir, vamos criar uma nova aplicação
    • 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. } }
    • princípios Background Ciclo de vida da activity onRestart()onCreate() onStart() onResume() onPause() onStop() onDestroy() Null
    • 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)
    • 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>
    • Activity Para adicionar funções ao botão, precisamos programar
    • Activity Para adicionar funções ao botão, precisamos programar … ProgressDialog dialogo; Handler handler; … …Button botao =(Button)findViewById(R.id.btProcessar); …
    • 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(); }
    • 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/
    • 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");
    • 2º Conceito: Intent Intent Intenção Intent é uma descrição abstrata de uma operação que será executada
    • IntentPara navegar entre activities, precisamos informar a nossa intenção Intent AndroidManifest.xml
    • 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 !
    • 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
    • 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); } }}
    • Sua aplicação vive sozinha ? Comunicação Senão … Interação Informações Live Streaming
    • 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)" }}
    • princípios Http Webservice JSON
    • 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
    • Conectando a apicação
    • Conectando a apicação
    • Conectando a apicação
    • Conectando a apicação
    • Conectando a apicação
    • Hora de programar
    • Google android add-ins Para facilitar o desenvolvimento e promover idéias inovadoras, Google oferece um conjunto especial de APIs para Android
    • Google android add-ins USB Open Accessory Google MAPs Google Cloud Messaging Google Play Google Analytics
    • 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
    • Google android add-ins Para começar a usar, é necessário baixar o pacote Google APIs no SDK Manager do Android Plugin Google APIs
    • 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 !
    • Passos para ter sucesso com mapas Criando o emuladorVamos criar um novo emulador, informando queutilizaremos a GoogleAPI.Android AVD Manager -> New -> GoogleAPIs (Google Inc.)
    • Passos para ter sucesso com mapas Crie o novo projeto Vamos criar um novo projetoNew -> Android Application Project
    • 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"/>
    • 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" />
    • 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; } }
    • 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
    • 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
    • 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
    • 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
    • oficinasescandroidoficin@sesC
    • Passos para ter sucesso com mapasRode a aplicação novamente
    • 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 !
    • 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);
    • 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); }});
    • Testando a minha localizaçãoPara enviar o sinal do GPS, utilize o Emulator Control Longitude -46,547225 Latitude -23,6539964
    • 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);
    • 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);}
    • 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(); } … }}
    • 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);}
    • 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);
    • Aplausos para a nossa primeira aplicação !
    • Como são compiladas as apps. ? imagens.java .class .dex arquivos .apk Instalamos a aplicação .apk nos dispositivos
    • odair.bonin@gmail.com { Obrigado pela presença