エンドポイントに代替設定を使用するインターフェイスを備えた USB デバイスがあります。「android.hardware.usb」パッケージのクラスを使用してこれらの設定を選択するにはどうすればよいですか?
ネイティブ コードでは、基本的に IOCTL である libUsb の「libusb_set_interface_alt_setting」関数を使用しています。ただし、そのために NDK を使用したくありません。
ありがとう
この質問を閉じるだけです。
デバイス用のカーネル ドライバーを作成し、それを char デバイスとして使用することで、この問題を解決しました。
set_interface_alt_settings
余談ですが、ライブラリに実装し、libusbhost
JNI を介して「android.hardware.usb」パッケージで使用するとよいでしょう。
インターフェイスの代替設定を有効にすることは、 USB 仕様(usb_2.0.pdf)の第 9.4 章による標準デバイス要求にすぎません。
したがって、この:
UsbDeviceConnection.controlTransfer(UsbConstants.USB_DIR_OUT | 0x01, SET_INTERFACE, _alternate_setting_, _interface_nr_, null, 0, _timeout_);
動作するはずです。SET_INTERFACE (= 11 = 0x0B) は USB 仕様の定数です。Java constとしてAndroid APIで見つけることができませんでした。