Você está na página 1de 49

Android: conhea o futuro Inevitvel!

Alessandro de Oliveira Faria (A.K.A.CABELO) cabelo@opensuse.org

Perfil Tcnico:
Alessandro de Oliveira Faria (A.K.A. CABELO) Diretor de pesquisas NETi TECNOLOGIA Atuandonomercadodesoftwaredesde1986 EmbaixadoreopenSUSEMember; MembrodacomunidadeVivaOLinux; ConselheiroAdministrativoLinuxdoprojetoTecnocincia; Desnvolvedor/Projetista/mantenedormaisde120RPMsnoopenSUSEBuildService;

MantenedoreDesenvolvedor droidFrete:ClculodefretenaplataformaAndroid. droidRastreamento:Rastreabilidadedeobjetopostados. stampDate:ServiodemenuKDEparaestampardataemimagens. libHAIRCAPTURE:BibliotecadevideocapturaemLinux. IPCMSG:Bibliotecadecomunicaointerprocessos. easyPCSC:Bibliotecaparautilizaodecartessmartcard twitterME:AdicinausurioscomQRCode. Eoutros... Publicaes: LinuxMagazine102Artigos Internet100artigostcnicos(VOL/Tecnocincia/LinhadeCdigo).

Arquitetura
O Dalvik uma mquina virtual performtica

Em 2005 a google comprou a Android Inc (surgiu em 2003)., uma pequena empresa de desenvolvimento de sistemas embarcados. Atualmente com exceo 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 so fechados somente quando o sistema precisa de recursos. Na contrapartida, desenvolvedores nada caprichoso pode degradar o sistema.

Notcias
Algumas informaes

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

Est disponvel tambm o App Inventor, uma plataforma de desenvolvimento rpido, baseada na Open Blocks Java library. Lojas http://www.android.com/market, http://slideme.org LG http://andappstore.co http://shop4apps.motorola.com/

Notcias
Algumas informaes

Os aplicativos disponveis vo desde aplicativos realmente inovadores e uteis, at mini-aplicativos especializados que se limitam a mostrar alguma informao especfica, passando por todos os tipos de jogos e inutilidades, que se dividem entre aplicativos gratuitos e pagos.

A a idia de tornar todos os aplicativos compatveis com todos os dispositivos baseados no Android, uma ideia QUASE impossvel de implementar na prtica, pois cada aplicativo exige uma verso mnima do sistema para rodar, alm tambm casos de aplicativos com requerimentos especficos (como para telas WXGA, que no 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 compatveis com ele.

Notcias
Algumas informaes

Android torna-se IMORTAL Abertura do cdigo-fonte 3.0 4.0 Kindle Fire, Baidu, Aliyun OS, Mozilla e Facebook. Barmetro, NFC, Reconhecimento Facial. Android em controle remotos Motorola Covair. Aplicativos Android executados em plataformas BlackBerry.

Notcias
Invaso 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 resoluo HD, cmera de 8 megapixels. - LG X3: Alm do Tegra 3, tela HD de 4,7 e cmera traseira de 8MP e cmera 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 cmera impressionante de 13,1 megapixels com ISO 25.600, alm de ser prova dgua e de poeira .

Notcias
Pantech Vega Reconhecendo movimentos

Notcias
Algumas informaes

Notcias
Algumas informaes http://www.ubuntu.com/devices/android

Notcias
Algumas informaes

Notcias
Algumas informaes

US$ 5 milhes de dolares em doao; Plataforma aberta e com SDK; Baseado em ANDROID ( caso contrrio no ocuparia espao aqui ); Android 4, Tegra 3 Quad, 1G de RAM; Preo US$ 99,00; J garantiu o primeiro game exclusivo (desenvolvedora Robotoki ).

Notcias
Algumas informaes

Android 2.2: est disponvel 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 padro Java, embora sacrifique parte do desempenho, (reduz a eficincia energtica, resultando em um maior consumo de energia),na contrapartida obtemos ganhos de portabilidade. Compartilhamento da conexo atravs da interface Wi-Fi e tambm via Bluetooth. Acesso a root permite enxergar alm do limite.

Notcias
Algumas informaes

Notcias
Algumas informaes

Notcias
Algumas informaes

Notcias
Algumas informaes

Notcias
Algumas informaes

Vale a pena mencionar sobre o uso do Android em x86, uma medida estratgica do Google para o caso de a Intel conseguir eventualmente conseguir embarcar com fora no ramo de tablets e smartphones com as verses 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.

Notcias
Algumas informaes

A partir da verso 17 do Android SDK, graas assistncia da Intel, o emulador do SDK passou a suportar imagens de sistemas x86. A partir da verso 20 esta disponvel o recurso de a acelerao de hardware (IntelHAXM) sob o Android 4.X

Processamento de imagem
Onde utilizar o NDK?

Processamento de imagem
NDK preciso?

Instalao e configurao do SDK


Download e descompactao do SDK

Paginaprincipal: http://developer.android.com/sdk/index.html

$tarzxvfandroidsdk_r04linux_86.tgz $cdandroidsdklinux_86/tools $./android $exportPATH=${PATH}:<pastadeinstalaodo android>/tools

Instalao e configurao do SDK


Configurao da maquina virtual

Instalao e configurao do SDK


Instalao do eclipse

Instalao e configurao do SDK


Configurao do Eclipse

Instalao e configurao do SDK


Configurao do Eclipse

Instalao e configurao do SDK


Configurao do Eclipse

Criando o primeiro Ola Mundo


Imprimir ola mundo

packagecom.android.hello; importandroid.app.Activity; importandroid.os.Bundle; importandroid.widget.TextView; publicclassHelloAndroidextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); TextViewtv=newTextView(this); tv.setText("OlaMundo,VivaPitgoras!"); setContentView(tv); } }

Criando o primeiro Ola Mundo


Executando o programa

Instalao e configurao do NDK


Download e descompactao do NDK

Paginaprincipal: http://developer.android.com/sdk/ndk/index.html

$unzipandroidndkr4blinuxx86.zip

Pronto o NDK esta instalado com sucesso!

Criando o primeiro Ola Mundo com NDK


Abrindo projeto

Instalao e configurao do NDK


Arquivo layout

Instalao e configurao do NDK


Criao prottipo da funo nativa e makefile.

$cd~/workspace/HelloNDK $javahohellondk.hclasspathbincom.cabelo.hellondk.HelloNDK $mkdirjni $cphellondk.hjni/ $cdjni

$viAndroid.mk LOCAL_PATH:=$(callmydir) include$(CLEAR_VARS) LOCAL_DEFAULT_CPP_EXTENSION:=cpp LOCAL_MODULE:=hellondk LOCAL_SRC_FILES:=hellondk.cpp include$(BUILD_SHARED_LIBRARY)

Instalao e configurao do NDK


Criao da funo nativa

$vihellondk.cpp #include<hellondk.h> JNIEXPORTjstringJNICALL Java_net_bruary_hellondk_HelloNDK_sayHello(JNIEnv*env,jobjectobj){ returnenv>NewStringUTF("Hello,NDK!"); }

Instalao e configurao do NDK


Criao prottipo da funo nativa e makefile (Interface Binaria de aplicao)

$/usr/local/share/androidndkr4b/ndkbuild Compile++thumb:hellondk<=~/HelloNDK/jni/hellondk.cpp SharedLibrary:libhellondk.so Install:libhellondk.so=>~/HelloNDK/libs/armeabi $viApplication.mk APP_ABI:=armeabiarmeabiv7ax86 $/usr/local/share/androidndkr4b/ndkbuildAPP_ABI=all 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/armeabiv7a

Instalao e configurao do NDK


Execuo do programa

Aplicaes de video captura


Permisso de uso da CAMERA.

Aplicaes de video captura


Inicializao e propriedades.

<SurfaceViewandroid:id="@+id/surface" android:layout_width="fill_parent"android:layout_height="10dip" android:layout_weight="1"> </SurfaceView> importandroid.hardware.Camera; Cameracamera=Camera.open(); camera.release(); Camera.Parametersp=mCamera.getParameters(); p.setPictureFormat(PixelFormat.JPEG); p.setPreviewSize(w,h); mCamera.setParameters(p);

Aplicaes de video captura


Preview e captura

camera.startPreview(); [] camera.stopPreview(); privatevoidtakePicture(){ camera.takePicture(shutterCallback,rawCallback,jpegCallback);}

ShutterCallbackshutterCallback=newShutterCallback(){ publicvoidonShutter(){ []}}; PictureCallbackrawCallback=newPictureCallback(){ publicvoidonPictureTaken(byte[]_data,Camera_camera){ []}};

Aplicaes de video captura


Gravao em disco

PictureCallbackjpegCallback=newPictureCallback(){ publicvoidonPictureTaken(byte[]data,Cameracamera){ FileOutputStreamoutStream=null; nomeImagem=String.format("/sdcard/DCIM/Camera/img%d.jpg", System.currentTimeMillis()); outStream=newFileOutputStream(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, jobjectthis, jbyteArraysrc, jintArraydst) { jbooleanb; jintlen; 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

$exportANDROID_NDK=/home/cabelo/androidndkr5c $exportANDROID_NDK_TOOLCHAIN_ROOT=/home/cabelo/androidndk r5c/toolchains $cd../android/ $sh./scripts/cmake_android_armeabi.shoucmake_android_neon.sh $cdbuild_armeabi $make $makeinstall $adbpushHelloAndroid/data $adbshellchmod777/data/HelloAndroid $adbshell/data/HelloAndroid $adbpull/mnt/sdcard/HelloAndroid.png $xvHelloAndroid.png $adbinstalltutorial1addopencv.apk

Processamento em tempo real


OpenCV

Dicas
Ice Cream Sandwich, acabou o boto Menu do Android

http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html

Requisitos:BusyBox,androidVNCeConnectBot $wgethttp://ohm.nerd65536.com/androidlinux/linux.ubuntunatty.tar.bz2 DesmonteoSDCARDedescompacteoarquivoacimanocartoemseu desktop. $tarjxvflinux.ubuntunatty.tar.bz2 $su #cd/sdcard/linux #shinstall.sh $su #linux $su #linuxssh $su #linuxvnc (trocarICEWM) #aptgetautoremoveicewmlxde+ Root:Password:cheesecake User:Password:dessert

Crticas e sugestes
cabelo@opensuse.org

Obrigado!

Colaboraratraiamigos, competiratraiinimigos...

http://cabelovivaolinux.wordpress.com