android - 如何播放 Ionic2 附带的音频

标签 android ionic-framework ionic2

我正在开发一个应用程序,我需要将一些音频文件放入 /src/assets 文件夹中,并在点击按钮时播放它们。

我使用 native 媒体对象如下:

import { MediaPlugin, MediaObject } from '@ionic-native/media';

 constructor(public navCtrl: NavController, public navParams: NavParams,
    public media: MediaPlugin) {

  }

listenAudio() {
    const onStatusUpdate = (status) => console.log(status);
    this.media.create('assets/audio/sample.mp3', onStatusUpdate)
        file.play();
      })

  }

点击按钮时将调用 listenAudio() 函数。

音频根本无法播放!!

有什么理由吗?

最佳答案

我昨天遇到了同样的问题(刚刚开始使用 Ionic)。经过一番尝试和错误后,我终于得到了以下内容来处理保存在 src/assets/mp3/sample.mp3 中的 MP3 文件:

let filepath: string = 'assets/mp3/sample.mp3';

// The filepath needs to be a URL for Android
if(this.platform.is('android')) {
  filepath = 'file:///android_asset/www/assets/mp3/sample.mp3';
}

this.media.create(filepath, onStatusUpdate).then((file: MediaObject)) => {
  file.play();
})
.catch(e => console.log('Error opening media file', e));

我发现的其他一些问题:

  • 如果音频文件的路径不正确(例如音频文件不存在),我希望 catch() block 运行,但代码会默默失败。

  • 音频文件无法在 Android 模拟器(运行 Android 6.0)上播放,但可以在真实设备上播放。

关于android - 如何播放 Ionic2 附带的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314337/

相关文章:

java - 对多项 Activity 进行计时

java - 如何将默认的snackbar动画更改为 "Top-to-button"?

android - 如何从 Retrofit2 调用 OnResponse 返回 Java 对象

angular - 如何在 Ionic 4 中使用 ion-input 修复 *ngFor 的 ExpressionChangedAfterItHasBeenCheckedError

angular - 使用angular在HTTP调用中获取表单数据

image - 在 TypeScript 中设置图像源

angular - 具有自定义内容的 ionic 无限滚动

android - 是否可以从Android获取不带后缀的versionName?

android - ionic 电话应用程序。设置在重启后仍然存在的警报。闹钟响起时打开应用程序

angular - 使用angular提交后如何获取所选 ionic 单选按钮的值