Android e Facebook Felipe Silveira
Android? Sistema Operacional + Plataforma de desenvolvimento + Aplicações Padrão (SMS, Maps, Calendar...) Código aberto (AOSP - Android Open Source Project) Desenvolvido pelo Google e posteriormente pela Open Handset Alliance
Histórico 2003: Andy Rubin, Rich Miner, Nick Sears e Chris White fundam a Android, Inc 2005: Google efetua a compra da Android, Inc 2007: Open Handset Alliance announced along with Android 2008 - Android 1.0 is released
Histórico 2009 - Android 1.1 2009 - Android 1.5 / Cupcake 2009 - Android 1.6 / Donut 2009 - Android 2.0/2.1 / Eclair 2010 - Android 2.2 / Froyo 2010 - Android 2.3 / Gingerbread 2011 - Android 3.0 / Honeycomb Tablet-optimized 2011 Android 3.1 USB host support 2011 Android 4.0 / Ice-Cream Sandwich merge Gingerbread and Honeycomb22 2012 -Android 4.1 / Jelly Bean
Open Handset Alliance Open Handset Alliance: Consórcio formado por mais de 50 empresas
Principais características Ambiente multitask Suporte nativo a GSM/3G, WI-FI, Bluetooth Biblioteca Multimídia (Formatos MPEG4, MP3, JPG,...) Suporte a Acelerômetro/GPS/Touchscreen...
Plataforma
Plataforma O foco deste minicurso está na primeira camada citada: A camada de Aplicações. Escritas em JAVA ou C/C++ usando a NDK Native Development Kit Executadas sobre a DALVIK VM Cada aplicação é executada em um diferente processo linux Formadas por Activities e/ou Services
Plataforma O que torna as aplicações android extremamente poderosas são as APIs providas pela plataforma, que permitem às aplicações acessarem vários recursos.
Plataforma UI Widgets Botões, listas, caixas de textos, etc. android.widget.* android.view.* Telephony Ligações telefônicas e envio/recebimento de SMS. android.telephony.iphone android.telephony.gsm.smsmanager Camera android.hardware.cameradevice Web client android.webkit.webview HTTP org.apache.http.client.* Database (SQLite) android.database.* Google Maps com.google.android.maps.mapview Location android.location.* Multimedia android.media.*
Ambiente Antes de tudo, vamos precisar do Android SDK. Para fazer o download, vá até developer.android.com/sdk e selecione a versão correta para seu sistema operacional. Após completado o download, execute o instalador. Para que seja possível a instalação, você precisará ter o Java SDK previamente instalado.
Emulador Uma ferramenta muito útil para teste das aplicações é o emulador, que é parte do SDK Android. Para usarmos o emulador, é preciso antes entender o conceito de AVD Android Virtual Device. O AVD serve para "representar" um dispositivo real, ou seja, ele vai ter as suas características, como tamanho de tela, quantidade de memória, etc. Dessa forma, o primeiro passo para a execução do emulador é a criação de um AVD, sobre o qual o emulador funcionará. Para isso, vamos usar o Android Virtual Devices Manager.
Emulador
Emulador Na tela para a criação do AVD, é necessário escolher um nome, que representará o AVD, e o "target", que é versão de android que rodará nele. Só são mostradas as versões de android instaladas na máquina local pelo SDK Manager. Também é necessário escolher o tamanho para o SD Card e o tamanho de tela. essas opções podem ficar como no screenshot a seguir.
Emulador
Emulador Depois de criado o AVD, basta selecioná-lo na lista e clicar em "Start..."
Emulador Na próxima tela, existem opções para mudar a escala da tela do emulador e para apagar os dados do usuário, gravados em uma execução anterior (Wipe user data)
Emulador
Criando o projeto Passo 1 Criando o projeto no Eclipse Abra o Eclipse, vá até File > New > Project Na tela que aparecer, escolha Android Project e clique em Next.
Criando o projeto
Criando o projeto Após isso, irá aparecer a tela com as configurações de seu projeto android. Nesta tela, você irá inserir o nome da sua aplicação, o package e as versões de android que ela irá suportar. Após preencher os campos, clique em Next
Criando o projeto A próxima tela contém opções para criação do ícone da aplicação e a localização do projeto. Após preencher os campos, clique em Next
Criando o projeto Na próxima tela, é possível configurar o ícone padrão da aplicação. Após preencher os campos, clique em Next
Criando o projeto A próxima tela contém as opções da Activity a ser criada. Após preencher os campos, clique em Next
Criando o projeto Por fim, a última tela do assistente de criação permite que seja alterado o nome da Activity principal da aplicação a ser criada. Após preencher os campos, clique em Finish
Download do SDK Tudo o que precisamos está na página de desenvolvedores do Facebook (https://developers.facebook.com). Logo na home do site temos três botões com as opções: ios, Android e Internet. No nosso caso, podemos optar pela segunda opção. Essa página contém diversas opções como o Getting Started, o Technical Guides, com guias técnicos que permitem aos desenvolvedores aprenderem de forma rápida features muito interessantes que podem ser acopladas aos seus aplicativos. Mas, o principal nesta página é o Download the SDK. Clique no arquivo, baixe e descompacte-o em um diretório de sua escolha.
Importando o SDK Para poder usar o SDK do facebook, é necessário importá-lo no eclipse. Para fazer isso, acesse o menu File > Import E então selecione "Existing Android Code Into Workspace" e clique em Next.
Importando o SDK Na próxima tela, selecione o diretório onde foi salvo o SDK e clique em Finish
Registrando-se no facebook Antes de começar a usar o SDK, é necessário registrar a sua aplicação a ser criada no site de desenvolvedores do facebook. Na página de desenvolvedores, temos uma opções no menu superior chamada de Apps, clique neste link e posteriormente, em + Criar Novo Aplicativo.
Registrando-se no facebook
Registrando-se no facebook Na página que o leitor visualizar, já temos as informações de AppId e AppSecret criadas, além de outras informações básicas. Para nosso caso Android, é importante descer a página um pouco, até chegar em Selecione o modo como seu aplicativo se integra com o Facebook. Escolha a opção Native Android App. Ao checar esta opção, nos deparamos com cinco campos, dos quais precisamos preencher somente os três primeiros.
Registrando-se no facebook Na página que o leitor visualizar, já temos as informações de AppId e AppSecret criadas, além de outras informações básicas. Para nosso caso Android, é importante descer a página um pouco, até chegar em Selecione o modo como seu aplicativo se integra com o Facebook. Escolha a opção Native Android App. Ao checar esta opção, nos deparamos com cinco campos, dos quais precisamos preencher somente os três primeiros.
Registrando-se no facebook Para termos o Key Hash em mãos precisamos usar três linhas de comando. A primeira chamando o keytool, que está presente na pasta bin do diretório de instalação do JDK. keytool -exportcert -alias androiddebugkey -keystore /Users/felipesilveira/. android/debug.keystore > ~/Desktop/cert O alias sempre será androiddebugkey porque estamos exportando o certificado da chave de debug usado pelo Android SDK. Esta chave está geralmente (no caso do Window) em C:/Users/NOME_USUARIO/.android/debug.keystore. Passamos essa localização no keystore. A senha que será solicitada será android.
Registrando-se no facebook As próximas duas linhas de comandos podem ser usadas em qualquer programa baixado de OpenSSL. openssl sha1 -binary -out cert_out cert openssl base64 -out certbase64 cert_out O arquivo gerado (certbase64) contém a keyhash que deve ser cadastrada no portal do facebook, como na figura a seguir.
Registrando-se no facebook
Usando o SDK Passo 1 Para usar o SDK, o primeiro passo a fazer é associar o Facebook SDK ao nosso projeto. Clique com o botão direito nas propriedades do projeto, em Android temos a parte de referência na parte inferior da janela. Clique em Add e escolha o FacebookSDK.
Usando o SDK Passo 2 O segundo passo é alterar o Manifest da aplicação da seguinte forma:
Usando o SDK <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <uses-permission android:name="android.permission.internet" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.helloworld.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <meta-data android:name="com.facebook.sdk.applicationid" android:value="1448222098736888"/> <activity android:name="com.facebook.loginactivity"></activity> </application> </manifest>
Usando o SDK Passo 3 O terceiro passo é alterar a MainActivity. Os seguintes métodos devem ser adicionados: @Override public void onactivityresult(int requestcode, int resultcode, Intent data) { super.onactivityresult(requestcode, resultcode, data); Session.getActiveSession().onActivityResult(this, requestcode, resultcode, data); }
Usando o SDK public void posttofacebook(){ Session.openActiveSession(this, true, new Session.StatusCallback() { public void call(session session, SessionState state, Exception exception) { if (session.isopened()) { if (haspublishpermission()) { Request.executeStatusUpdateRequestAsync(session, "Teste UNASP", new Request.Callback() { public void oncompleted(response response) { if (response.geterror() == null) { CharSequence text = "Mensagem postada com sucesso!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(MainActivity.this, text, duration); toast.show(); } else { CharSequence text = "Ocorreu um erro."; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(MainActivity.this, text, duration); toast.show(); } } }); } else { requirepermission(); } } } }); }
Usando o SDK private void requirepermission() { Session session = Session.getActiveSession(); Session.NewPermissionsRequest newpermissionsrequest = new Session.NewPermissionsRequest(this, Arrays.asList("publish_actions")); session.requestnewpublishpermissions(newpermissionsrequest); } private boolean haspublishpermission() { Session session = Session.getActiveSession(); return session!= null && session.getpermissions().contains("publish_actions"); }
Dúvidas?
Fontes Criando um Aplicativo Android com Compartilhamento via Facebook http://itweb.com.br/blogs/criando-um-aplicativo-android-com-compartilhamento-via-facebook/ Android Developers http://developer.android.com