Media

media 模块提供多媒体编程的支持。目前仅支持音乐播放和媒体文件扫描。后续会结合 UI 加入视频播放等功能。

需要注意是,使用该模块播放音乐时是在后台异步播放的,在脚本结束后会自动结束播放,因此可能需要插入诸如sleep()的语句来使脚本保持运行。例如:

//播放音乐
media.playMusic('/sdcard/1.mp3');
//让音乐播放完
sleep(media.getMusicDuration());

media.scanFile(path)

  • path <String> 媒体文件路径

扫描路径 path 的媒体文件,将它加入媒体库中;或者如果该文件以及被删除,则通知媒体库移除该文件。

媒体库包括相册、音乐库等,因此该函数可以用于把某个图片文件加入相册。

auto.waitFor();
//请求截图
if (!requestScreenCapture()) {
  toastLog('没有授予 Hamibot 屏幕截图权限');
  hamibot.exit();
}
sleep(1000);
//截图
var img = captureScreen();
var path = '/sdcard/screenshot.png';
//保存图片
img.saveTo(path);
//把图片加入相册
media.scanFile(path);
hamibot.exit();

media.playMusic(path[, volume, looping])

  • path <String> 音乐文件路径
  • volume <Number> 播放音量,为 0~1 的浮点数,默认为 1
  • looping <Boolean> 是否循环播放,如果 looping 为true则循环播放,默认为false

播放音乐文件 path。该函数不会显示任何音乐播放界面。如果文件不存在或者文件不是受支持的音乐格式,则抛出UncheckedIOException异常。

//播放音乐
media.playMusic('/sdcard/1.mp3');
//让音乐播放完
sleep(media.getMusicDuration());

如果要循环播放音乐,则使用 looping 参数:

//传递第三个参数为 true 以循环播放音乐 media.playMusic("/sdcard/1.mp3", 1, true); //等待三次播放的时间 sleep(media.getMusicDuration() * 3);

如果要使用音乐播放器播放音乐,调用app.viewFile(path)函数。

media.musicSeekTo(msec)

  • msec <Number> 毫秒数,表示音乐进度

把当前播放进度调整到时间 msec 的位置。如果当前没有在播放音乐,则调用函数没有任何效果。

例如,要把音乐调到 1 分钟的位置,为media.musicSeekTo(60 * 1000)

//播放音乐
media.playMusic('/sdcard/1.mp3');
//调整到30秒的位置
media.musicSeekTo(30 * 1000);
//等待音乐播放完成
sleep(media.getMusicDuration() - 30 * 1000);

media.pauseMusic()

暂停音乐播放。如果当前没有在播放音乐,则调用函数没有任何效果。

media.resumeMusic()

继续音乐播放。如果当前没有播放过音乐,则调用该函数没有任何效果。

media.stopMusic()

停止音乐播放。如果当前没有在播放音乐,则调用函数没有任何效果。

media.isMusicPlaying()

  • 返回 <Boolean>

返回当前是否正在播放音乐。

media.getMusicDuration()

  • 返回 <Number>

返回当前音乐的时长。单位毫秒。

media.getMusicCurrentPosition()

  • 返回 <Number>

返回当前音乐的播放进度(已经播放的时间),单位毫秒。