Horson Liu 2015-03-09 06:44 采纳率: 100%
浏览 776
已采纳

android是如何打开除前后摄像头外的摄像头的?

android是如何打开除前后摄像头外的摄像头的?
android打开摄像头用的是camera类,最终调用到HAL层的camera部分,get_num_of cameras返回成员变量,而这个成员变量只在构造函数处赋值为常量2.所以有上面的疑问。
已知小米pad是可以打开usb摄像头的。

  • 写回答

2条回答 默认 最新

  • Horson Liu 2025-05-18 10:28
    关注

    在某些老版本或厂商定制的 Camera HAL 实现中,get_number_of_cameras() 是直接返回 2 的,这导致了应用只能看到前后摄像头。
    在 Android 中,应用程序通常通过以下几种方式与摄像头交互:

    1. Camera 类(旧 API)
      已被弃用(自 Android 5.0 起)。
      通过 Camera.open(int cameraId) 打开前后摄像头。
      底层调用到 HAL 层的 camera_module_t 接口。
      getNumberOfCameras() 返回的是硬编码为 2 的值(前 + 后),这是很多早期厂商实现的默认行为。
    2. Camera2 API
      更现代的 API,提供了更细粒度的控制。
      使用 CameraManager 来枚举摄像头设备。
      通过 CameraManager.getCameraIdList() 获取所有摄像头 ID。
      这个列表是由 HAL 提供的,理论上可以包含任意数量的摄像头(包括外接摄像头)。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 5月18日