open函数分析


Camera camera = Camera.open(int cameraId);
调用下面文件提供的接口
\\192.168.1.122\ygm\A31S-source\android\frameworks\base\core\java\android\hardware\Camera.java
该文件中会调用new Camera(i)
该构造函数中调用 native_setup(new WeakReference<Camera>(this), cameraId, packageName);






native字段可以确定native_setup调用的就是jni接口
\\192.168.1.122\ygm\A31S-source\android\frameworks\base\core\jni\android_hardware_Camera.cpp
static JNINativeMethod camMethods[] = {



{ "native_setup",
"(Ljava/lang/Object;ILjava/lang/String;)V",

(void*)android_hardware_Camera_native_setup }
}
即调用该文件中的android_hardware_Camera_native_setup函数,该函数中调用Camera::connect即是client端的函数






可以参考:
\\192.168.1.122\ygm\A31S-source\android\frameworks\av
调用\camera下面的Camera.cpp中的-->CameraBase.cpp中的connect函数,该函数则调用const sp<ICameraService>& cs = getCameraService();
最终调用服务端的connect,来自文件\\192.168.1.122\ygm\A31S-source\android\frameworks\av\services\camera\libcameraservice\
CameraService.cpp






connect函数中则建立client对象并调用client->initialize(mModule);来自文件
\\192.168.1.122\ygm\A31S-source\android\frameworks\av\services\camera\libcameraservice\device1\
CameraHardwareInterface.h






接着就找找open函数,即来自文件
\\192.168.1.122\ygm\A31S-source\android\hardware\samsung_slsi\exynos5\libcamera
static hw_module_methods_t camera_module_methods = {
open : HAL_camera_device_open
};
该函数中目的得到static camera_device_t *g_cam_device;再
g_cam_device->priv = new ExynosCameraHWInterface(cameraId, g_cam_device);
构造函数中
m_secCamera = ExynosCamera::createInstance();
m_secCamera->create(cameraId)
m_previewThread = new PreviewThread(this);
m_videoThread = new VideoThread(this);
m_autoFocusThread = new AutoFocusThread(this);
m_pictureThread = new PictureThread(this);



更多相关文章

  1. C语言函数的递归(上)
  2. Android内存泄露利器(hprof篇)
  3. Android(安卓)开发技术汇总
  4. 安装android studio
  5. Android(安卓)7.1 预置GMS包
  6. 遥控器新增键值
  7. Android获取串口路径
  8. Android下使用c++11的测试
  9. Android(安卓)onBackPressed()函数重载失效问题

随机推荐

  1. Android自定义Lint实践
  2. 为什么说invalidate()不能直接在线程中调
  3. Android中ExpandableListView中嵌套ListV
  4. Android(安卓)AlarmManager实现自动开关
  5. 修改Android“长按”的反应时间
  6. 条件数据库Android:sqllite的简单使用
  7. activity之栈管理
  8. Android之插件化框架RePlugin——献给And
  9. 一次搞定Process和Task
  10. Android8.0 存储系统