PH-1にAndroid10が降ってきました。いうことでAndroid10とUVC機器について調べてみました。先に結論な先に結論を書いておきます。現時点では、Android10ではtargetSdkVersion=28以降に設定したアプリではUVC機器へはアクセスできません。パーミッションの取得がそもそもできません。Android10でもtargetSdkVersion=28未満なアプリでは従来どおりアクセス可能です。PlusではtargetSdkVersion=28でもUVC機器へ正常にアクセスできるのでこのふるまい/不具合はAndroid10固有のものです。Playで新規・バージョンアップ問わずtargetSdkVersion=28が必須になります。PH-1/Pixel3で確認してみました。DevelopersでAndroid9/10での変更点とUSB関係のドキュメント読む限りは該当する事項は存在していません(。2APIでUVC機器使えるようになるらしいって話があったよね?UVC機器にパーマネントパーミッションに付与できるようにAndroidManifest.xmlを設定してパーミッション付与をした状態でAPI21以降のCameraManager.getCameraIdListを呼んでも検出できるのは端末内蔵カメラだけでUVC機器は検出できない...つまりCamera2API経由でのUVC機器アクセスは不可能ということです。AndroidManifest.xmlの設定はこういうやつね。2API経由でのUVC機器アクセスを有効にするためのカーネル側の変更点についての記述はあるんだけど、Pixel3とPH-1では有効になっていないみたいです。Camerasシステム側でパーミッション付与したときのIntentを確認した先程と同じく、UVC機器にパーマネントパーミッションに付与できるようにAndroidManifest.xmlを設定したアプリをインストールした端末へ、USB機器を接続すると、アプリへパーミッション付与するかどうかまたはどのアプリでそのSUB機器を使うかの選択するためのシステムダイアログが表示されます。Android9までの端末またはAndroid10でtargetSdkVersion=28未満の場合はこのシステムダイアログでアプリを選択すると、対象アプリにEXTRA_DEVICEとEXTRA_PERMISSION_GRANTEDがetraに入ったIntentが飛んでアプリ起動します。Android10の場合もtargetSdkVersionに関わらずIntentが飛んでくるのですが、Android10&targetSdkVersion=28以上ではEXTRA_PERMISSION_GRANTEDのエキストラが常時未設定/falseになりパーミッションが付与されていません。EXTRA_DEVICEエキストラにはUsbDeviceオブジェクトが設定されていますが、このUsbDeviceを使ってUsbManager#hasPermissionを呼んでも結果はfalse(パーミッションが無い)でした。UVC以外のUSB機器はどうやねん当然の疑問としてUVC以外のUSB機器はどないやねんという疑問が湧いてきますよね。いうことでこちらも確認してみました。Stickを試してみました。マニアックなUSB機器つなごうとするんやな💦Android9までもしくはtargetSdkVersion=28未満であればAndroid10でも正常に動作しました。targetSdkVersion=28にしてもAndroid10で正常に動作しました。targetSdkVersion=28以降のみがダメダメということです。UsbManagerの振る舞いUsbManagerは次のようにして取得できます。(UsbManager)context.getSystemService(USB_SERVICE);UsbManagerにはUSBアクセスするための重要なクラスで、主にUSB機器の列挙、パーミッション確認、パーミッション要求、USB機器のオープンの4つの機能があります。T)とりあえず現時点(2019/09/04)でわかっているのはここまでです。何か進捗があれば追記します。reserved.%d人のブロガーが「いいね」をつけました。このサイトでは利便性の向上の為に、機能的なクッキーと外部スクリプトを使用しています。同意しますプライバシー設定広告プライバシー設定このサイトでは利便性の向上の為に、機能的なクッキーと外部スクリプトを使用しています。どのクッキーとスクリプトが使用され、どのように訪問に影響を与えるかを左に示します。設定はいつでも変更できます。あなたの選択はサイトへの訪問に悪い影響を与えません。これらの設定は、現在使用しているブラウザとデバイスにのみ適用されます。広告このサイトでは、サイトや広告を改善するためにCookieを利用することがあります。本サイトを利用することでCookieの仕様に同意するものとします。