palestra sobre android sdk/ndk e vídeo captura
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.TRANSCRIPT
Android SDK/NDK e vídeo captura de imagens ao vivo
Alessandro de Oliveira Faria (A.K.A.CABELO)[email protected]
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 interprocessos.● 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).
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.
●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
Processamento de imagemOnde utilizar o NDK?
Processamento de imagemNDK é preciso?
Instalação e configuração do SDKDownload e descompactação do SDK
Pagina principal:http://developer.android.com/sdk/index.html
$ tar zxvf androidsdk_r04linux_86.tgz $ cd androidsdklinux_86/tools$ ./android$ export PATH=${PATH}:<pasta de instalação do android>/tools
Instalação e configuração do SDKConfiguração da maquina virtual
Instalação e configuração do SDKInstalação do eclipse
Instalação e configuração do SDKConfiguração do Eclipse
Instalação e configuração do SDKConfiguração do Eclipse
Instalação e configuração do SDKConfiguração do Eclipse
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
Criando o primeiro Ola MundoExecutando o programa
Instalação e configuração do NDKDownload e descompactação do NDK
Pagina principal:http://developer.android.com/sdk/ndk/index.html
$ unzip androidndkr4blinuxx86.zip
Pronto o NDK esta instalado com sucesso!
Criando o primeiro Ola Mundo com NDKAbrindo projeto
Instalação e configuração do NDKArquivo layout
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 mydir)include $(CLEAR_VARS)LOCAL_DEFAULT_CPP_EXTENSION := cppLOCAL_MODULE := hellondkLOCAL_SRC_FILES := hellondk.cppinclude $(BUILD_SHARED_LIBRARY)
$ 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
$ /usr/local/share/androidndkr4b/ndkbuild Compile++ thumb: hellondk <= ~/HelloNDK/jni/hellondk.cpp SharedLibrary : libhellondk.so Install : libhellondk.so => ~/HelloNDK/libs/armeabi
$ /usr/local/share/androidndkr4b/ndkbuild 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
$ vi Application.mk
APP_ABI := armeabi armeabiv7a
Instalação e configuração do NDKCriação protótipo da função nativa e makefile.
Instalação e configuração do NDKExecução do programa
Aplicações de video capturaPermissão de uso da CAMERA.
<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.
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
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();
}};
Processando imagemhttp://code.google.com/p/android-playground-erdao/wiki/SnapFace
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
Críticas e sugestõ[email protected]
“Colaborar atrai amigos, competir atrai inimigos...”
Obrigado!
http://cabelovivaolinux.wordpress.com