Android: BroadcastReceiver chaque fois que vous insérez/retirez le périphérique USB, branchez-le dans/à partir d'un port USB
Ma demande de ne pas l'attraper "ACTION_USB_DEVICE_ATTACHED" mais "ACTION_USB_DEVICE_DETACHED" beau travail.
Démarrage de l'Application correctement si je connecte l'usb de l'appareil, mais j'ai débrancher lors de l'exécution BroadcastReceiver
droit attraper "ACTION_USB_DEVICE_DETACHED". Si j'attache de nouveau BroadcastReceiver
ne pas attraper quoi que ce soit.
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
rocrailService.registerReceiver(mUsbReceiver, filter);
//BroadcastReceiver when insert/remove the device USB plug into/from a USB port
BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
System.out.println("BroadcastReceiver Event");
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
mSerial.usbAttached(intent);
mSerial.begin(mBaudrate);
loadDefaultSettingValues();
Run=true;
start();
System.out.println("BroadcastReceiver USB Connected");
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
mSerial.usbDetached(intent);
mSerial.end();
Run=false;
System.out.println("BroadcastReceiver USB Disconnected");
}
}
Et manifeste:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.DCCWLocoDisplay"
android:versionCode="0"
android:versionName="0" >
<uses-sdk android:targetSdkVersion="12"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:icon="@drawable/dccw"
android:label="@string/app_name" >
<activity android:icon="@drawable/cab_64" android:name="net.DCCWLocoDisplay.activities.ActRCCab" android:theme="@style/FullHeightMainDialog" 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>
<activity android:name="net.DCCWLocoDisplay.activities.ActPreferences" android:theme="@style/FullHeightDialog" />
<activity android:name="net.DCCWLocoDisplay.activities.ActAccessory" android:theme="@style/FullHeightDialog" />
<activity android:name="net.DCCWLocoDisplay.activities.ActAbout" android:theme="@style/FullHeightDialog" />
<activity android:name="net.DCCWLocoDisplay.activities.ActProgramming" android:theme="@style/FullHeightDialog" />
<activity android:name="net.DCCWLocoDisplay.activities.ActSteps" android:theme="@style/FullHeightDialog" />
<service android:name="net.DCCWLocoDisplay.DCCWLocoDisplay"/>
</application>
</manifest>
De filtre de périphérique (je vérifie vendeur et de l'id de produit):
<resources>
<!-- 0x0403 /0x6001: FTDI FT232R UART -->
<usb-device vendor-id="1027" product-id="24577" /> <!-- FT232RL -->
</resources>
OriginalL'auteur Nuccio Epifanio | 2013-03-02
Vous devez vous connecter pour publier un commentaire.
Tout fonctionne comme il a été décrit ci-dessus, à l'exception de petits changements! Sur mes recherches singleTask dans la balise application n'a pas aider, mais aidé quand je l'ai mis dans l'activité de la balise
Il m'a fourni avec ANDROID a commencé à envoyer des onNewIntent à l'activité. Et sur onNewIntent j'ai juste eu à obtenir de l'appareil à partir d'intention, avec toutes les demandes d'autorisations:
OriginalL'auteur user2586179
ajouter cette autorisation 🙂
OriginalL'auteur Shiv
Aussi essayer d'ajouter dans
<application android:launchMode="singleTask">
. Cela fonctionne pour moi avecUSB_ACCESSORY_ATTACHED
, peut travailler pour vous aussi.OriginalL'auteur TronicZomB
J'ai été en mesure de résoudre ce problème par:
android:launchMode="singleTask"
attribut dans l'écran de lancement de l'ActivitéAjouter ce Filtre d'Intention dans votre Lanceur Activité
D'ajouter des métadonnées à votre Lanceur Activité
Remplacer la OnNewIntent Méthode dans votre Lanceur Activité
onNewIntent()
Méthode sera appelée..OriginalL'auteur Yasir Ali
Android de Référence pour l'Activité dit pour l'utilisation de onNewIntent():
"Ceci est appelé pour des activités ensemble launchMode "singleTop" dans leur forfait, ou si un client a utilisé le FLAG_ACTIVITY_SINGLE_TOP drapeau lors de l'appel de startActivity(intent)"
Donc launchMode singleTop == singleTask?
OriginalL'auteur user1480734