当前位置: 首页 > news >正文

android 媒体按钮,如何使用新的MediaSession类在Android 5.x上接收媒体按钮?

我正在尝试使用新的MediaSession类接收媒体按钮,到目前为止我一直没有成功 . 有没有人设法使用新课程接收它们?

我已成功创建MediaSession并使用它来更新远程显示器(车载娱乐系统)上的歌曲信息,但到目前为止我无法接收按钮,耳机控制和蓝牙耳机控制 .

在我创建媒体会话后,我在用于播放音频的服务中执行以下操作:

_mediaSession = new MediaSession(getApplicationContext(), Global.PACKAGE_NAME + "." + TAG);

if (_mediaSession == null) {

_log.e(TAG, "initMediaSession: _mediaSession = null");

return;

}

_mediaSessionToken = _mediaSession.getSessionToken();

_mediaSession.setCallback(new Callback() {

public boolean onMediaButtonEvent(Intent mediaButtonIntent) {

_log.d(TAG, "onMediaButtonEvent called: " + mediaButtonIntent);

return false;

}

public void onPause() {

Log.d(TAG, "onPause called (media button pressed)");

super.onPause();

}

public void onPlay() {

Log.d(TAG, "onPlay called (media button pressed)");

super.onPlay();

}

public void onStop() {

Log.d(TAG, "onStop called (media button pressed)");

super.onStop();

}

});

_mediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);

PlaybackState state = new PlaybackState.Builder()

.setActions(PlaybackState.ACTION_PLAY)

.setState(PlaybackState.STATE_STOPPED, PlaybackState.PLAYBACK_POSITION_UNKNOWN, SystemClock.elapsedRealtime())

.build();

_mediaSession.setPlaybackState(state);

_mediaSession.setActive(true);

但我仍然没有收到任何按钮按下 .

有人有主意吗?

谢谢

Update 改变后

PlaybackState state = new PlaybackState.Builder()

.setActions(PlaybackState.ACTION_PLAY)

.setState(PlaybackState.STATE_STOPPED, PlaybackState.PLAYBACK_POSITION_UNKNOWN, SystemClock.elapsedRealtime())

.build();

PlaybackState state = new PlaybackState.Builder()

.setActions(PlaybackState.ACTION_PLAY)

.setState(PlaybackState.STATE_STOPPED, PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0)

.build();

我现在通过onMediaButtonEvent()回调接收按钮通知(例如被通知按下了KEYCODE_MEDIA_PAUSE)但是onPlay(),onPause()和onStop()从未被调用,任何想法为什么?

相关文章:

  • android按钮图,android-UI组件实例大全(三)------按钮Button与图片按钮ImageButton
  • android jmdns,jmdns.jar 通信
  • 锁定当前屏幕触摸android,Android解锁屏幕,然后重新锁定屏幕(Nook简单触摸)
  • 华为鸿蒙os2.0版适用机型,鸿蒙os2.0支持机型_华为鸿蒙os2.0系统支持什么手机
  • android画笔大小,android之画板功能之橡皮擦 画笔大小和画笔颜色
  • dll文件可以在Android上用吗,在Android应用程序中使用dll文件
  • html给看板娘添加语音,如何在网页上插入一个看板娘
  • Android调用美图皮肤接口,首创皮肤识别 美图秀秀android新版上线
  • 没有什么效果的html标签,h1fontcolor=red为什么像这样的标签输入没有效果呢.。。。/font/h1_html/css_WEB-ITnose...
  • 计算机网络范围覆盖类别,计算机网络如何分类和计算机网络的类别
  • 台式计算机启用时间查看,win7系统如何查看电脑的开关机时间想知道是否有他人使用...
  • 文献检索是利用计算机对文献,文献检索计算机课.ppt
  • 利用计算机属性将字符串逆序输出,字符串逆序的各种实现算法
  • 域控重定向停用计算机,域控问题解决意见及调整内容20110724
  • 在教学中利用计算机软件给学生演示,2013年远程教育本科全国统考计算机应用基础模拟题及答案(8)...
  • css属性的继承、初识值、计算值、当前值、应用值
  • dva中组件的懒加载
  • export和import的用法总结
  • JavaScript 奇技淫巧
  • java第三方包学习之lombok
  • leetcode388. Longest Absolute File Path
  • leetcode98. Validate Binary Search Tree
  • oschina
  • PAT A1120
  • PermissionScope Swift4 兼容问题
  • Vue.js源码(2):初探List Rendering
  • yii2权限控制rbac之rule详细讲解
  • 分享一份非常强势的Android面试题
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 双管齐下,VMware的容器新战略
  • 微信小程序开发问题汇总
  • ​用户画像从0到100的构建思路
  • %@ page import=%的用法
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)计算机毕业设计ssm电影分享网站
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (三)终结任务
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)一些感悟
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ./和../以及/和~之间的区别
  • .NET Core跨平台微服务学习资源
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 中让 Task 支持带超时的异步等待
  • .Net多线程总结
  • .NET企业级应用架构设计系列之应用服务器
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .so文件(linux系统)
  • @Bean, @Component, @Configuration简析
  • @SuppressWarnings注解