相关疑难解决方法(0)

Android - 我的应用程序中使用的音量按钮

我需要使用音量按钮来控制应用程序中的变量参数.我Activity.onKeyDown按下按钮时会收到通知,但媒体音量也会增加.
当我按下音量键时,Android正在执行以下操作:

  1. 增加媒体/铃声音量
  2. 将事件传递给我的申请

有没有办法避免增加系统音量和仅为我的应用程序使用音量键?

android

40
推荐指数
2
解决办法
5万
查看次数

注册耳机按钮单击Android中的BroadcastReceiver

我有一个带单键的耳机,按下按钮时想要做一个简单的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)

java android

29
推荐指数
2
解决办法
3万
查看次数

有没有办法在使用JavaScript(特别是Chrome)的网络浏览器中阅读耳机按钮事件?

我正在尝试创建一个Web应用程序,其中它响应来自耳机按钮的事件.我知道head set的keyCode是79.(我使用关键事件阅读器应用程序检查了它.)使用它时没有任何反应.有没有办法检测它?

javascript mobile android web-applications headset

26
推荐指数
0
解决办法
1225
查看次数

始终接收所有Android媒体按钮事件的回调(即使其他应用正在播放音频)

背景信息:每当用户按下大多数耳机上的播放/暂停按钮时,我都需要检测(KEYCODE_MEDIA_PLAY_PAUSE).

我拥有它主要使用MediaSessions,但当另一个应用程序开始播放音频时,我停止回调.

这似乎是因为正在播放音频的应用创建了自己的MediaSession,而Android仅将KeyEvents发送到最新的MediaSession.为了防止这种情况,我创建一个OnActiveSessionsChangedListener并在每次触发时创建一个新的MediaSession.

这确实有效,但每次我创建一个新的MediaSession时,监听器再次触发,所以我发现自己陷入了一个inf循环.

我的问题:有谁知道我怎么做以下任何一个??:

  • 防止其他应用窃取我的媒体按钮焦点
  • 当我将媒体按钮焦点丢失到另一个应用程序时检测到,所以我只能创建一个新的MediaSession,而不是每当活动会话改变时
  • 检查我当前是否已经有媒体按钮焦点,所以我不必要地创建一个新的MediaSession

什么行不通:

  • AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION上的BroadcastReceiver不起作用,因为应用程序必须手动触发该广播,而许多应用程序,如NPR One不
  • AudioManager.OnAudioFocusChangeListener不起作用,因为它需要我有音频焦点
  • Broadcast.Receiver在android.intent.action.MEDIA_BUTTON上具有最高优先级并调用abortBroadcast(),但当其他应用程序播放音频时,我的接收器未被触发.此外,其他应用程序也可以设置最高优先级.

我的代码:

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)

android android-mediasession

8
推荐指数
1
解决办法
5731
查看次数

蓝牙设备按钮按下应在应用程序中触发Onclick监听器

我正在尝试制作一个在配对的蓝牙设备上按下按钮时触发点击侦听器的应用程序。搜寻了几个小时后,我认为我无法将蓝牙设备按钮的键码发送到广播接收器,如果该键码匹配,那么我可以呼叫点击监听器,或者我的方法和理解是错误的,所以有人可以指导我吗或指出正确的方法?提前致谢

蓝牙设备:蓝牙自拍遥控器AB快门3

我想要这样的东西 http://www.barbatricks.com/en/android-zh/remap-ab-shutter-3-selfie-remote/

我尝试了以下链接作为参考,但未成功

如何使用Android从蓝牙耳机捕获关键事件

ACTION_MEDIA_BUTTON的BroadcastReceiver无法正常工作

如何在Android应用程序中检测蓝牙通话/媒体按钮按下

http://blog.phonedeveloper.com/2015/04/how-to-receive-bluetooth-broadcast.html

android bluetooth broadcastreceiver android-broadcastreceiver

6
推荐指数
2
解决办法
5145
查看次数

将RemoteControlClient与Headset区分开来

当用户快速双击耳机上的播放/暂停按钮时,我会有代码检测到并自动跳到下一首歌曲.不幸的是,似乎在使用RemoteControlClient时,它使用相同的PLAY_PAUSE事件.如果您在锁屏暂停时意外点击两次(或者更常见的是,无意中双击Android Wear显示屏以尝试让它响应),它会跳到下一首歌曲.我只想在蓝牙耳机上发生这种情况.有没有办法区分这两者?

audio android bluetooth lockscreen

5
推荐指数
1
解决办法
193
查看次数