Wie zu erkennen angeschlossene USB-Gerät mit UsbManager?
Ich bin neu in android-Programmierung, mein Hauptziel ist es, die Kommunikation über USB an einen MCU mit FT200XD USB-zu-I2C-Brücke.
Erste, den ich versuche zu erkennen angeschlossene USB-Gerät über die UsbManager. Von dem was ich verstehe, auf erstellen Sie ein popup-Fenster sollte um Erlaubnis bitten, um eine Verbindung vom Benutzer aber keine Erlaubnis gefragt ist. Beim Debuggen ist klar, dass die Kontrolle nicht in der broadcast-Empfänger-Abschnitt.
Habe ich gepfiffen paar Beispiel-code-snippet und schrieb den code unten. Ich weiß nicht, was ich falsch mache.
Heruntergeladen habe ich eine app namens"USB host Controller", die nicht erkennen, die FT200XD. Das heißt, mein tablet hat den USB-host-Funktion. Es wird großartig sein, wenn Sie können zeigen Sie mir die richtige Richtung oder eine gesamte funktionierende code gemeinsam genutzt werden kann.
Mein code ist wie folgt:
Java-Datei:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
mPermissionIntent= PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
filter.addAction(UsbManager.EXTRA_PERMISSION_GRANTED);
filter.addAction(ACTION_USB_PERMISSION);
registerReceiver(mUsbReceiver, filter);
}
//Broadcast receiver
public class mUsbReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(getApplicationContext(),
"Inside USB Broadcast", Toast.LENGTH_SHORT).show();
}
}
Manifest-Datei Teil:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.usb"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="19" />
<uses-feature android:name="android.hardware.usb.host" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="mUsbReceiver">
<intent-filter>
<action android:name="android.hardware.usb.action.ACTION_USB_PERMISSION"/>
</intent-filter>
</receiver>
<activity
android:name="com.example.usb.FullscreenActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/FullscreenTheme" >
<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_DETACHED" />
<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>
</manifest>
Device_filter.xml Datei:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 0x0403 /0x6001: FTDI FT232R UART -->
<usb-device vendor-id="1027" product-id="24577" />
<!-- 0x2341 /Arduino -->
<usb-device vendor-id="9025" />
<!-- 0x16C0 /0x0483: Teensyduino -->
<usb-device vendor-id="5824" product-id="1155" />
<!-- 0x617 /0x000b: EFPL CC2531 -->
<usb-device vendor-id="1559" product-id="11" />
<!-- vendor-id="0x0403" product-id="0x6015" //converted to Int vendor ID and product ID of my FT200XD-->
<usb-device vendor-id="1027" product-id="24597" />
</resources>
- dies sollte Ihr problem lösen aus; Sie haben könnte, um Ihre Wurzel device: stackoverflow.com/a/11992683/979369.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wahrscheinlich wollen, um zu sehen, das von den return-code für registerReceiver - von dem, was du einen Beitrag in deinem code würde ich annehmen, es würde scheitern, da Sie eigentlich nicht instanziieren, Ihre mUsbReceiver. Werfen Sie einen Blick auf diese Codes, die von extrahiert aus einer Anwendung, die ich geschrieben habe, dass das funktioniert, merkt man den Unterschied in der Art, wie ich mich der Einrichtung meines BroadcastReceiver, dies zeigt auch, wie um Erlaubnis zu bitten, wenn Ihr Gerät wird eingefügt:
Auch - es scheint, dass für meine app, die ich nicht brauchen die zusätzliche Vorsatz-filter oder meta-data XML-Datei für das USB-Aktionen.