2017-01-07 56 views
0

我有一個phonegap應用程序,現在正在對PlayStore進行alpha測試。 該聲音適用於大多數設備,但不適用於採用Android 4.x的三星設備。 我沒有找到問題或類似的問題。我做錯什麼了嗎?爲什麼phonegap應用程序不能在Android上使用Android 4在三星上播放聲音?

代碼https://github.com/goldfire/howler.js/tree/2.0

\t \t var sound = new Howl({ 
 
\t \t src: ['res/raw/warning.mp3'] 
 
\t \t }).play();

我的代碼與科爾多瓦 - 插件 - 媒體:

\t \t var src = "res/raw/warning.mp3"; 
 
\t \t // HTML5 Audio 
 
\t \t if (typeof Audio != "undefined") { 
 
\t \t \t new Audio(src).play() ; 
 

 
\t \t // Phonegap media 
 
\t \t } else if (typeof device != "undefined") { 
 

 
\t \t \t // Android needs the search path explicitly specified 
 
\t \t \t if (device.platform == 'Android') { 
 
\t \t \t \t src = '/android_asset/www/' + src; 
 
\t \t \t } 
 

 
\t \t \t var mediaRes = new Media(src, 
 
\t \t \t \t function onSuccess() { 
 
\t \t \t \t \t // release the media resource once finished playing 
 
\t \t \t \t \t mediaRes.release(); 
 
\t \t \t \t }, 
 
\t \t \t \t function onError(e){ 
 
\t \t \t \t \t alert("error playing sound: " + JSON.stringify(e)); 
 
\t \t \t \t }); 
 
\t \t \t mediaRes.play(); 
 

 
\t \t } else { 
 
\t \t \t alert("no sound API to play: " + src); 
 
\t \t }

任何人都知道問題的根源是什麼?

回答

0

這裏可能有幾件事情;理想情況下,你應該等待提示音是加載嘗試播放之前(吼試圖處理這一本身,但它並不總是奏效)

從他們的例子

var sound = new Howl({ 
    src: ['sound.webm', 'sound.mp3'] 
}); 

// Clear listener after first call. 
sound.once('load', function(){ 
    sound.play(); 
}); 

第二個問題可能是因爲它是一個較舊的Android設備,因此WebAudio的支持可能是粗略的。嘗試添加HTML5進入選項

var sound = new Howl({ 
    src: ['sound.webm', 'sound.mp3', 'sound.wav'], 
    html5 : true 
}); 

的最後一個問題可能是因爲很多移動設備需要用戶互動,纔可以播放聲音(認爲瀏覽器廠商不希望人們瀏覽到網站,並自動爲音樂開始玩!)。所以一旦聲音載入,請求用戶觸摸屏幕一次,然後在該觸摸事件上播放聲音。這應該從現在開始解鎖音頻。同樣,咆哮確實試圖做到這一點,但這也是你可能希望看到的。

+0

在屏幕上點擊是不可能的,因爲它的應用程序試圖檢測無意識。但我會嘗試其他tipps。謝謝! – Lilliput

+0

html5使它不能在Android5上工作,並且等待載入沒有改變任何東西:( – Lilliput

+0

改變爲cordova-plugin-media也沒有改變任何東西。再次沒有三星與Android 4的聲音 - 但在三星的Android 6更好! – Lilliput

相關問題