7

アプリケーションを使用して、コンピュータを Android アクセサリに変えたいと考えています。したがって、専用のハードウェアの代わりに、電話をアクセサリ モードに切り替える単なる PC になり、ホスト ハードウェアに関連付けられた電話で Java アプリを起動し、通信チャネルを作成します。

Linuxでlibusbを使用してこれを行うためのサンプルコード(およびいくつかのJava Androidアプリ)を見つけました。標準の VID と PID を使用して電話機を「開く」ことで機能します。次に、モデル、バージョンなどのメタデータとともに、アクセサリ モードをオンにするコマンドを送信します。

電話がアクセサリ モードをサポートしている場合、電話は切断され、別の PID で再列挙されます。サンプル コードは、それがあったかどうかを確認し、新しいデバイスを開きます。

ただし、これをWindowsで実行しようとしています。LibUsbDotNetのようないくつかの USB ライブラリを見つけましたが、それらはすべて WinUSB/libusb ドライバーを使用するデバイスを必要とするようです。LibUsbDotNet のツールを使用して携帯電話用の libusb ドライバーを生成し、古い汎用リムーバブル ドライブにインストールしました。しかし、これは、必要なときに電話をリムーバブル ドライブとしてアクセスできないことを意味するため、これは解決策ではありません。

VID と PID に基づいて接続された USB デバイスを開き、それにいくつかの raw コマンドを送信できる方法 (できればライブラリ) はありますか?

その後、デバイスは別の PID で再列挙されます。これを使用して、独自の WinUSB ドライバーを作成できるため、問題はありません。アクセサリ モードをオンにするには、デフォルト ドライバを介して、またはその周りにいくつかのコマンドを挿入する必要があります。

(私は .NET ソリューションを好みますが、Windows であれば何でも問題なく、独自の相互運用ラッパーを作成できます)

4

1 に答える 1

0

私も同様の解決策を探しています。libusb を使用して Linux 版を試してみましたが、ヒックアップはほとんどなく、デバイスと通信できました。Windowsで解決策を探している間、私は多くのハックを試みました. ADK モードでデバイスと通信する必要がある場合は、いくつかのベンダー コマンドを送信する必要があります。これは、デバイスがマス ストレージ モードで接続されているときに行う必要があります。これは、Mass Storage ドライバーでは不可能です。接続された USB デバイスのノード ハンドルを取得して、ベンダー コマンドを送信できるかどうかを確認しようとしましたが、Get Descriptor 要求しかファイルできませんでした。だから私は醜い方法に行き、マスストレージドライバーをlibusb-win32に置き換えて、同じことができることを確認しました。はい、うまくいきましたが、まったく良い解決策ではありませんでした。

まだ探している..

于 2013-06-02T16:23:10.613 に答える