我需要使用音量按钮来控制应用程序中的变量参数.我Activity.onKeyDown按下按钮时会收到通知,但媒体音量也会增加.
当我按下音量键时,Android正在执行以下操作:
有没有办法避免增加系统音量和仅为我的应用程序使用音量键?
我有一个带单键的耳机,按下按钮时想要做一个简单的Toast.
现在我有以下代码:
public class MediaButtonIntentReceiver extends BroadcastReceiver {
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}
Run Code Online (Sandbox Code Playgroud)
我的主要活动如下:
public class mainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Web应用程序,其中它响应来自耳机按钮的事件.我知道head set的keyCode是79.(我使用关键事件阅读器应用程序检查了它.)使用它时没有任何反应.有没有办法检测它?
背景信息:每当用户按下大多数耳机上的播放/暂停按钮时,我都需要检测(KEYCODE_MEDIA_PLAY_PAUSE).
我拥有它主要使用MediaSessions,但当另一个应用程序开始播放音频时,我停止回调.
这似乎是因为正在播放音频的应用创建了自己的MediaSession,而Android仅将KeyEvents发送到最新的MediaSession.为了防止这种情况,我创建一个OnActiveSessionsChangedListener并在每次触发时创建一个新的MediaSession.
这确实有效,但每次我创建一个新的MediaSession时,监听器再次触发,所以我发现自己陷入了一个inf循环.
我的问题:有谁知道我怎么做以下任何一个??:
什么行不通:
我的代码:
mMediaSessionManager.addOnActiveSessionsChangedListener(controllers -> {
boolean updateButtonReceiver = false;
// recreate MediaSession if another app handles media buttons
for (MediaController mediaController : controllers) {
if (!TextUtils.equals(getPackageName(), mediaController.getPackageName())) {
if ((mediaController.getFlags() & (MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS)) != 0L) {
updateButtonReceiver = true;
}
}
}
if (updateButtonReceiver) {
// using a handler with a delay of about 2 seconds because this listener fires very often.
mAudioFocusHandler.removeCallbacksAndMessages(null); …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个在配对的蓝牙设备上按下按钮时触发点击侦听器的应用程序。搜寻了几个小时后,我认为我无法将蓝牙设备按钮的键码发送到广播接收器,如果该键码匹配,那么我可以呼叫点击监听器,或者我的方法和理解是错误的,所以有人可以指导我吗或指出正确的方法?提前致谢
蓝牙设备:蓝牙自拍遥控器AB快门3
我想要这样的东西 http://www.barbatricks.com/en/android-zh/remap-ab-shutter-3-selfie-remote/
我尝试了以下链接作为参考,但未成功
ACTION_MEDIA_BUTTON的BroadcastReceiver无法正常工作
http://blog.phonedeveloper.com/2015/04/how-to-receive-bluetooth-broadcast.html
android bluetooth broadcastreceiver android-broadcastreceiver
当用户快速双击耳机上的播放/暂停按钮时,我会有代码检测到并自动跳到下一首歌曲.不幸的是,似乎在使用RemoteControlClient时,它使用相同的PLAY_PAUSE事件.如果您在锁屏暂停时意外点击两次(或者更常见的是,无意中双击Android Wear显示屏以尝试让它响应),它会跳到下一首歌曲.我只想在蓝牙耳机上发生这种情况.有没有办法区分这两者?