2012-06-17 10 views
8

En mi aplicación necesito procesar eventos de botones físicos como clics de botones de volumen. Para eso estoy usando el método registerMediaButtonEventReceiver de audiomanager. Hay un article relevante para mi situación, aunque no puedo hacerlo funcionar.registerMediaButtonEventReceiver/manejo de botones de volumen problema

Aquí es código que estoy usando:

public class VolumeBroadcastActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     AudioManager manager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     manager.registerMediaButtonEventReceiver(new ComponentName(getPackageName(), RemoteControlReceiver.class.getName())); 
    } 

    public class RemoteControlReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      Toast.makeText(VolumeBroadcastActivity.this, "1",1).show(); 
      if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
      } 
     } 
    } 
} 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="localhost.volume.broadcast" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".VolumeBroadcastActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver android:name="RemoteControlReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.MEDIA_BUTTON" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 
+0

¿Qué versión de Android se ha usado? – CAMOBAP

Respuesta

0

Es posible que tenga este permiso (declarar en el manifiesto): utiliza permiso-android: name = "android.permission.BLUETOOTH"

1

Su RemoteControlReceiver clase es una clase interna de VolumeBroadcastActivity. Su manifiesto no lo dice y no creo que pueda. Conviértalo en una clase regular y preceda su android:name con un punto.

+0

El manifiesto puede contener clases internas utilizando la sintaxis normal de Java como: ".ParentClass $ Innerclass" – Habib

Cuestiones relacionadas