【问题标题】:Ionic/Cordova app plays sound in emulator but not on Android deviceIonic/Cordova 应用程序在模拟器中播放声音,但不在 Android 设备上
【发布时间】:2014-09-19 00:56:53
【问题描述】:

我是 Ionic 和 Cordova 的新手,所以我确定我缺少一些基本的东西,但我的问题是打包的 APK 无法在 Android 设备上播放声音。我可以使用以下代码在 Ripple 模拟器中播放声音:

.controller('MainCtrl', ['$scope', function ($scope) {
        $scope.playStartBell = function () {
            var media = new Media('media/startBell.mp3', function () {
                console.log('good');
            }, function (err) {
                console.log('bad: ', err);
            });
            media.play();
        },
            $scope.playStopBell = function () {
            var media = new Media('media/stopBell.mp3', function () {
                console.log('good');
            }, function (err) {
                console.log('bad: ', err);
            });
            media.play();
        }
    }])

我使用 Cordova 安装了媒体插件:$cordova plugin add org.apache.cordova.media

根据this SO post,需要将一个值添加到 config.xml,但我不确定如何为 Ionic/Cordova 正确执行此操作。

【问题讨论】:

  • 您可能需要考虑在这些函数之外创建 Media 对象,以便您可以缓存它们,而不是在每次执行时重新创建它们。
  • 谢谢@RaymondCamden 你能为我的推荐指明正确的方向吗?我正在考虑将此代码移动到将在需要时注入的服务中。这段代码只是我在框架中弄脏了自己的手。
  • 我什至没有想到服务,只是将 var x = new Media() 行移动到控制器的开头,然后在函数中访问 x(使用更好的名称;)。

标签: android cordova audio ionic-framework


【解决方案1】:

原来您已经指定了以 /android_asset/www 前缀开头的路径,如下所示:

/android_asset/www/

因此将我的代码更改为以下代码有效。请注意,您需要检测正在运行的设备以确定合适的位置。

.controller('MainCtrl', ['$scope', function ($scope) {
        ///android_asset/www/
        $scope.playStartBell = function () {
            var media = new Media('/android_asset/www/media/startBell.mp3', function () {
                console.log('good');
            }, function (err) {
                console.log('bad: ', err);
            });
            media.play();
        },
            $scope.playStopBell = function () {
            var media = new Media('/android_asset/www/media/stopBell.mp3', function () {
                console.log('good');
            }, function (err) {
                console.log('bad: ', err);
            });
            media.play();
        }
    }])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2015-01-27
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多