android - 在 Android 中响应耳机上的媒体按钮
问题描述
我正在开发一个需要响应耳机上的按钮按下的应用程序。我一直在研究 MediaSession 和相关课程,并尝试使用它来响应这些按钮按下,只需显示一个显示按下哪个按钮的吐司。据我所知,根本没有调用 MediaSession.Callback,我无法理解原因。在阅读了关于 SO 和其他地方的无休止的问答之后,据我所知,我正在做其他人已经成功完成的事情。我尝试使用各种意图、简单的键码注册广播接收器……似乎没有任何效果。即使从 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();
}
}
解决方案
推荐阅读
- ldap - Symfony4 对 ldap 服务器进行身份验证并从数据库中获取用户信息
- jquery - DataTables 在本地工作,托管时出现 404 和 Ajax 错误
- python - Tkinter 比例小部件未实时更新
- python - 从 URL 中带有“#”的网站抓取数据时出错
- javascript - TypeError:在非对象 JQUERY 上调用 Object.defineProperty
- javascript - 将 JS 对象附加到 DOM
- java - 如何在 Spring JUnit 测试中的休眠自动生成之前初始化数据库?
- python - Keras CNN-RNN 不会训练。可以使用一些调试
- powershell - powershell 命令中的等效 /s /V"/qn
- html - 如何在 HTML 文档中创建一个可发现的容器?