2016-04-11 15 views
0

Phonegapでオーディオファイルを再生する際に大きな問題が発生しました。私は最初、1年前にイオンでアプリを作りましたが、すべてうまくいっていました。私は、cordova、android sdk、ionicなどの新しくインストールされたバージョンで、再びアプリケーションをコンパイルしました。コードはまだ同じです。不幸にも、サウンドはもう再生されていません。私はイオンコミュニティでチケットを開いたが、答えは得られなかった。私は、イオンがあまり発達していないことを知り、突然ベータテストから外れたときに、月に一度の費用がかかります。 AdobeがCreative Suiteを所有しているので、私はPhonegapに行くことにしました。Phonegapで動作するメディアを取得できません

「Hello-World」の例に基づいて非常に単純なアプリケーションでテストしています。私はcordovaのメディアプラグインをインストールしました。 config.xml内とのAndroidManifest.xmlでそのregisterd

私のjsファイル:

var app = { 
// Application Constructor 
initialize: function() { 
    this.bindEvents(); 
}, 
// Bind Event Listeners 
// 
// Bind any events that are required on startup. Common events are: 
// 'load', 'deviceready', 'offline', and 'online'. 
bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
}, 
// deviceready Event Handler 
// 
// The scope of 'this' is the event. In order to call the 'receivedEvent' 
// function, we must explicitly call 'app.receivedEvent(...);' 
onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    var src = "android_asset/www/audio/01_Uebersicht_Heimatmuseum_maxim.mp3"; 

    function playAudio(url) { 
    // Play the audio file at url 
    var my_media = new Media(url, 
    // success callback 
    function() { 
     alert("playAudio():Audio Success"); 
    }, 
    // error callback 
    function (err) { 
     alert("playAudio():Audio Error: " + err); 
    } 
); 
// Play audio 
my_media.play(); 
} 


}, 


// Update DOM on a Received Event 
receivedEvent: function(id) { 
    var parentElement = document.getElementById(id); 
    var listeningElement = parentElement.querySelector('.listening'); 
    var receivedElement = parentElement.querySelector('.received'); 

    listeningElement.setAttribute('style', 'display:none;'); 
    receivedElement.setAttribute('style', 'display:block;'); 

    console.log('Received Event: ' + id); 
} 
}; 

ない音が再生され、私のアラートがトリガーアレント。

誰かが私を助けることを望みます。 おかげ

答えて

0

あなたのコードでは三つの問題があります:あなたのコードで

  1. は、あなたはアプリのオブジェクトを定義しますが、初期化関数を呼び出していません。したがって、関数は決して起動しません。修正:コードの末尾にapp.initialize()を追加します。

  2. playAudio(url)関数もコード内で呼び出されません。修正:を末尾にonDeviceReady(以下のコードを参照)に追加します。

  3. あなたのmp3ファイルのURLがfile:///部分を欠場しています。あなたのアンドロイドデバイスのファイルにアクセスするには、あなたのURLの先頭に常にfile:///を追加する必要があります。ここで

コードです:AudioSample(私はVS2015でそれを作成したので、それはVSでそれを開くのがベストです)

var app = { 
// Application Constructor 
initialize: function() { 
    this.bindEvents(); 
}, 
// Bind Event Listeners 
// 
// Bind any events that are required on startup. Common events are: 
// 'load', 'deviceready', 'offline', and 'online'. 
bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
}, 
// deviceready Event Handler 
// 
// The scope of 'this' is the event. In order to call the 'receivedEvent' 
// function, we must explicitly call 'app.receivedEvent(...);' 
onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 
    var src = "file:///android_asset/www/Assets/Let_It_Go.mp3"; 
    function playAudio(url) { 
     // Play the audio file at url 
     var my_media = new Media(url, 
     // success callback 
     function() { 
      alert("playAudio():Audio Success"); 
     }, 
     // error callback 
     function (err) { 
      alert("playAudio():Audio Error: " + err); 
     } 
    ); 
     // Play audio 
     my_media.play(); 
    } 

    playAudio(src); 

}, 


// Update DOM on a Received Event 
receivedEvent: function (id) { 
    var parentElement = document.getElementById(id); 
    var listeningElement = parentElement.querySelector('.listening'); 
    var receivedElement = parentElement.querySelector('.received'); 

    listeningElement.setAttribute('style', 'display:none;'); 
    receivedElement.setAttribute('style', 'display:block;'); 

    console.log('Received Event: ' + id); 
} 
}; 

app.initialize(); 

そして、ここでは、この完全なデモへのリンクです

関連する問題