2012-06-17 6 views
8

In meiner Anwendung muss ich physische Tastenereignisse verarbeiten, z. B. Lautstärketastenklicks. Dafür verwende ich die registerMediaButtonEventReceiver-Methode von audiomanager. Es ist ein article relevant für meine Situation, obwohl ich es nicht funktionieren kann.registerMediaButtonEventReceiver/Umgang mit Lautstärketasten Problem

Hier Code ist Ich verwende:

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

Welche Android-Version wurde verwendet? – CAMOBAP

Antwort

0

Sie diese Berechtigung (in manifest erklären) benötigen: verwendet Zulassungs android: name = "android.permission.BLUETOOTH"

1

Ihre RemoteControlReceiver Klasse ist eine innere Klasse von VolumeBroadcastActivity. Dein Manifest sagt es nicht und ich denke nicht, dass es das könnte. Machen Sie es zu einer regulären Klasse und geben Sie android:name mit einem Punkt voran.

+0

Das Manifest kann innere Klassen enthalten, die normale Java-Syntax verwenden: ".ParentClass $ Innerclass" – Habib