package com.jph.lc; import android.content.ComponentName; import android.content.Context; import android.media.AudioManager; import android.util.Log; /** * 耳机线控管理工具类 单例 * @author JPH * @date 2015-6-9 下午4:03:45 */ public class HeadSetUtil { private static HeadSetUtil headSetUtil; private OnHeadSetListener headSetListener = null; public static HeadSetUtil getInstance() { if (headSetUtil == null) { headSetUtil = new HeadSetUtil(); } return headSetUtil; } /** * 设置耳机单击双击监听接口 必须在open前设置此接口,否则设置无效 * @param headSetListener */ public void setOnHeadSetListener(OnHeadSetListener headSetListener) { this.headSetListener = headSetListener; } /** * 为MEDIA_BUTTON 意图注册接收器(注册开启耳机线控监听, 请务必在设置接口监听之后再调用此方法,否则接口无效) * @param context */ public void open(Context context) { if(headSetListener==null){ throw new IllegalStateException("please set headSetListener"); } AudioManager audioManager = (AudioManager) context .getSystemService(Context.AUDIO_SERVICE); ComponentName name = new ComponentName(context.getPackageName(), MediaButtonReceiver.class.getName()); audioManager.registerMediaButtonEventReceiver(name); Log.i("ksdinf", "open"); } /** * 关闭耳机线控监听 * @param context */ public void close(Context context) { AudioManager audioManager = (AudioManager) context .getSystemService(Context.AUDIO_SERVICE); ComponentName name = new ComponentName(context.getPackageName(), MediaButtonReceiver.class.getName()); audioManager.unregisterMediaButtonEventReceiver(name); } /** * 删除耳机单机双击监听接口 */ public void delHeadSetListener() { this.headSetListener = null; } /** * 获取耳机单击双击接口 * * @return */ protected OnHeadSetListener getOnHeadSetListener() { return headSetListener; } /** * 耳机按钮单双击监听 */ public interface OnHeadSetListener { /** * 单击触发,主线程。 此接口真正触发是在单击操作1秒后 因为需要判断1秒内是否仍监听到点击,有的话那就是双击了 */ public void onClick(); /** * 双击触发,此接口在主线程,可以放心使用 */ public void onDoubleClick(); /** * 三连击 */ public void onThreeClick(); } }