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 -in 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

Android e Facebook - Integrando sua aplicação às redes sociais

  • 1.
  • 2.
    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
  • 3.
    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
  • 4.
    Histórico 2009 - Android1.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
  • 5.
    Open Handset Alliance OpenHandset Alliance: Consórcio formado por mais de 50 empresas
  • 6.
    Principais características ■ Ambiente multitask ■ Suportenativo a GSM/3G, WI-FI, Bluetooth ■ Biblioteca Multimídia ■ (Formatos MPEG4, MP3, JPG, ...) ■ Suporte a Acelerômetro/GPS/Touchscreen...
  • 7.
  • 8.
    Plataforma O foco desteminicurso 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
  • 9.
    Plataforma O que tornaas aplicações android extremamente poderosas são as APIs providas pela plataforma, que permitem às aplicações acessarem vários recursos.
  • 10.
    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.*
  • 11.
    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.
  • 12.
    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.
  • 13.
  • 14.
    Emulador Na tela paraa 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.
  • 15.
  • 16.
    Emulador Depois de criadoo AVD, basta selecioná-lo na lista e clicar em "Start..."
  • 17.
    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)
  • 18.
  • 19.
    Criando o projeto Passo1 – Criando o projeto no Eclipse Abra o Eclipse, vá até File > New > Project Na tela que aparecer, escolha “Android Project” e clique em “Next”.
  • 20.
  • 21.
    Criando o projeto Apósisso, 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
  • 22.
    Criando o projeto Apró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
  • 23.
    Criando o projeto Napróxima tela, é possível configurar o ícone padrão da aplicação. Após preencher os campos, clique em Next
  • 24.
    Criando o projeto Apróxima tela contém as opções da Activity a ser criada. Após preencher os campos, clique em Next
  • 25.
    Criando o projeto Porfim, 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
  • 27.
    Download do SDK Tudoo 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.
  • 28.
    Importando o SDK Parapoder 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.
  • 29.
    Importando o SDK Napróxima tela, selecione o diretório onde foi salvo o SDK e clique em Finish
  • 30.
    Registrando-se no facebook Antesde 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”.
  • 31.
  • 32.
    Registrando-se no facebook Napá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.
  • 33.
    Registrando-se no facebook Napá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.
  • 34.
    Registrando-se no facebook Paratermos 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.
  • 35.
    Registrando-se no facebook Aspró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 -in cert_out O arquivo gerado (certBase64) contém a keyhash que deve ser cadastrada no portal do facebook, como na figura a seguir.
  • 36.
  • 37.
    Usando o SDK Passo1 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.
  • 38.
    Usando o SDK Passo2 O segundo passo é alterar o Manifest da aplicação da seguinte forma:
  • 39.
    Usando o SDK <?xmlversion="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>
  • 40.
    Usando o SDK Passo3 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); }
  • 41.
    Usando o SDK publicvoid 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(); } } } }); }
  • 42.
    Usando o SDK privatevoid 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"); }
  • 43.
  • 44.
    Fontes Criando um AplicativoAndroid com Compartilhamento via Facebook http://itweb.com.br/blogs/criando-um-aplicativo-android-com-compartilhamento-via-facebook/ Android Developers http://developer.android.com