2013-04-01 3 views
0

Je travaille avec le mode hôte Android pour USB. Dans la documentation du host mode api, les exigences manifestes suggèrent d'utiliser:Hôte USB a la documentation confuse

android.hardware.usb.action.USB_DEVICE_ATTACHED 

Ce me cause une certaine confusion que le UsbManager docs suggère d'utiliser:

android.hardware.usb.action.ACTION_USB_DEVICE_ATTACHED 

Quelqu'un peut-il expliquer la différence entre les deux?

En outre, la version UsbManager (2e) n'informe pas mon application lorsque le périphérique est connecté, mais que la version hôte (1ère) le fait.

Je ne peux pas obtenir l'intention de travailler détaché en utilisant soit la version:

android.hardware.usb.action.USB_DEVICE_DETACHED 
android.hardware.usb.action.ACTION_USB_DEVICE_DETACHED 

s'il vous plaît conseiller.

Modifier

Voici mon manifeste:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="cs.android.terminal" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="12" android:targetSdkVersion="15" /> 


    <uses-feature android:name="android.hardware.usb.accessory" /> 
    <uses-feature android:name="android.hardware.usb.host" /> 


    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     > 


     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" />     
       <category android:name="android.intent.category.LAUNCHER" /> 
       <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />      
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 

      <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" /> 


     </activity> 

     <receiver    
      android:name="cs.android.terminal.TerminalReceiver" 
      android:exported="false" 
      > 
      <intent-filter> 
        <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> 
        <category android:name="android.intent.category.DEFAULT" />     
      </intent-filter> 
     </receiver> 

    </application> 

</manifest> 

Répondre

0

USB_DEVICE_ATTACHED doit être utilisé dans votre fichier Manifest pour détecter lorsqu'un périphérique est connecté à l'USB. ACTION_USB_DEVICE_ATTACHED doit être utilisé avec votre code java pour indiquer qu'une action est effectuée et quelle est cette action. Bien qu'il existe actuellement une erreur/bug avec ACTION_USB_DEVICE_ATTACHED où Android ne détecte pas BroadcastReceiver dans le code java, il ne peut être détecté dans votre manifeste pour le moment. Tout cela dit, utilisez USB_DEVICE_ATTACHED dans votre manifeste.

EDIT: Essayez ceci:

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" android:resource="@xml/device_filter" /> 
+0

D'accord, je pense que cela me aide un peu. Seriez-vous capable de savoir pourquoi le filtre de détachement ne reçoit pas l'événement de détachement? –

+0

Avez-vous enregistré votre 'BroadcastReceiver'? Habituellement cela est fait dans 'onResume 'mais pour les communications USB, je l'ai fait dans' onCreate' et ensuite j'appellerais 'unregisterReceiver' dans' onDestroy', mais cela se fait normalement dans 'onPause'. – TronicZomB

+0

Les deux récepteurs sont enregistrés dans le manifeste: un pour la connexion et un pour le détachement. le filtre d'attache fonctionne bien, mais ne le détache jamais. –

Questions connexes