web-dev-qa-db-ja.com

Android-Camera2 APIを使用してUSBカメラにアクセスする

Android Pie(Android 9)コードでフレームにアクセスして取得したいUVCカメラがあります。

これは、Android電話に接続されているカメラを列挙するために使用しているコードです。

    @Override
    public void onResume()
    {
        CameraManager manager =
                (CameraManager)getSystemService(CAMERA_SERVICE);
        try {
            for (String cameraId : manager.getCameraIdList()) {
                CameraCharacteristics chars
                        = manager.getCameraCharacteristics(cameraId);
                // Do something with the characteristics
                int deviceLevel = chars.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
                Log.d(TAG, " **** device ["+cameraId+"] level:"+deviceLevel);
            }
        } catch(CameraAccessException e){
            e.printStackTrace();
        }
    }

Android 9/Pie(Pixel 3)の場合、接続されているUSBカメラが表示されます。ただし、2つのデバイス(フロントカメラとバックカメラと電話)のみが表示されます。

これは私のマニフェストファイル(AndroidManifest.xml)の機能と権限のリストです。

<uses-permission Android:name="Android.permission.CAMERA" />
<uses-feature Android:name="Android.hardware.camera" />
<uses-feature Android:name="Android.hardware.camera.autofocus" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission Android:name="Android.permission.RECORD_AUDIO" />
<uses-feature Android:name="Android.hardware.usb.Host" />

これを実現する方法、つまりAndroid 9以降を使用してUSBカメラにアクセスする方法)をインターネット上で見つけることができません。

コードにUSBカメラを列挙するために何が不足していますか? Android用のサードパーティ製UVCライブラリをいくつか見ましたが、それらを使用せず、ネイティブのAndroidコードを使用します。

5
alex papa

@alex papa、私はSamsung Galaxy S10eを購入し、logitech c920を試しましたが、外部カメラIDを取得しませんでした。使用しているウェブカメラを教えてください。また、packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL)がfalseを返しています。

0
Yu He