Android e Facebook
Felipe Silveirafelipesilveira.com.br
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órico2003: 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órico2009 - Android 1.12009 - Android 1.5 / Cupcake2009 - Android 1.6 / Donut2009 - Android 2.0/2.1 / Eclair2010 - Android 2.2 / Froyo2010 - Android 2.3 / Gingerbread2011 - Android 3.0 / Honeycomb – Tablet-optimized2011 – Android 3.1 – USB host support2011 – Android 4.0 / Ice-Cream Sandwich – merge Gingerbread and Honeycomb222012 -Android 4.1 / Jelly Bean
Open Handset AllianceOpen 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
PlataformaO 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
PlataformaO que torna as aplicações android extremamente poderosas são as APIs providas pela plataforma, que permitem às aplicações acessarem vários recursos.
PlataformaUI Widgets Botões, listas, caixas de textos, etc.
android.widget.* android.view.*
Telephony Ligações telefônicas e envio/recebimento de SMS.
android.telephony.IPhoneandroid.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.*
AmbienteAntes 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.
EmuladorUma 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
EmuladorNa 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
EmuladorDepois de criado o AVD, basta selecioná-lo na lista e clicar em "Start..."
EmuladorNa 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 > ProjectNa tela que aparecer, escolha “Android Project” e clique em “Next”.
Criando o projeto
Criando o projetoApó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 projetoA 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 projetoNa próxima tela, é possível configurar o ícone padrão da aplicação.
Após preencher os campos, clique em Next
Criando o projetoA próxima tela contém as opções da Activity a ser criada.
Após preencher os campos, clique em Next
Criando o projetoPor 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 SDKTudo 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 SDKPara 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 SDKNa próxima tela, selecione o diretório onde foi salvo o SDK e clique em Finish
Registrando-se no facebookAntes 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 facebookNa 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 facebookNa 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 facebookPara 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 facebookAs 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 SDKPasso 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 SDKPasso 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 SDKPasso 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 SDKprivate 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?
FontesCriando um Aplicativo Android com Compartilhamento via Facebookhttp://itweb.com.br/blogs/criando-um-aplicativo-android-com-compartilhamento-via-facebook/
Android Developershttp://developer.android.com