cordova-plugin-media不能从本地URI播放

时间:2017-10-18 18:11:43

标签: javascript android cordova tabris-js

尝试从手机的外部存储设备播放音频文件。

通过this plugin首先找到特定mp3文件的URI。然后将其传递给cordova-plugin-media实例。

adb

我检查了incoming-operation: 'Call' on 'cordova.plugin' (o13) with method 'exec' with properties {action=create, arguments=["d39113d0-b5f5-bf2d-8a84-5afbbc6ae9a0","file:///storage/C67A-18F7/Music/demo/testSound.mp3"], callbackId=Media975330222} incoming-operation: 'Call' on 'cordova.plugin' (o13) with method 'exec' with properties {action=startPlayingAudio, arguments=["d39113d0-b5f5-bf2d-8a84-5afbbc6ae9a0","file:///storage/C67A-18F7/Music/demo/testSound.mp3",null], callbackId=INVALID} outgoing-operation: 'Notify' o13 of 'finish' with arguments {message=S01 Media975330222 s, status=1, keepCallback=false, callbackId=Media975330222} ExtMediaPlayer-JNI: env->IsInstanceOf fails MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0 ExtMediaPlayer-JNI: env->IsInstanceOf fails MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0 的日志。这就是我特意点击那些按钮 - http://paste.ubuntu.com/25767292/

sudo docker run -it -d --restart=always -p=0.0.0.0:9220:9222 -m 1G -v /tmp/chromedata/:/data alpeware/chrome-headless-trunk

1 个答案:

答案 0 :(得分:0)

1-安装此

https://play.google.com/store/apps/details?id=com.adobe.phonegap.app&hl=en

2-安装此

http://docs.phonegap.com/getting-started/1-install-phonegap/desktop/

3-将您的笔记本电脑和手机连接到同一网络

4-按照这个开始并在你的手机上运行它,我想你不会得到同样的错误,因为我的情况下,它不适用于浏览器或模拟器,如果手机间隙

<强>参考 https://phonegap.com/getstarted/

给予反馈,以便我可以在这里更新我的答案

HTML PART 对于音频src

        <audio id="successSound" src="/android_asset/www/audio/correct.mp3" type="audio/mpeg"></audio>
        <audio id="errorSound" src="/android_asset/www/audio/error.mp3" type="audio/mpeg" ></audio>
    </body>
</html>
我的版本的

示例,我希望有帮助

playAudio("errorSound");


var my_media = null;
var mediaTimer = null;

function playAudio(id) {
    var audioElement = document.getElementById(id);
    var src = audioElement.getAttribute('src');
    // Create Media object from src
    my_media = new Media(src, onSuccess, onError);

    // Play audio
    my_media.play();

    // Update my_media position every second
    if (mediaTimer == null) {
        mediaTimer = setInterval(function() {
            // get my_media position
            my_media.getCurrentPosition(
                // success callback
                function(position) {
                    if (position > -1) {
                        setAudioPosition((position) + " sec");
                    }
                },
                // error callback
                function(e) {
                    console.log("Error getting pos=" + e);
                    setAudioPosition("Error: " + e);
                }
            );
        }, 1000);
    }
}

function setAudioPosition(position) {
    document.getElementById('audio_position').innerHTML = position;
}


// onSuccess Callback
//
function onSuccess() {
}

// onError Callback
function onError(error) {
    switch(error.code){
        case MediaError.MEDIA_ERR_ABORTED:
        alert('MEDIA_ERR_ABORTED code: '    + error.code);
        break;
        case MediaError.MEDIA_ERR_NETWORK:
        alert('MEDIA_ERR_NETWORK code: '    + error.code);
        break;
        case MediaError.MEDIA_ERR_DECODE:
        alert('MEDIA_ERR_DECODE code: '    + error.code);
        break;
        case MediaError.MEDIA_ERR_NONE_SUPPORTED:
        alert('MEDIA_ERR_NONE_SUPPORTED code: '    + error.code);
        break;
    }
}