如题,现在在做一个UsbCamera,但是在录像时如果移除摄像头,下次再次进入CameraService就会提示获取不到Camera,所以请问,在摄像头被移除的时候,我应该做些什么才能够释放Camera,并且让下一次进入Camera能够正常

解决方案 »

  1.   

    android 的摄像头 比较难装 你行 用USB 方式 用第二个(或第三个)摄像头?
      

  2.   

    简单说一下.
    1.framework层,会判断当前cameraID是否可以使用,如果不能使用,直接标记为false,下次再打开这个,就直接返回了。  你要修改这里,每次尝试重新打开。
    2. v4l2接口层. 有点要注意,热插拔后,videox的节点可能会加变,以前的是video3,可能会变成video4.要重新枚举可以打开的摄像头,对应到framework层的cameraID.嗯,总之android系统本身是不支持usb camera热插拔的,应用层是没办法做到的。如果拿不到对应的系统代码,就不要想了。
      

  3.   

    其它的方法,在uboot那层也可以修改。。但这个不通用。
      

  4.   

    恩,我也基本上是这样做的,但是现在有个奇怪的问题是,两次的节点同样是video0,热插拔后再次打开就不可以了,请问这个是什么问题?
    下面是我hardware打开设备的代码,问题就出在这里
    snprintf(device, sizeof(device), VIDEO_DEVICE_FORMAT, index++);
    if (access(device, F_OK) != 0) {
    HAL_numOfCameras = 0;
    break;
    } if (access(device, R_OK|W_OK) == 0) {
    HAL_numOfCameras = 1;
    break;
    }
    device同样是video0第一次打开是成功的,第二次打开就失败了,请问是驱动下面还要释放什么资源吗?