Android Camera分析(11)

2020-12-22 09:00

完整讲解了android中camera的工作机制,代码分析。对了解整个android工作流程会有很大的帮助。

{"native_setup","(Ljava/lang/Object;)V",(void*)android_hardware_Camera_native_setup},{"native_release","()V",(void*)android_hardware_Camera_release},{"setPreviewDisplay","(Landroid/view/Surface;)V",(void*)android_hardware_Camera_setPreviewDisplay},

{"startPreview","()V",(void*)android_hardware_Camera_startPreview},{"stopPreview","()V",(void*)android_hardware_Camera_stopPreview},

{"setHasPreviewCallback","(Z)V",(void*)android_hardware_Camera_setHasPreviewCallback},{"native_autoFocus","()V",(void*)android_hardware_Camera_autoFocus},{"native_takePicture","()V",(void*)android_hardware_Camera_takePicture},

{"native_setParameters","(Ljava/lang/String;)V",(void*)android_hardware_Camera_setParameters},

{"native_getParameters","()Ljava/lang/String;",(void*)android_hardware_Camera_getParameters}

};

JNINativeMethod的第一个成员是一个字符串,表示了JAVA本地调用方法的名称,这个名称是在JAVA

程序中调用的名称;第二个成员也是一个字符串,表示JAVA本地调用方法的参数和返回值;第三个成员是JAVA本地调用方法对应的C语言函数。

register_android_hardware_Camera函数将gMethods注册为的类"android/media/Camera",其主要的

实现如下所示。

intregister_android_hardware_Camera(JNIEnv*env){

//Registernativefunctions

returnAndroidRuntime::registerNativeMethods(env,"android/hardware/Camera",

camMet

hods,NELEM(camMethods));}

"android/hardware/Camera"对应JAVA的类android.hardware.Camera。

3.3Camera本地库libui.so

frameworks/base/libs/ui/中的Camera.cpp文件用于实现Camera.h提供的接口,其中一个重要的片段

如下所示:

constsp<ICameraService>&Camera::getCameraService(){

Mutex::Autolock_l(mLock);if(mCameraService.get()==0){

sp<IServiceManager>sm=defaultServiceManager();sp<IBinder>binder;do{

binder=sm->getService(String16("media.camera"));if(binder!=0)

break;

LOGW("CameraServicenotpublished,waiting...");usleep(500000);//0.5s

}while(true);


Android Camera分析(11).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:3G网络优化难点及解决方案译文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: