从我的Android设备中删除usb摄像头不会刷新列表

从我的Android设备中删除usb摄像头不会刷新列表,android,video,camera,usb,android-camera,Android,Video,Camera,Usb,Android Camera,我有一个每5秒调用一次的函数: @NonNull private ArrayList<LmiVideoCapturerDeviceInfo> getNumberOfCameras() { ArrayList<LmiVideoCapturerDeviceInfo> newDevices= new ArrayList<>(); int numberOfCameras = Camera.getNumberOfCameras(); L

我有一个每5秒调用一次的函数:

     @NonNull
private ArrayList<LmiVideoCapturerDeviceInfo> getNumberOfCameras() {
    ArrayList<LmiVideoCapturerDeviceInfo> newDevices= new ArrayList<>();
    int numberOfCameras = Camera.getNumberOfCameras();
    Log.i("Refresh devices"," lookForDevicesChangesRunnable refresh devices size is!!!!!!!!!!!!!!!!!!!!!!!!!!!: " + numberOfCameras);
    for (int i = 0; i < numberOfCameras; i++) {
        Camera.CameraInfo info = new Camera.CameraInfo();
        Camera.getCameraInfo(i, info);
        Log.i("Refresh devices", "camera ids are: " + info.toString());
        String facing = "BACK";
        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            facing = "FRONT";
        }
        newDevices.add(new LmiVideoCapturerDeviceInfo("Camera " + i, Integer.toString(i), "Camera" + i, facing));
    }
    return newDevices;
}
@NonNull
私有阵列列表getNumberOfCameras(){
ArrayList newDevices=新的ArrayList();
int numberOfCameras=Camera.getNumberOfCameras();
Log.i(“刷新设备”、“查找设备更改无法命名的刷新设备大小是!!!!!!!!!!!!!!!!!!!!!!!:“+摄像头数量);
对于(int i=0;i
现在,我开始时有0个摄像头,我在usb插头中添加了一个摄像头,它将更新,这将返回1,它将刷新我的列表

但是,如果我连接了一个摄像头,并将其移除,该函数仍将在很长一段时间内返回1,即使摄像头不再存在,如果我尝试打开它,在应用程序中不会发生任何事情,只需获取最后一帧(从我移除它时开始)。为什么我的名单不能尽快更新?
PS:我使用的电视机顶盒是Android 4.4.2,因此我不能使用Camera2 API,因此我使用CameraAPI的原因是Android中没有内置对网络摄像头的支持,因此您设备的制造商必须添加它


不幸的是,由于没有内置支持,很容易出现无法正常工作的场景。你很可能会碰到其中一个。您可以尝试向制造商报告问题,但很难说这是否能很快解决问题。

我理解,但我不理解的是,getNumberOfCameras为什么没有改变。我的意思是,我甚至试过照相机。打开,它会出现异常,因为找不到照相机。所以在我的逻辑中,这不会将相机设置为不存在,并刷新“getNumberOfCameras”int吗?在默认的AOSP代码中,相机的数量在引导时被缓存,并且永远不会更改。因此,听起来OEM没有添加任何代码来处理断开情况以刷新号码,即使他们处理连接情况(可能只是重新启动摄像头服务)。