2012-04-18 20 views
0

USBデバイスを接続して取り外すと、私のアンドロイドアプリでトーストポップアップを作成しようとしています。
短い - そのデバイスが動作していません。 samasungタブレットに、サムスンハードキーボードを接続して、私のアプリはUSBデバイスを検出しています

私の活動

import java.util.ArrayList; 
    import java.util.HashMap; 

    import com.eliddell.R; 
    import android.app.Activity; 
    import android.app.PendingIntent; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.content.IntentFilter; 
    import android.content.res.Configuration; 
    import android.hardware.usb.UsbAccessory; 
    import android.hardware.usb.UsbDevice; 
    import android.hardware.usb.UsbManager; 
    import android.location.GpsStatus.Listener; 
    import android.mtp.MtpDevice; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.inputmethod.InputMethodManager; 
    import android.widget.Toast; 

    public class UiModeTestActivity extends Activity { 
     /** Called when the activity is first created. */ 
     //UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      String str = (String) getLastNonConfigurationInstance(); 

      IntentFilter filter = new IntentFilter("android.hardware.usb.action.USB_ACCESSORY_ATTACHED"); 
registerReceiver(mUsbReceiver, filter); 

     } 


     private static final String ACTION_USB_PERMISSION ="com.android.example.USB_PERMISSION"; 
     private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { 

      public void onReceive(Context context, Intent intent) { 
       Toast.makeText(getApplicationContext(), "received", Toast.LENGTH_SHORT).show(); 
       String action = intent.getAction(); 
       if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) { 
        UsbAccessory accessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); 
        Toast.makeText(getApplicationContext(), "attached", Toast.LENGTH_SHORT).show(); 
       } 
       if (UsbManager.ACTION_USB_ACCESSORY_ATTACHED.equals(action)) { 
        UsbAccessory accessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); 
        Toast.makeText(getApplicationContext(), "detached", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }; 

    }; 

私のマニフェストを添付したり、切り離しにそれを検出持ってしようとしている:

<?xml version="1.0" encoding="utf-8"?> 

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

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 

    > 
    <uses-library android:name="com.android.future.usb.accessory" /> 
    <activity 
     android:name=".UiModeTestActivity" 
     android:configChanges="keyboard|uiMode|orientation" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" 
      android:resource="@xml/accessory_filter" /> 
    </activity> 

</application> 

+0

共有できる解決策はありますか? –

答えて

2

EDIT2:私は間違っていないです場合は、サムスンのタブレット

にサムスンハードキーボードを接続しようとし

:問題はキーボードがUSB Acessoryではないということですので、USB_ACCESSORY_ATTACHED一部をトリガしてはなりません。

IntentFilter filter = new IntentFilter("android.hardware.usb.action.USB_ACCESSORY_ATTACHED"); 
registerReceiver(mUsbReceiver, filter); 

UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); 
//final String ACTION_USB_PERMISSION ="com.android.example.USB_PERMISSION"; 

PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); 
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); 
registerReceiver(mUsbReceiver, filter); 

を交換してみてください:)


下の部分を忘れて削除

<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /> 

からAndroidManifest.xml

あなたはブロードキャストの意図とアクセス権を混同しています。

編集:おそらくこれは完全に間違っている可能性があります。http://developer.android.com/guide/topics/usb/accessory.htmlあなたのやることは何ですか?

+0

私はあなたの変更を行いましたが、まだ何もありません。 – erik

+1

「新しい」回答を参照してください。アクセサリーは多少特別ですし、あなたのキーボードは付属品ではないと思います(電池/電源そのものが必要です)ので、何も得られません。 – zapl

関連する問題