MediaButtonService.java:

//耳机按键监听的Receiver注册比较特殊。

import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.os.IBinder;

public class MediaButtonService extends Service {


private AudioManager mAudioManager;
private ComponentName rec;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
rec = new ComponentName(getPackageName(),
MediaButtonIntentReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(rec);
}

@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mAudioManager.unregisterMediaButtonEventReceiver(rec);
}

}

MediaButtonIntentReceiver.java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;

public class MediaButtonIntentReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
KeyEvent event = (KeyEvent) intent
.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}

int keycode = event.getKeyCode();
int action = event.getAction();
long eventtime = event.getEventTime();

//按键处理逻辑

// single quick press: pause/resume.
// double press: next track
// long press: start auto-shuffle mode.

String command = null;
switch (keycode) {
case KeyEvent.KEYCODE_HEADSETHOOK:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
//耳机中间按键,可作为来电接听键,还可以作为音乐 播放/暂停 切换按键。

if (action == KeyEvent.ACTION_DOWN)
Toast.makeText(context, context.getResources().getString(R.string.media_but_res), Toast.LENGTH_SHORT).show();
break;
}

}
}
}

AndroidManifest.xml:

<receiver android:name=".MediaButtonIntentReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>

<service android:name=".MediaButtonService"></service>

更多相关文章

  1. Android 弹出有确认按键的对话
  2. Android 沉浸式状态栏跟虚拟按键冲突问题 隐藏虚拟按键
  3. Android按键响应之初见
  4. 移动平台Dialog内按键顺序研究
  5. android 7.0平台客制化虚拟导航按键(隐藏NavigationBar,上滑显示N
  6. Android 监听Home键按键事件
  7. android 按键处理的全流程梳理(realtek)
  8. 设置Android设备按Power按键不休眠
  9. Android 显示系统键盘搜索按键,实现搜索功能

随机推荐

  1. MAC 环境下初始化mysql root 密码
  2. Mysql迁移由于字符集导致乱码的数据
  3. [MySQL] 高可用架构MMM简单介绍
  4. 连接相关标签的最佳数据库设计
  5. 对所有表执行查询并在新表中填入数据
  6. MySql sqlstate代码大全(转载)
  7. mysql(一)工作原理&引擎
  8. mysql字符集设置
  9. mysql还原数据库
  10. Linux下数据库MYSQL忘记登录密码及更换密