研究了Square Android 应用,它在刷卡界面监测耳机按钮事件,全部屏蔽掉线控事件。
MediaButtonDisabler.java:
package org.lytsing.square;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
public class MediaButtonDisabler extends BroadcastReceiver {
private static final String TAG = "MediaButtonDisabler";
private static final BroadcastReceiver INSTANCE = new MediaButtonDisabler();
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Intercepted media button.");
abortBroadcast();
}
public static void register(Context context) {
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter.setPriority(Integer.MAX_VALUE);
context.registerReceiver(INSTANCE, filter);
}
public static void unregister(Context context) {
context.unregisterReceiver(INSTANCE);
}
}
简要说明,设置过滤优先级为最高,int 的最大值(2^32 – 1 = 2147483647),这样,就会在第一时间把线控事件的广播中止,使其他应用无法接收到。
在Activity 调用:
@Override
protected void onPause() {
super.onPause();
MediaButtonDisabler.unregister(this);
}
@Override
protected void onResume() {
super.onResume();
MediaButtonDisabler.register(this);
}
另外,我们发现一些Android手机在音频口插入我们的盒子读卡器后,音乐播放器乱放,反复播放又暂停又播放,开始以为是线控问题,屏蔽掉后,问题依旧。有做这方便的朋友,可以交流交流,分享一下。
If you enjoyed this post, make sure you subscribe to my RSS feed!
8 replies on “Android 屏蔽线控耳机”
文章太好了,仔细看完了,觉得很精彩,支持下,!!!壬辰年(龙)四月初七 2012-4-27
想试试看,能否运行在BlackBerry PlayBook上,呵呵。谢谢了~~。方便的话回个邮件。
请问哪里能够买到“盒子支付”刷卡器啊?想在BlackBerry PlayBook上面测试一下。还请方便的时候回个邮件,谢谢了~~~
碰到同样的问题,当运行刷卡器应用程序的时候,会使音量逐渐减小或者触发拨号界面,不知道该怎样解决!不知LZ解决没有?求赐教!!!
调节音量。
看來大家都遇到一樣問題. 正努力找答案中, 如何避免MUSIC被自動放放停停的問題
miui对插入耳机有智能的判断吧。
插入耳机并且设为音频流播放的模式。
就触发了吧。
看能不能把插入耳机的广播消息屏蔽掉。
不错,我试试。