30
Android SDK/NDK e vídeo captura de imagens ao vivo Alessandro de Oliveira Faria (A.K.A.CABELO) [email protected]

Palestra sobre Android SDK/NDK e vídeo captura

Embed Size (px)

DESCRIPTION

cabo de concluir o slide da palestra para iniciantes sobre a plataforma Android, contemplando a instalação do SDK, NDK, os respectivos Hello Word e algumas chamadas de vídeo captura. Aguardo críticas e/ou sugestões.

Citation preview

Page 1: Palestra sobre Android SDK/NDK e vídeo captura

Android SDK/NDK e vídeo captura de imagens ao vivo

Alessandro de Oliveira Faria (A.K.A.CABELO)[email protected]

Page 2: Palestra sobre Android SDK/NDK e vídeo captura

Perfil Técnico:Alessandro de Oliveira Faria (A.K.A. CABELO)

Diretor de pesquisasNETi 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 sma

Publicações:● Linux Magazine 8 Artigos● Internet 94 artigos técnicos (VOL/Tecnociência/Linha de Código).

Page 3: Palestra sobre Android SDK/NDK e vídeo captura

ArquiteturaO Dalvik é uma máquina virtual performática

Em 2005 a google comprou a Android Inc., 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.

Page 4: Palestra sobre Android SDK/NDK e vídeo captura

●Esta plataforma aberta resultou em julho de 2010 no Android Market a marca de 100.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, http://andappstore.com e http://shop4apps.motorola.com/

NotíciasAlgumas informações

Page 5: Palestra sobre Android SDK/NDK e vídeo captura

Processamento de imagemOnde utilizar o NDK?

Page 6: Palestra sobre Android SDK/NDK e vídeo captura

Processamento de imagemNDK é preciso?

Page 7: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do SDKDownload 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 

Page 8: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do SDKConfiguração da maquina virtual

Page 9: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do SDKInstalação do eclipse

Page 10: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do SDKConfiguração do Eclipse

Page 11: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do SDKConfiguração do Eclipse

Page 12: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do SDKConfiguração do Eclipse

Page 13: Palestra sobre Android SDK/NDK e vídeo captura
Page 14: Palestra sobre Android SDK/NDK e vídeo captura

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 MundoImprimir ola mundo

Page 15: Palestra sobre Android SDK/NDK e vídeo captura

Criando o primeiro Ola MundoExecutando o programa

Page 16: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do NDKDownload 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!

Page 17: Palestra sobre Android SDK/NDK e vídeo captura

Criando o primeiro Ola Mundo com NDKAbrindo projeto

Page 18: Palestra sobre Android SDK/NDK e vídeo captura
Page 19: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do NDKArquivo layout

Page 20: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do NDKCriaçã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 := cppLOCAL_MODULE    := hellondkLOCAL_SRC_FILES := hellondk.cppinclude $(BUILD_SHARED_LIBRARY)

Page 21: Palestra sobre Android SDK/NDK e vídeo captura

$ 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 NDKCriação da função nativa

Page 22: Palestra sobre Android SDK/NDK e vídeo captura

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

 $ /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

$ vi Application.mk

APP_ABI := armeabi armeabi­v7a

Instalação e configuração do NDKCriação protótipo da função nativa e makefile.

Page 23: Palestra sobre Android SDK/NDK e vídeo captura

Instalação e configuração do NDKExecução do programa

Page 24: Palestra sobre Android SDK/NDK e vídeo captura

Aplicações de video capturaPermissão de uso da CAMERA.

Page 25: Palestra sobre Android SDK/NDK e vídeo captura

    <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 capturaInicialização e propriedades.

Page 26: Palestra sobre Android SDK/NDK e vídeo 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 capturaPreview e captura

Page 27: Palestra sobre Android SDK/NDK e vídeo captura

Aplicações de video capturaGravaçã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();

}};

Page 28: Palestra sobre Android SDK/NDK e vídeo captura

Processando imagemhttp://code.google.com/p/android-playground-erdao/wiki/SnapFace

Page 29: Palestra sobre Android SDK/NDK e vídeo captura

voidJava_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 realPreview e captura

Page 30: Palestra sobre Android SDK/NDK e vídeo captura

Críticas e sugestõ[email protected]

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

Obrigado!

http://cabelovivaolinux.wordpress.com