Ionic / Cordova应用程序在模拟器中播放声音但在Android设备上播放声音

时间:2014-09-19 00:56:54

标签: android cordova audio ionic-framework

我是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执行此操作。

1 个答案:

答案 0 :(得分:2)

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

  

/ android_asset /网络/

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

.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();
        }
    }])