私は、サムスンギャラクシータブレットでUSBホスト機能を活用しようとしています。私はサムスン(http://www.samsung.com/us/mobile/galaxy-tab-accessories/EPL-1PL0BEGSTA)から添付のドングルを購入しました。私が最初にこのドングルを介してUSBデバイスを接続したとき、私はギャラクシータブレットからハイパワーエラーが発生しました - 外部USBパワードUSBハブを使用して、これをバイパスすることができます。サムスンギャラクシー10.1タブレットでAndroid USBホストの問題
私はそれを接続すると、デバイス自体がUSB周辺機器の存在を認識しているので、私はAndroidのandroid.hardware.usb.UsbDeviceを使用しようとしました。 import android.hardware.usb.UsbManager;としょうかん。私は、任意のデバイスを接続したときにこれがOK ...奇妙な、任意の意図を発射されていない
IntentFilter usbIntentFilter = new IntentFilter();
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_ATTACHED");
usbIntentFilter.addAction("android.hardware.usb.action.USB_DEVICE_DETACHED");
registerReceiver(mUsbReceiver,usbIntentFilter);
を経由しての意図をリッスンするために、放送受信装置を登録するUSBデバイスを認識するための2つの方法が、あることを見ました。だから私は、次の方法を試しに行きました:明示的UsbManagerを介してデバイスの一覧を照会する - 次のようにこれが達成された:
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
int count = deviceList.size();
Iterator<UsbDevice> iterator = deviceList.values().iterator();
if(iterator.hasNext()){
UsbDevice deviceVal = iterator.next();
testTxtView1.setText("set device " + deviceVal);
}
これはおそらく1をつかむだろう(一つだけのUSBデバイスが現在のGoogleドキュメントごとにサポート)現在接続されているUSBデバイス。これをテストするには、ボタンをクリックして上記のコードを呼び出し、デバイスの結果を表示します。何らかの理由で、USBドングルが接続されているかどうかにかかわらず、毎回デバイスリストからデバイスを取得しています。さらに、デバイスは、USBドングル(またはその欠如)に関係なく毎回同じです。次のように出力される。
デバイスusbDevice [MNAME =は/ dev /バス/ USB/001/002、mVendorId = 1256、mProductId = 27033、mClass = 0、mSubClass = 0、mProtocol = 0、mInterfaces = [Landroid .os.Parcelable; 406ff4d8]
@ ^^ @ 406ff4d8値が、私はこのコードを照会するたびに変更する(私はそれまでの単一のインスタンスを置く)
私はどこにでも検索しましたとすることができませんでした私の状況に当てはまるような類似の問題や解決策を見つける。私はGoogleのUSBの例を実装しようとしています(これは本質的に私が持っているものです、私はそれらのものを裂いたものです)。
私はまた私のマニフェストのメイク言及する必要があります:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.mit.ll.drm4000"
android:versionCode="1"
android:versionName="1.0">
<uses-feature android:name="android.hardware.usb.host" />
<uses-sdk android:minSdkVersion="12" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".DRM4000Activity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
</application>
とデバイスフィルタを:
(私はデバイスフィルタに基準を削除されますが、 dについての特定の情報を挿入しようとしました私が探しているサービスです...)
この問題に関する助けがあれば幸いです!
別のアップデート:私は常にデバイスリスト
デバイスusbDevice [MNAME =は/ dev /バス/ USB/001/002に列挙されて不満デバイス、mVendorId = 1256、mProductId = 27033、 mClass = 0、mSubClass = 0、mProtocol = 0、mInterfaces = [Landroid.os.Parcelable; @ 406ff4d8]
は、Android側のUSBポートでなければなりません。私のコードにさまざまなデバイスを接続し始めたので、(このリンクに似ています: USB_DEVICE_ATTACHED Intent not firing)HIDデバイス、arduinoデバイス、そして悲しいことに...私のUSBデバイスは、インテントを起動したり、 USBハブ私はUSBフラッシュドライブを試してみましたが、それを列挙して作業しました...しかし、これはリスト上の2番目のデバイスとして表示されます。最初のものは上記のusbDeviceです。しかし、インテントはそれにもかかわらず発砲する。
選択した数少ないアンドロイドを除いて、HIDデバイスや他のUSBデバイスでインテントを発火させる回避策を知っている人はいますか?
他のアプリでUSBホストが動作することを確認できますか? PTPカメラを接続して、ギャラリーがブロードキャストされているかどうかを確認してください。私はあなたがリブートを試みたと仮定し、あなたのタブを最新バージョンに更新しました。 –
キーボードを差し込むと動作しているようです。私はそれを接続すると、私は "USBデバイスが接続されました"というメッセージが表示されます。しかし、上記のコードは、キーボード、他のUSBデバイス、またはプラグインされていない同じ出力を私に与えます。 USBデバイスは関係ありません。私はそれがキーボードがちょうど良いと認識されて以来、私のコードで何かでなければならないことを知っBTW:他のデバイスを接続すると「Unknown USB Device Connected」と表示される – hinklecw
別のアップデート:デバイスリストに常に列挙されていると訴えたデバイスは、AndroidのUSBポートなどでなければなりません。デバイスを私のコードに追加してみると、このリンク(USB_DEVICE_ATTACHEDインテントは起動しない)と同様に、HIDデバイス、arduinoデバイス、および私のUSBデバイスは、USBハブによってインテントを起動したり、列挙されたりしません。私はUSBフラッシュドライブを試してみましたが、それを列挙して作業しました...しかし、これはリスト上の2番目のデバイスとして表示されます。最初のものは上記のusbDeviceです。しかし、インテントはそれにもかかわらず発砲する。 – hinklecw