JoeDevPlayer 扩展
功能完整的音频播放器扩展:本地音乐与流媒体播放、前台服务灭屏不停播、通知栏媒体控制、播放列表、循环 / 随机 / 倍速 / 变调、睡眠定时器、耳机线控,并能读取歌曲元数据(标题 / 艺术家 / 专辑 / 年份等)。
下载
joejsanz.joedevplayer.aix(v1.6 Hybrid)
PlayerHybridVersion.aia - 原作者示例项目
基本信息
- 版本:
v1.6(Hybrid) - 发布时间:
2024-08-12(首发),v1.6 更新于2025-11-11 - JDK:
11 - 最低 API 级别:
21 - 构建方式:
FAST-CLI v5.2.0-premium - 体积:aix 约 2.1MB(内含 Media3 ExoPlayer 混合引擎);示例项目 PlayerHybridVersion.aia 约 2.2MB
双引擎说明(Hybrid)
v1.6 起内置两套播放引擎,按源自动选择:
- 流媒体(URL 含
hls/dash/streaming等特征、以rtmp:///rtsp://开头、以.m3u8/.mpd结尾)→ ExoPlayer(Media3),流播放带淡入效果 - 本地文件与其余 URL → MediaPlayer
当前使用的引擎可通过 CurrentPlayer 属性查询(ExoPlayer / MediaPlayer / None)。
支持格式:MP3、WAV、AAC、MIDI(.mid / .midi)、OGG、AMR-NB(.amr)、AMR-WB(.awb,视设备而定)、FLAC、3GP、M4A。
截图
通知栏播放控制(v1.5 起)

播放列表演示

GetMusicFiles 方法

MusicFilesRetrieved 事件(12 个列表)

SetPlaylist 事件

方法
- StartService启动前台服务()
- 启动前台播放服务(Foreground Service),播放期间显示通知,可避免灭屏或退到后台时被系统休眠机制中断播放。
- StopService停止前台服务()
- 停止前台播放服务。
- NotificationAlbumArt设置通知专辑封面(歌曲路径,无封面时使用的素材图片)
- 读取歌曲自带的封面显示在通知栏;若歌曲没有封面,则使用指定的素材图片。
- 歌曲路径:设备上歌曲的文件路径
- 无封面时使用的素材图片:素材(assets)中的图片文件名
- NotificationContent设置通知内容(标题,内容)
- 设置通知的标题与内容。此块可选,默认标题为 Playing,默认内容为 Audio playback in progress。
- Play播放()
- 播放当前媒体源。v1.6 起此块只负责播放,媒体源由
Source属性设置。 - Repeat设置循环模式(循环模式)
- 设置循环模式,参数用 RepeatMode 辅助块选择。
- 循环模式:repeatAll(列表循环)/ repeatOne(单曲循环)/ repeatOff(关闭循环)
- Shuffle随机播放()
- 切换到随机播放模式。
- Loop段落循环(开始时间,结束时间)
- 在 start 与 end(毫秒)之间的歌曲片段循环播放;调用 DisableLoop 之前不会停止。
- 开始时间:开始时间(毫秒)
- 结束时间:结束时间(毫秒)
- DisableLoop取消段落循环()
- 取消段落循环,歌曲继续正常播放。
- Previous上一首()
- 切换到上一首歌曲(随机播放模式下不适用)。
- Next下一首()
- 切换到下一首歌曲(随机播放模式下适用)。
- Pause暂停()
- 暂停播放。
- Stop停止()
- 停止播放。
- Resume继续播放()
- 从暂停处继续播放。
- Volume设置音量(左声道音量,右声道音量)
- 分别设置左右声道的音量,取值 0.0(静音)~ 1.0(最大),默认 0.5。
- GetMusicFiles扫描设备音乐(音频类型)
- 按类型扫描设备上的音频文件,结果通过 MusicFilesRetrieved 事件返回。
- 音频类型:用 AudioType 辅助块选择:MP3 / AAC / WAV / OGG / AMR / FLAC / MIDI / MP4 / M4A / MKA / All(全部)
- GetPlaylist获取播放列表()
- 获取播放列表中的歌曲列表。
- PlaybackSpeed设置播放速度(速度)
- 设置播放速度,推荐 0.5 ~ 2.0。
- Pitch调整音调(音调)
- 调整 MediaPlayer 引擎的播放音调,1.0 为正常音调。
- CurrentPosition获取当前进度()
- 获取当前播放位置(毫秒)。
- ConvertToMilliseconds转换为毫秒(时间)
- 把分秒形式表示的时间转换为毫秒数。
- ConvertToMinutesAndSeconds转换为分秒(毫秒)
- 把毫秒数转换为分秒格式。
- SeekTo跳转进度(位置)
- 跳转到指定位置(毫秒)。
- AlbumArt获取专辑封面(歌曲路径,无封面时使用的素材图片)
- 获取设备上歌曲的专辑封面并保存为文件;若歌曲没有封面则使用指定的素材图片。返回封面文件的路径。
- SongsCount获取歌曲总数()
- 获取播放列表中的歌曲总数。
- SleepTimer设置睡眠定时器(分钟)
- 设置睡眠定时器(单位:分钟)。
- CancelSleepTimer取消睡眠定时器()
- 取消睡眠定时器。
- IsSleepTimerActive睡眠定时器是否在计时()
- 检查睡眠定时器是否正在计时。
- FastForward快进(毫秒)
- 从当前位置快进指定毫秒数。
- Rewind快退(毫秒)
- 从当前位置回退指定毫秒数。
事件
- SourceLoaded媒体源加载完成时()
- 媒体源加载完成时触发。
- AudioFocusLost失去音频焦点时()
- 失去音频焦点时触发(如来电、其它应用抢占播放)。
- SetPlaylist播放列表播完时()
- 播放列表中的歌曲全部播放完毕时触发。
- MusicFilesRetrieved扫描完成时(文件路径,标题,艺术家,专辑,时长,音轨号,年份,流派,作曲家,文件大小,显示名,码率)
- GetMusicFiles 扫描完成时触发,12 个列表同序对应每首歌:文件路径、标题、艺术家、专辑、时长、音轨号、年份、流派、作曲家、文件大小、显示名、码率。
- MediaPlay通知栏点击播放时()
- 用户点击通知栏的播放按钮时触发。
- MediaPause通知栏点击暂停时()
- 用户点击通知栏的暂停按钮时触发。
- MediaStop通知栏点击停止时()
- 用户点击通知栏的停止按钮时触发。
- MediaNext通知栏点击下一首时()
- 用户点击通知栏的下一首按钮时触发。
- MediaPrevious通知栏点击上一首时()
- 用户点击通知栏的上一首按钮时触发。
- PlaybackComplete播放完成时()
- 当前歌曲播放完成时触发。
- SongIndexChanged歌曲索引变化时(新索引)
- 当前播放的歌曲索引变化时触发,返回新的索引。
- SleepTimerTick睡眠定时器计时中(剩余秒数)
- 睡眠定时器计时期间触发,返回剩余秒数。
- SleepTimerFinished睡眠定时器结束时()
- 睡眠定时器倒计时结束时触发。
- SleepTimerCancelled睡眠定时器取消时()
- 睡眠定时器被取消时触发。
- SeekPositionChanged播放位置跳转时(新位置)
- 播放位置发生跳转时触发,返回新位置(毫秒)。
- HeadsetButtonPressed耳机按键按下时(按键动作)
- 用户按下耳机上的物理按键时触发,返回按键动作(Play / Pause / Play_Pause / Stop / Next / Previous / Fast_Forward / Rewind / Call_Button)。
- HeadphonesConnected耳机插入时()
- 耳机插入设备时触发。
- HeadphonesDisconnected耳机拔出时()
- 耳机从设备拔出时触发(播放会自动暂停)。
属性
- Source媒体源
- 要播放的媒体源(URL 或文件路径)。只加载源,需调用 Play() 开始播放。v1.6 起可在设计器 / 积木中直接设置。
- CurrentPlayer当前引擎
- 当前使用的播放引擎:ExoPlayer / MediaPlayer / None(只读)。
- IsPlaying是否正在播放
- 检查当前是否正在播放(只读)。
- SongTitle歌曲标题
- 当前歌曲的标题(只读)。
- ArtistName艺术家
- 当前歌曲的艺术家(只读)。
- AlbumName专辑名
- 当前歌曲的专辑名(只读)。
- TrackNumber音轨号
- 当前歌曲在专辑中的音轨号(只读)。
- Year年份
- 当前歌曲的发行年份(只读)。
- Genre流派
- 当前歌曲的流派(只读)。
- Composer作曲家
- 当前歌曲的作曲家(只读)。
- Size文件大小
- 当前歌曲的文件大小(可读格式,如 3.5 MB,只读)。
- Duration时长
- 当前歌曲的时长(毫秒,只读)。
- AudioSessionId音频会话 ID
- 当前播放的音频会话 ID,可用于配置均衡器(Equalizer)等音频效果(只读)。
- CurrentSongIndex当前歌曲索引
- 当前歌曲在播放列表中的索引;没有歌曲时返回 0(只读)。
版本更新
v1.2(2025-08-30)
- 组件与方法改名、事件名去掉 On 前缀;删除 PlayFromAssets 等旧方法。
- 新增元数据属性:TrackNumber、Year、Genre、Composer、Size。
- aix 从 945KB 瘦身到 30.9KB。
v1.3(2025-10-23)
- 修复灭屏后停止播放的问题(配合前台服务)。
- 新增睡眠定时器:SleepTimer / CancelSleepTimer / IsSleepTimerActive 方法与 SleepTimerTick / SleepTimerFinished / SleepTimerCancelled 事件。
v1.4(2025-10-26)
- 新增 FastForward / Rewind 快进快退方法。
- 新增 SeekPositionChanged 事件与蓝牙耳机按键控制。
v1.5(2025-10-29)
- 新增通知栏播放控制:NotificationContent / NotificationAlbumArt 方法与 MediaPlay / MediaPause / MediaStop / MediaNext / MediaPrevious 事件。
- 耳机拔出时自动暂停播放。体积增至约 320KB。
v1.6 Hybrid(2025-11-11)
- 引入 Media3 v1.9.0-alpha01 的 ExoPlayer 作为流媒体混合引擎,按源自动判定并切换引擎(流播放带淡入)。
- Play 改为只负责播放,媒体源改由 Source 属性设置。体积增至约 2.1MB。
版权信息
本文档内容依据原作者发布页面整理翻译,版权归原作者所有。
- 原作者:Joe J. Sánchez(Joejsanz)
- 原始网址:https://community.appinventor.mit.edu/t/player-device-audio-loop-play-streaming/123673
- 发布日期:2024年8月12日
扫码添加客服咨询