尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
android车载应用--蓝牙音乐开发
车机蓝牙音乐核心是通过绑定蓝牙媒体服务来实现车机与手机的交互核心代码//当前播放的音乐信息varplayMusicInfoMutableStateFlowMediaMetadata?(null)//播放状态varplaybackStateMutableStateFlowPlaybackState?(null)//媒体浏览服务privatevarmMediaBrowser:MediaBrowser?null//媒体控制器privatevarmediaController:MediaController?null//记录播放状态用于下次连接时候做是否播放的处理varisNeedPlaytrue//是否是连接之后第一次获取信息varfirstInfoAfterConnectfalsefuninitMediaBrowser(){val packageNamecom.android.bluetoothval classNamecom.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService//1.待连接的服务val componentNameComponentName(packageName,className)//2.创建MediaBrowsermMediaBrowserMediaBrowser(App.context,componentName,mConnectionCallbacks,null)//3.建立连接mMediaBrowser!!.connect()mMediaBrowser!!.subscribe(music,object:MediaBrowser.SubscriptionCallback(){override funonChildrenLoaded(parentId:String,children:ListMediaBrowser.MediaItem?){super.onChildrenLoaded(parentId,children)}override funonChildrenLoaded(parentId:String,children:ListMediaBrowser.MediaItem?,options:Bundle){super.onChildrenLoaded(parentId,children,options)}override funonError(parentId:String){super.onError(parentId)}override funonError(parentId:String,options:Bundle){super.onError(parentId,options)}})}fundisconnect(){mMediaBrowser?.disconnect()mMediaBrowsernull}privateval mConnectionCallbacks:MediaBrowser.ConnectionCallbackobject:MediaBrowser.ConnectionCallback(){override funonConnected(){Log.d(TAG,onConnected)//连接成功回调// Get the token for the MediaSessionval token:MediaSession.TokenmMediaBrowser!!.sessionToken// Create a MediaControllerCompatmediaControllerMediaController(App.context,// Contexttoken)// Register a Callback to stay in syncmediaController!!.registerCallback(controllerCallback)if(isNeedPlay){mediaController?.transportControls?.play()}}override funonConnectionSuspended(){//连接中断回调Log.d(TAG,onConnectionSuspended)}override funonConnectionFailed(){//连接失败回调Log.d(TAG,onConnectionFailed)}}varcontrollerCallback:MediaController.Callbackobject:MediaController.Callback(){override funonSessionDestroyed(){//Session销毁}override funonMetadataChanged(metadata:MediaMetadata?){Log.i(TAG,metadata $metadata)playMusicInfo.valuemetadata}override funonPlaybackStateChanged(state:PlaybackState?){playbackState.valuestateif(state!nullplayMusicInfo.value!null){if(state.statePlaybackState.STATE_PLAYING){isNeedPlaytrue}elseif(state.statePlaybackState.STATE_PAUSED){isNeedPlayfalse}}}override funonAudioInfoChanged(info:MediaController.PlaybackInfo?){super.onAudioInfoChanged(info)}}/** * 播放 */funplay(){Log.i(TAG,play)mediaController?.transportControls?.play()}/** * 暂停 */funpause(){Log.i(TAG,pause)mediaController?.transportControls?.pause()}/** * 下一曲 */funnext(){Log.i(TAG,next)mediaController?.transportControls?.skipToNext()}/** * 上一曲 */funprev(){Log.i(TAG,prev)mediaController?.transportControls?.skipToPrevious()}/** * 拖到到指定进度 */funseekTo(pos:Long){Log.i(TAG,seekTo:pos $pos)mediaController?.transportControls?.seekTo(pos)}媒体数据解析 常用//标题 部分音乐软件也是通过这个展示歌词MediaMetadata.METADATA_KEY_TITLE//专辑名MediaMetadata.METADATA_KEY_ALBUM//歌手MediaMetadata.METADATA_KEY_ARTIST)//总时长MediaMetadata.METADATA_KEY_DURATION//封面MediaMetadata.METADATA_KEY_ALBUM_ART_URI
RELATED

相关推荐

bugku 隐写

bugku 隐写

方法一: 1.打开图片属性查看以后发现分辨率一般为500*500不对所以修改宽高。 BMP: 文件头中偏移量 0x12 和 0x16 分别为宽和高,各占 4 字节(Little Endian)。PNG: 宽高信息位于 IHDR 块的第 8~15 字节&am…

📅 2026/10/9 9:52:34
直播、点播、会议、对讲各搞一套?私有化部署EasyDSS企业融媒体系统一个平台全部搞定

直播、点播、会议、对讲各搞一套?私有化部署EasyDSS企业融媒体系统一个平台全部搞定

在企业音视频应用的日常里,有一个普遍到让人习以为常的痛点:直播用A系统、点播用B平台、会议靠C软件、对讲又是一堆对讲机。四个场景,四套工具,账号不统一、数据不相通、成本层层叠加。EasyDSS把视频直播、视频点播、远程视频会议…

📅 2026/10/6 13:11:53
全球推理AI芯片市场高速扩容,推理算力需求推动芯片架构加速重构

全球推理AI芯片市场高速扩容,推理算力需求推动芯片架构加速重构

一、行业定义:推理AI芯片成为AI算力基础设施的重要组成部分推理AI芯片是针对人工智能模型推理阶段进行优化的专用计算芯片或加速器,主要承担模型部署后的实时计算任务,与训练阶段相比,其更加关注单位成本、单位功耗下的吞吐量、时…

📅 2026/10/4 20:32:02
MORE NEWS

更多资讯

📰

电工证证件从哪里查询 一位焦作学员的真实经历告诉你怎么避坑

电工证证件从哪里查询 一位焦作学员的真实经历告诉你怎么避坑 不知道去哪报名怕被中介坑?这是很多想考电工证的人最真实的感受。尤其是像我这样从零开始准备考试的人,一开始对流程、机构、考试内容都一无所知,结果差点被一些不靠谱的培训机构骗了报名费,…

📰

江西新余哪里考电工证官方回应:考证不急,但别耽误找工作

江西新余哪里考电工证官方回应:考证不急,但别耽误找工作 急需特种作业证才能上岗找工作,这事儿不能拖。最近江西新余不少朋友都在问“江西新余哪里考电工证”,官方回应也已经明确,只要符合条件,考电工证并不难。但很多人不了解流程,更不清楚考试内容和…

📰

高压运行电工证用处,学历不高也能上岗必备?这几点你必须知道

高压运行电工证用处,学历不高也能上岗必备?这几点你必须知道 学历不高怕报不上名?高压运行电工证用处到底有多大?在驻马店,很多建筑工地的电工岗位,其实并不看重你是不是名校毕业,而是看你的证书和实操能力。特别是高压运行电工证,作为上岗必备的证件…

📰

人不用来轻松拿电工证内部消息全公开

人不用来轻松拿电工证内部消息全公开 怕考不过白交培训费?别慌,我这有内部消息,人不用来轻松拿电工证,关键就在这几个点上。 什么时候开始准备电工证考试最划算?…

📰

朝阳市电工证焊工证值不值得考?过期了别慌,教你如何复审延期

朝阳市电工证焊工证值不值得考?过期了别慌,教你如何复审延期 证书过期了不知道怎么复审延期?你不是一个人。很多人在拿到电工证或焊工证后,往往忽略了证书的复审时间,等到发现证书过期,才手忙脚乱地四处打听流程。尤其是在朝阳市,随着建筑、制造业等行…

📰

电工证都有什么部门的?千万别踩坑!实操考试心里没底怕挂科

电工证都有什么部门的?千万别踩坑!实操考试心里没底怕挂科 实操考试心里没底怕挂科,尤其是第一次考电工证的小伙伴,面对各种考试流程和部门,真得提前摸清楚。今天就来聊聊 电工证都有什么部门的 ,帮你避开那些 千万别踩坑…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬