Android: conheça o
 futuro Inevitável!
Alessandro de Oliveira Faria (A.K.A.CABELO)
           cabelo@opensuse.org
Perfil Técnico:
                         Alessandro de Oliveira Faria (A.K.A. CABELO)
                                                  Diretor de pesquisas
                                                   NETi TECNOLOGIA


●
  Atuando no mercado de software desde 1986 
●
  Embaixador e openSUSE Member; 
●
  Membro da comunidade Viva O Linux; 
●
  Conselheiro Administrativo Linux do projeto Tecnociência;
●
  Projetista/mantenedor mais de 90 RPMs no openSUSE Build Service; 

Mantenedor e Desenvolvedor
●
  droidFrete: Cálculo de frete na plataforma Android.
●
  droidRastreamento: Rastreabilidade de objeto postados.
●
  stampDate: Serviço de menu KDE para estampar data em imagens.
●
  libHAIRCAPTURE: Biblioteca de video captura em Linux.
●
  IPCMSG: Biblioteca de comunicação inter­processos.
●
  easyPCSC: Biblioteca para utilização de cartões smartcard
●
  twitterME: Adicina usuários com QRCode.

Publicações:
●
  Linux Magazine 9 Artigos
●
  Internet 100 artigos técnicos (VOL/Tecnociência/Linha de Código).
Arquitetura
                          O Dalvik é uma máquina virtual performática




                                               Em 2005 a google comprou a Android Inc
                                               (surgiu em 2003)., uma pequena empresa
                                               de     desenvolvimento    de     sistemas
                                               embarcados. Atualmente com exceção da
                                               Apple, da Nokia e da Microsoft,
                                               praticamente todos os outros grandes
                                               fabricantes possuem projetos relacionados
                                               ao Android.
O Android usa um gerenciamento de aplicativos nada convencional, pois os os
aplicativos abertos continuam ativos ao finalizar e são fechados somente quando o sistema
precisa de recursos. Na contrapartida, desenvolvedores nada caprichoso pode degradar o
sistema.
Notícias
           Algumas informações




●Esta plataforma aberta resultou em julho de 2011 no
Android Market a marca de 500.000 aplicativos.

Está disponível também o App Inventor, uma
plataforma de desenvolvimento rápido, baseada na
Open Blocks Java library.

● Lojas http://www.android.com/market,
● http://slideme.org

● LG

● http://andappstore.co

● http://shop4apps.motorola.com/
Notícias
                                                 Algumas informações




 Os aplicativos disponíveis vão desde aplicativos realmente inovadores
 e uteis, até mini-aplicativos especializados que se limitam a mostrar
 alguma informação específica, passando por todos os tipos de jogos e
 inutilidades, que se dividem entre aplicativos gratuitos e pagos.




A a idéia de tornar todos os aplicativos compatíveis com todos os dispositivos
baseados no Android, é uma ideia “QUASE” impossível de implementar na prática, pois
cada aplicativo exige uma versão mínima do sistema para rodar, além também casos de
aplicativos com requerimentos específicos (como para telas WXGA, que não rodam nos
aparelhos com telas HVGA).

Sendo assim leva-se em conta as propriedades do aparelho sobre o qual está rodando,
exibindo apenas os aplicativos compatíveis com ele.
Notícias
                                                Algumas informações




                               Android torna-se IMORTAL

● Abertura do código-fonte 3.0 – 4.0
● Kindle Fire, Baidu, Aliyun OS, Mozilla e Facebook.

● Barômetro, NFC, Reconhecimento Facial.

● Android em controle remotos – Motorola Covair.

● Aplicativos Android executados em plataformas BlackBerry.
Notícias
  Invasão dos quad-core




- HTC Edge/Supreme/Endeavor: O Edge promete
Tegra 3 quad-core de 1,5GHz, 1GB de RAM, tela de
4,7 polegadas com resolução HD, câmera de 8
megapixels.

- LG X3: Além do Tegra 3, tela HD de 4,7″ e câmera
traseira de 8MP – e câmera frontal de 1,3MP – o LG
X3 deve contar com bateria de 2.000mAh. Isso é
menos que o Razr Maxx

- Asus Padfone: Um dock que o torna um tablet!
Dizem que rodará Tegra 3, em vez do processador
Snapdragon presente no modelo atual.

- Fujitsu Arrows:Tegra 3, 1GB de RAM, tela HD de
4,6″, uma câmera impressionante de 13,1
megapixels com ISO 25.600, além de ser à prova
d’água e de poeira .
Notícias
Pantech Vega – Reconhecendo movimentos
Notícias
Algumas informações
Notícias
                                                  Algumas informações




Android 2.2: está disponível inclusive o suporte a multitouch, com gestos
para zoom;

Deslizamento os dedos de uma tecla a outra, sem precisar tirá-los do teclado;

 A linguagem padrão Java, embora sacrifique parte do desempenho, (reduz a eficiência
energética, resultando em um maior consumo de energia),na contrapartida obtemos
ganhos de portabilidade.

Compartilhamento da conexão através
da interface Wi-Fi e também via
 Bluetooth.

Acesso a root permite enxergar além
do limite.
Notícias
Algumas informações
Notícias
Algumas informações
Notícias
Algumas informações
Notícias
                                              Algumas informações




   Vale a pena mencionar sobre o uso do Android em x86,
uma medida estratégica do Google para o caso de a Intel
conseguir eventualmente conseguir embarcar com força no
ramo de tablets e smartphones com as versões de baixo
consumo do Atom http://www.android-x86.org/ Vale a pena
mencionar sobre o produto ThinkPad X1 Hybrid terá Android e
Windows 7.
Processamento de imagem
           Onde utilizar o NDK?
Processamento de imagem
              NDK é preciso?
Instalação e configuração do SDK
                               Download e descompactação do SDK




Pagina principal:
http://developer.android.com/sdk/index.html




$ tar ­zxvf android­sdk_r04­linux_86.tgz 
$ cd android­sdk­linux_86/tools
$ ./android
$ export PATH=${PATH}:<pasta de instalação do 
android>/tools 
Instalação e configuração do SDK
            Configuração da maquina virtual
Instalação e configuração do SDK
                   Instalação do eclipse
Instalação e configuração do SDK
                 Configuração do Eclipse
Instalação e configuração do SDK
                 Configuração do Eclipse
Instalação e configuração do SDK
                 Configuração do Eclipse
Criando o primeiro Ola Mundo
                                      Imprimir ola mundo




package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Ola Mundo, Viva Pitágoras!");
       setContentView(tv);
   }
} 
Criando o primeiro Ola Mundo
              Executando o programa
Instalação e configuração do NDK
                              Download e descompactação do NDK




Pagina principal:
http://developer.android.com/sdk/ndk/index.html



$ unzip android­ndk­r4b­linux­x86.zip



Pronto o NDK esta instalado com sucesso!
Criando o primeiro Ola Mundo com NDK
                           Abrindo projeto
Instalação e configuração do NDK
                       Arquivo layout
Instalação e configuração do NDK
                  Criação protótipo da função nativa e makefile.




$ cd ~/workspace/HelloNDK
$ javah ­o  hellondk.h ­classpath bin com.cabelo.hellondk.HelloNDK
$ mkdir jni
$ cp hellondk.h  jni/
$ cd jni



$ vi Android.mk

LOCAL_PATH := $(call my­dir)
include $(CLEAR_VARS)
LOCAL_DEFAULT_CPP_EXTENSION := cpp
LOCAL_MODULE    := hellondk
LOCAL_SRC_FILES := hellondk.cpp
include $(BUILD_SHARED_LIBRARY)
Instalação e configuração do NDK
                                    Criação da função nativa




$ vi hellondk.cpp

#include <hellondk.h>

JNIEXPORT jstring JNICALL 
Java_net_bruary_hellondk_HelloNDK_sayHello(JNIEnv *env, jobject obj){
     return env­>NewStringUTF("Hello, NDK!");
 }
Instalação e configuração do NDK
                      Criação protótipo da função nativa e makefile.




$ /usr/local/share/android­ndk­r4b/ndk­build 
 Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp
 SharedLibrary  : libhellondk.so
 Install        : libhellondk.so => ~/HelloNDK/libs/armeabi

$ vi Application.mk

APP_ABI := armeabi armeabi­v7a

 $ /usr/local/share/android­ndk­r4b/ndk­build 
 
 Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp
 SharedLibrary  : libhellondk.so
 Install        : libhellondk.so => ~/HelloNDK/libs/armeabi
 Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp
 SharedLibrary  : libhellondk.so
 Install        : libhellondk.so => ~/HelloNDK/libs/armeabi­v7a
Instalação e configuração do NDK
                  Execução do programa
Aplicações de video captura
       Permissão de uso da CAMERA.
Aplicações de video captura
                                  Inicialização e propriedades.




    <SurfaceView android:id="@+id/surface"
        android:layout_width="fill_parent" android:layout_height="10dip"
        android:layout_weight="1">
    </SurfaceView>

import android.hardware.Camera;


Camera camera = Camera.open();
camera.release();

        Camera.Parameters p = mCamera.getParameters();
        p.setPictureFormat(PixelFormat.JPEG); 
        p.setPreviewSize(w, h);
        mCamera.setParameters(p);
Aplicações de video captura
                                         Preview e captura




camera.startPreview();
[ … ]
camera.stopPreview();


private void takePicture() {
camera.takePicture(shutterCallback, rawCallback, jpegCallback); }



ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
[ … ] } };

PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
[ … ] } };
Aplicações de video captura
                                        Gravação em disco




   PictureCallback jpegCallback = new PictureCallback() {
       public void onPictureTaken(byte[] data, Camera camera) {
          FileOutputStream outStream = null;
          nomeImagem = String.format("/sdcard/DCIM/Camera/img­%d.jpg", 
System.currentTimeMillis());
          outStream = new FileOutputStream(nomeImagem);
              outStream.write(data);
              outStream.close();
       }
   };
Processando imagem
http://code.google.com/p/android-playground-erdao/wiki/SnapFace
Processamento em tempo real
                                         Preview e captura




void
Java_com_erdao_SnapFace_PreviewView_grayToRgb( JNIEnv*  env,
                                      jobject  this,
                                      jbyteArray src,
                                      jintArray  dst )
{
   jboolean b;
   jint len;
   jbyte* srcPtr=(*env)­>GetByteArrayElements(env,src,&b);
   jint* dstPtr=(*env)­>GetIntArrayElements(env,dst,&b);
   len = (*env)­>GetArrayLength(env,src);
   gray8toRGB32(srcPtr, dstPtr, len);
   (*env)­>ReleaseByteArrayElements(env, src, srcPtr, 0);
   (*env)­>ReleaseIntArrayElements(env, dst, dstPtr, 0);
}
;
Processamento em tempo real
                                                OpenCV



$ export ANDROID_NDK=/home/cabelo/android­ndk­r5c
$ export ANDROID_NDK_TOOLCHAIN_ROOT=/home/cabelo/android­ndk­
r5c/toolchains

$ cd ../android/
$ sh ./scripts/cmake_android_armeabi.sh ou cmake_android_neon.sh

$ cd build_armeabi
$ make 

$ make install

$ adb push HelloAndroid /data
$ adb shell chmod 777 /data/HelloAndroid
$ adb shell /data/HelloAndroid

$ adb pull /mnt/sdcard/HelloAndroid.png
$ xv HelloAndroid.png

$ adb install tutorial­1­addopencv.apk
Processamento em tempo real
                      OpenCV
Dicas
                    Ice Cream Sandwich, acabou o botão Menu do Android




http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html
Críticas e sugestões
                               cabelo@opensuse.org




                  Obrigado!




 “Colaborar atrai amigos,
 competir atrai inimigos...”




         http://cabelovivaolinux.wordpress.com

Android: Conheça o Futuro Inevitável

  • 1.
    Android: conheça o futuro Inevitável! Alessandro de Oliveira Faria (A.K.A.CABELO) cabelo@opensuse.org
  • 2.
    Perfil Técnico: Alessandro de Oliveira Faria (A.K.A. CABELO) Diretor de pesquisas NETi TECNOLOGIA ●  Atuando no mercado de software desde 1986  ●  Embaixador e openSUSE Member;  ●  Membro da comunidade Viva O Linux;  ●  Conselheiro Administrativo Linux do projeto Tecnociência; ●  Projetista/mantenedor mais de 90 RPMs no openSUSE Build Service;  Mantenedor e Desenvolvedor ●  droidFrete: Cálculo de frete na plataforma Android. ●  droidRastreamento: Rastreabilidade de objeto postados. ●  stampDate: Serviço de menu KDE para estampar data em imagens. ●  libHAIRCAPTURE: Biblioteca de video captura em Linux. ●  IPCMSG: Biblioteca de comunicação inter­processos. ●  easyPCSC: Biblioteca para utilização de cartões smartcard ●  twitterME: Adicina usuários com QRCode. Publicações: ●  Linux Magazine 9 Artigos ●  Internet 100 artigos técnicos (VOL/Tecnociência/Linha de Código).
  • 3.
    Arquitetura O Dalvik é uma máquina virtual performática Em 2005 a google comprou a Android Inc (surgiu em 2003)., uma pequena empresa de desenvolvimento de sistemas embarcados. Atualmente com exceção da Apple, da Nokia e da Microsoft, praticamente todos os outros grandes fabricantes possuem projetos relacionados ao Android. O Android usa um gerenciamento de aplicativos nada convencional, pois os os aplicativos abertos continuam ativos ao finalizar e são fechados somente quando o sistema precisa de recursos. Na contrapartida, desenvolvedores nada caprichoso pode degradar o sistema.
  • 4.
    Notícias Algumas informações ●Esta plataforma aberta resultou em julho de 2011 no Android Market a marca de 500.000 aplicativos. Está disponível também o App Inventor, uma plataforma de desenvolvimento rápido, baseada na Open Blocks Java library. ● Lojas http://www.android.com/market, ● http://slideme.org ● LG ● http://andappstore.co ● http://shop4apps.motorola.com/
  • 5.
    Notícias Algumas informações Os aplicativos disponíveis vão desde aplicativos realmente inovadores e uteis, até mini-aplicativos especializados que se limitam a mostrar alguma informação específica, passando por todos os tipos de jogos e inutilidades, que se dividem entre aplicativos gratuitos e pagos. A a idéia de tornar todos os aplicativos compatíveis com todos os dispositivos baseados no Android, é uma ideia “QUASE” impossível de implementar na prática, pois cada aplicativo exige uma versão mínima do sistema para rodar, além também casos de aplicativos com requerimentos específicos (como para telas WXGA, que não rodam nos aparelhos com telas HVGA). Sendo assim leva-se em conta as propriedades do aparelho sobre o qual está rodando, exibindo apenas os aplicativos compatíveis com ele.
  • 6.
    Notícias Algumas informações Android torna-se IMORTAL ● Abertura do código-fonte 3.0 – 4.0 ● Kindle Fire, Baidu, Aliyun OS, Mozilla e Facebook. ● Barômetro, NFC, Reconhecimento Facial. ● Android em controle remotos – Motorola Covair. ● Aplicativos Android executados em plataformas BlackBerry.
  • 7.
    Notícias Invasãodos quad-core - HTC Edge/Supreme/Endeavor: O Edge promete Tegra 3 quad-core de 1,5GHz, 1GB de RAM, tela de 4,7 polegadas com resolução HD, câmera de 8 megapixels. - LG X3: Além do Tegra 3, tela HD de 4,7″ e câmera traseira de 8MP – e câmera frontal de 1,3MP – o LG X3 deve contar com bateria de 2.000mAh. Isso é menos que o Razr Maxx - Asus Padfone: Um dock que o torna um tablet! Dizem que rodará Tegra 3, em vez do processador Snapdragon presente no modelo atual. - Fujitsu Arrows:Tegra 3, 1GB de RAM, tela HD de 4,6″, uma câmera impressionante de 13,1 megapixels com ISO 25.600, além de ser à prova d’água e de poeira .
  • 8.
    Notícias Pantech Vega –Reconhecendo movimentos
  • 9.
  • 10.
    Notícias Algumas informações Android 2.2: está disponível inclusive o suporte a multitouch, com gestos para zoom; Deslizamento os dedos de uma tecla a outra, sem precisar tirá-los do teclado; A linguagem padrão Java, embora sacrifique parte do desempenho, (reduz a eficiência energética, resultando em um maior consumo de energia),na contrapartida obtemos ganhos de portabilidade. Compartilhamento da conexão através da interface Wi-Fi e também via Bluetooth. Acesso a root permite enxergar além do limite.
  • 11.
  • 12.
  • 13.
  • 14.
    Notícias Algumas informações Vale a pena mencionar sobre o uso do Android em x86, uma medida estratégica do Google para o caso de a Intel conseguir eventualmente conseguir embarcar com força no ramo de tablets e smartphones com as versões de baixo consumo do Atom http://www.android-x86.org/ Vale a pena mencionar sobre o produto ThinkPad X1 Hybrid terá Android e Windows 7.
  • 15.
    Processamento de imagem Onde utilizar o NDK?
  • 16.
    Processamento de imagem NDK é preciso?
  • 17.
    Instalação e configuraçãodo SDK Download e descompactação do SDK Pagina principal: http://developer.android.com/sdk/index.html $ tar ­zxvf android­sdk_r04­linux_86.tgz  $ cd android­sdk­linux_86/tools $ ./android $ export PATH=${PATH}:<pasta de instalação do  android>/tools 
  • 18.
    Instalação e configuraçãodo SDK Configuração da maquina virtual
  • 19.
    Instalação e configuraçãodo SDK Instalação do eclipse
  • 20.
    Instalação e configuraçãodo SDK Configuração do Eclipse
  • 21.
    Instalação e configuraçãodo SDK Configuração do Eclipse
  • 22.
    Instalação e configuraçãodo SDK Configuração do Eclipse
  • 24.
    Criando o primeiroOla Mundo Imprimir ola mundo package com.android.hello; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        TextView tv = new TextView(this);        tv.setText("Ola Mundo, Viva Pitágoras!");        setContentView(tv);    } } 
  • 25.
    Criando o primeiroOla Mundo Executando o programa
  • 26.
    Instalação e configuraçãodo NDK Download e descompactação do NDK Pagina principal: http://developer.android.com/sdk/ndk/index.html $ unzip android­ndk­r4b­linux­x86.zip Pronto o NDK esta instalado com sucesso!
  • 27.
    Criando o primeiroOla Mundo com NDK Abrindo projeto
  • 29.
    Instalação e configuraçãodo NDK Arquivo layout
  • 30.
    Instalação e configuraçãodo NDK Criação protótipo da função nativa e makefile. $ cd ~/workspace/HelloNDK $ javah ­o  hellondk.h ­classpath bin com.cabelo.hellondk.HelloNDK $ mkdir jni $ cp hellondk.h  jni/ $ cd jni $ vi Android.mk LOCAL_PATH := $(call my­dir) include $(CLEAR_VARS) LOCAL_DEFAULT_CPP_EXTENSION := cpp LOCAL_MODULE    := hellondk LOCAL_SRC_FILES := hellondk.cpp include $(BUILD_SHARED_LIBRARY)
  • 31.
    Instalação e configuraçãodo NDK Criação da função nativa $ vi hellondk.cpp #include <hellondk.h> JNIEXPORT jstring JNICALL  Java_net_bruary_hellondk_HelloNDK_sayHello(JNIEnv *env, jobject obj){      return env­>NewStringUTF("Hello, NDK!");  }
  • 32.
    Instalação e configuraçãodo NDK Criação protótipo da função nativa e makefile. $ /usr/local/share/android­ndk­r4b/ndk­build   Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp  SharedLibrary  : libhellondk.so  Install        : libhellondk.so => ~/HelloNDK/libs/armeabi $ vi Application.mk APP_ABI := armeabi armeabi­v7a  $ /usr/local/share/android­ndk­r4b/ndk­build     Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp  SharedLibrary  : libhellondk.so  Install        : libhellondk.so => ~/HelloNDK/libs/armeabi  Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp  SharedLibrary  : libhellondk.so  Install        : libhellondk.so => ~/HelloNDK/libs/armeabi­v7a
  • 33.
    Instalação e configuraçãodo NDK Execução do programa
  • 34.
    Aplicações de videocaptura Permissão de uso da CAMERA.
  • 35.
    Aplicações de videocaptura Inicialização e propriedades.     <SurfaceView android:id="@+id/surface"         android:layout_width="fill_parent" android:layout_height="10dip"         android:layout_weight="1">     </SurfaceView> import android.hardware.Camera; Camera camera = Camera.open(); camera.release();         Camera.Parameters p = mCamera.getParameters();         p.setPictureFormat(PixelFormat.JPEG);          p.setPreviewSize(w, h);         mCamera.setParameters(p);
  • 36.
    Aplicações de videocaptura Preview e captura camera.startPreview(); [ … ] camera.stopPreview(); private void takePicture() { camera.takePicture(shutterCallback, rawCallback, jpegCallback); } ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { [ … ] } }; PictureCallback rawCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { [ … ] } };
  • 37.
    Aplicações de videocaptura Gravação em disco PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { FileOutputStream outStream = null; nomeImagem = String.format("/sdcard/DCIM/Camera/img­%d.jpg",  System.currentTimeMillis()); outStream = new FileOutputStream(nomeImagem); outStream.write(data); outStream.close(); } };
  • 38.
  • 39.
    Processamento em temporeal Preview e captura void Java_com_erdao_SnapFace_PreviewView_grayToRgb( JNIEnv*  env,                                       jobject  this,                                       jbyteArray src,                                       jintArray  dst ) { jboolean b; jint len; jbyte* srcPtr=(*env)­>GetByteArrayElements(env,src,&b); jint* dstPtr=(*env)­>GetIntArrayElements(env,dst,&b); len = (*env)­>GetArrayLength(env,src); gray8toRGB32(srcPtr, dstPtr, len); (*env)­>ReleaseByteArrayElements(env, src, srcPtr, 0); (*env)­>ReleaseIntArrayElements(env, dst, dstPtr, 0); } ;
  • 40.
    Processamento em temporeal OpenCV $ export ANDROID_NDK=/home/cabelo/android­ndk­r5c $ export ANDROID_NDK_TOOLCHAIN_ROOT=/home/cabelo/android­ndk­ r5c/toolchains $ cd ../android/ $ sh ./scripts/cmake_android_armeabi.sh ou cmake_android_neon.sh $ cd build_armeabi $ make  $ make install $ adb push HelloAndroid /data $ adb shell chmod 777 /data/HelloAndroid $ adb shell /data/HelloAndroid $ adb pull /mnt/sdcard/HelloAndroid.png $ xv HelloAndroid.png $ adb install tutorial­1­addopencv.apk
  • 41.
  • 42.
    Dicas Ice Cream Sandwich, acabou o botão Menu do Android http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html
  • 43.
    Críticas e sugestões cabelo@opensuse.org Obrigado! “Colaborar atrai amigos,  competir atrai inimigos...” http://cabelovivaolinux.wordpress.com