Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中响应耳机上的媒体按钮_Android_Android 10.0_Android Mediasession - Fatal编程技术网

在Android中响应耳机上的媒体按钮

在Android中响应耳机上的媒体按钮,android,android-10.0,android-mediasession,Android,Android 10.0,Android Mediasession,我正在开发一个应用程序,它需要对耳机上的按键做出响应。我一直在学习MediaSession和相关课程,并试图用它来回应这些按钮的按下,只需显示一个祝酒词,显示按下了什么按钮。据我所知,MediaSession.Callback根本没有被调用,我很难理解为什么。在阅读了无休止的问答和其他地方之后,从我所能看出,我所做的正是其他人成功完成的事情。 我尝试过注册广播接收机,使用各种意图,简单的按键代码。。。似乎什么都不管用。甚至从MediaSession切换到MediaSessionCompat也没有

我正在开发一个应用程序,它需要对耳机上的按键做出响应。我一直在学习MediaSession和相关课程,并试图用它来回应这些按钮的按下,只需显示一个祝酒词,显示按下了什么按钮。据我所知,MediaSession.Callback根本没有被调用,我很难理解为什么。在阅读了无休止的问答和其他地方之后,从我所能看出,我所做的正是其他人成功完成的事情。 我尝试过注册广播接收机,使用各种意图,简单的按键代码。。。似乎什么都不管用。甚至从MediaSession切换到MediaSessionCompat也没有效果。我相信有一些东西需要实现,允许android向我的应用程序发送媒体通知,但我在上面找不到任何东西,所以我甚至不确定是否需要这样做。 感谢您的帮助,并提前表示感谢

我的实施至今

public class MainActivity extends AppCompatActivity
{
    MediaSessionCompat m_MediaSession;

    final MediaSessionCompat.Callback m_MediaCallback = new MediaSessionCompat.Callback()
    {
        @Override
        public boolean onMediaButtonEvent(@NonNull Intent mediaButtonIntent)
        {
            Toast.makeText(MainActivity.this, "media button pressed", Toast.LENGTH_SHORT).show();
            return super.onMediaButtonEvent(mediaButtonIntent);
        }
        @Override
        public void onPlay()
        {
            Toast.makeText(MainActivity.this, "play button pressed", Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onPause()
        {
            Toast.makeText(MainActivity.this, "pause button pressed", Toast.LENGTH_SHORT).show();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        m_MediaSession = new MediaSessionCompat(getApplicationContext(), "MediaSessionTag");
        m_MediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
                                MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
        m_MediaSession.setCallback(m_MediaCallback);
        PlaybackStateCompat.Builder builder = new PlaybackStateCompat.Builder();
        builder.setActions(PlaybackStateCompat.ACTION_PLAY |
                           PlaybackStateCompat.ACTION_PAUSE |
                           PlaybackStateCompat.ACTION_PLAY_PAUSE |
                           PlaybackStateCompat.ACTION_SKIP_TO_NEXT |
                           PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS)
               .setState(PlaybackStateCompat.STATE_NONE, 0, (float) 1.0);
        m_MediaSession.setPlaybackState(builder.build());
        m_MediaSession.setActive(true);
    }

    @Override
    public void onDestroy()
    {
        m_MediaSession.release();
        super.onDestroy();
    }
}