2011-09-19 29 views
7

Androidアプリ(Java GUI +ネイティブ(C++)コア)でlibusbを使用したいと思います。 libusbをコンパイルして関数を呼び出そうとしましたが、libusb_openはLIBUSB_ERROR_ACCESSを返します。 USBアクセス許可に問題があると思われますが、問題の解決方法はわかりません。そこで、2つの質問: 1)rootusされたAndroid 3.1デバイスでlibusbを実行するにはどうすればよいですか? 2)出荷されていないデフォルトのデバイスでlibusbを使用することはできますか?Androidアプリケーションでlibusbを使用する:アプリケーションにUSBアクセスを許可する方法

ありがとうございます。

P.私は/ dev/bus/usbのchmod 666を試しましたが、 "permission denied"と書かれています(私のデバイスが根付いていることに注意してください)。

P.P.S. mount usbfsなし/ proc/bus/usb -o devmode = 0666は、私が何かをミスペルしたように(しかし私はしなかった)実行さえしません。


私は確かにそれはUSBホストと根ざしAndroidデバイスに取り組んでlibusbを取得することが可能です知っているが、私はそれを管理したことがないので、私は、Android 3.1以上にアプリを制限し、USB APIを使用する必要がありました。

+0

あなたは明らかにアンドロイド3.1で作業しているとは、あなたが[USB APIを]を使用して考えられている(http://developer.android.com/:https://gitlab.com/madresistor/libusb/blob/android/README

OLD LINKこちら(DEAD LINK)ソリューションを参照してくださいguide/topics/usb/index.html)はAndroid SDKにありますか? – Frxstrem

+0

@Frxstrem:はい、私はその解決策に頼らざるを得ませんでした。私はそれには満足していませんが、それは動作し、それはAndroid上でUSBを使用する標準的な方法なので、私は質問を閉じるべきだと思います。 –

+2

それを閉じないでください。ただ答えてください。 –

答えて

0

アンドロイドでは、libusbを使ってUSBデバイスを直接開くことはできません(これはあなたが来た結論です:)。

なぜ開けませんでしたか?

デバイスを開くには、Androidシステム(!= Kernel)の許可を得る必要があります。

は、Javaでそれを実行してください:あなたが要求したとき

、ポップを受け入れるか拒否するためにユーザーに示されています。 したがって、デバイスをjavaで開き、javaを使用してfdを抽出し、デバイスと通信できるようにlibusbに渡す必要があります。

libusbはfdからどのようにハンドルを作成しますか?

アップデート:私は、Android用に修正されたlibusbのバージョンを管理しています(より多くの修正 - Android 5.1以降で動作確認済み)。 https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993

+0

リンクが壊れています。 – jayeffkay

+0

@jayeffkayリンクを更新しました。ありがとう。 –

関連する問題