1

現在、USB OTG を介して Android フォン (OS バージョン 5.0.1) で USB デバイス (たまたま USB MIDI コントローラー、つまり音楽キーボード) を使用しているときに、特定のシナリオで問題が発生しています。私は Android プログラミングの能力があるので、その解決策は消費者向けの解決策かもしれませんし、プログラマー向けの解決策かもしれません (つまり、誰かが私を正しい方向に向けてくれれば、問題を解決するアプリを書くことができますが、それは必要ありません)。

デバイス(KORG MicroKEY 61)を接続でき、「MIDI Commander」や「MicroKeyPlayer」などの多数のアプリで認識されます。MicroKeyPlayer を使用して、キーボードを弾いて音を出すことができます。そこは問題ありません。

ただし、これは、問題のアプリが、デバイスを接続したときに表示されるメニュー (「USB デバイス用のアプリを選択してください」というメニュー) から選択されている場合にのみ機能します。このメニューからアプリを選択すると、選択したアプリには、プラグを抜くまで USB デバイスを使用するための無制限のアクセス許可が付与されているように見えます。ただし、プラグを抜くと許可が失われます。

問題は、デバイスを取り外して再度接続し、[Choose an app...] メニューから新しいアプリを選択しない限り、他のアプリに許可を与える方法がないように見えることです。その後、同じボートに戻ります。デバイスが取り外されるまで、デバイスにアクセスできるアプリは 1 つだけです。

デバイスのプラグを抜くと MIDI 状態が失われ、モジュレーション ホイールの機能の割り当てがデフォルトに戻るなどの問題が発生します。つまり、MIDI Commander でモジュレーション ホイールを「サステイン ペダル」コントロールとして設定し、MicroKeyPlayer に切り替えて、その設定のモジュレーション ホイールでキーボードを演奏することはできません。

外部電源ハブを使用して、電話がコンセントに接続されていない間、デバイスを動作させておくことができることはわかっていますが、リグがもつれやすく、不便になります (家の中を移動するときに持ち運ぶものが増えます)。とにかく、原則として、使用する必要はありません。(また、現時点ではたまたま手元にありません。また、レイテンシが増加する可能性があります。)

アプリ開発者が技術的に間違っている可能性が最も高いと思います.UsbManager.hasPermission()でパーミッションをチェックし、必要に応じてUsbManager.requestPermission()を使用してパーミッションを動的に取得する必要があります.それ。

しかし、私はこれを回避する方法があるかどうか疑問に思っています。おそらく、プログラムで別のアプリに USB アクセス許可を与える方法はありますか? または、デバイスのプラグを抜かずに「アプリを選択...」メニューを再度表示するようにトリガーできるインテントがあるのでしょうか?

Android USB をよりよく理解している人は、私がこれを正しい方法で見ているかどうかを確認できますか? アプリの開発者に連絡する唯一の解決策はありますか?

4

0 に答える 0