1

PhoneGap ドキュメント ( http://docs.phonegap.com/en/2.3.0/cordova_media_media.md.html#media.play ) のこのコードを使用して、オーディオ ファイルを再生しています。

    // Audio player
    //
    var my_media = null;
    var mediaTimer = null;

    // Play audio
    //
    function playAudio(src) {
        if (my_media == null) {
            // Create Media object from src
            my_media = new Media(src, onSuccess, onError);
        } // else play current audio
        // Play audio
        my_media.play();

    // Stop audio
    // 
    function stopAudio() {
        if (my_media) {
            my_media.stop();
        }
        clearInterval(mediaTimer);
        mediaTimer = null;
    }

onclick イベントでオーディオを再生できます。

playAudio(' http://example.com/file.mp3 ');

そしてそれを止めてください:

stopAudio();

それは正常に機能していますが、複数のストリームを再生し、パラメーター「名前」でそれらを制御したいと考えています。

だから私は自分のコードを変更しました:

    // Audio player
    //
    var my_media = null;
    var mediaTimer = null;

    // Play audio
    //
    function playAudio(name,src) {
        if (my_media == null) {
            // Create Media object from src
            my_media = new Media(name, src, onSuccess, onError);
        } // else play current audio
        // Play audio
        my_media.play(name);

    // Stop audio
    // 
    function stopAudio(name) {
        if (my_media) {
            my_media.stop(name);
        }
        clearInterval(mediaTimer);
        mediaTimer = null;
    }

// ファイル 1 の再生と停止: playAudio('file1',' http://example.com/file.mp3 ');

stopAudio('file1');

// ファイル 2 の再生と停止:

playAudio('file2',' http://example.com/file2.mp3 ');

stopAudio('file2');


私が受け取っているのはアプリケーションのクラッシュだけです。PhoneGap で複数のメディア ファイルを再生した経験のある人はいますか?

ありがとう!

4

3 に答える 3

2

Cordova 2.3 ドキュメントに基づく:

メディア オブジェクト コンストラクターは、最初のパラメーターが「src」であることを想定していますが、それを使用してプレーヤーがメディアの名前を設定し、ユーザーの名前をメディア ソースとして扱い、メディア ファイルへのパスとして「file1」を使用しようとしています。

追加: phonegap メディアの play() および stop() メソッドはパラメーターを想定していないため、これらのメソッド呼び出しで指定した名前は無視されます

各行の最初の要素が名前で、2 番目の要素が Media オブジェクトであるメディア プレーヤーの 2 次元配列を作成してみてください。playAudio および stopAudio 関数よりも、名前で配列をスキャンし、正しいオブジェクトで play() および stop() メソッドを呼び出します

以下のコードをコピーして貼り付ける前に、phonegap で複数のオーディオ ファイルを再生できるかどうか、まったく確信が持てないことを覚えておいてください。モバイルサファリオーディオ要素ではサポートされていないことを知っています: http://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Using_HTML5_Audio_Video.pdf#page21

var my_medias = new Array();
...
playAudio(name,arc){
    var createnew = true;
    for(var i=0;i<my_medias.length;I++){
        if(my_medias[0]==name){
            my_medias[1].play();
            createnew=false;
        }
    }
    if(createnew){
        my_medias.push([name,new Media(src,onError,onSuccess)]);
    }
}

stopAudio(name){
    for(var i=0;i<my_medias.length;I++){
        if(my_medias[0]==name){
            my_medias[1].stop();
        }
    }
...

}
于 2013-02-03T15:21:16.373 に答える
0

あなたは付け加えられます

window.location.reload();

stopAudio()、遊ぶお仕事ですmultiple audio

function stopAudio() {
    if (my_media) {
        my_media.stop();
        window.location.reload();
    }
    clearInterval(mediaTimer);
    mediaTimer = null;
}
于 2016-08-16T05:08:35.797 に答える