現象:HTML5 <audio> 標簽在瀏覽器正常播放,但在 PhoneGap/Cordova 模擬器/真機上無聲。原因:WebView 音頻管道受限、格式支持差、延遲高。
使用原生音頻通道,支持後台播放、混音、精確控制。
cordova plugin add cordova-plugin-media
// 原 HTML
// <audio id="buttonover"><source src="sounds/cartoon008.ogg"></audio>
// 新邏輯
var media = new Media('sounds/cartoon008.ogg',
function() { console.log('Play success'); }, // successCallback
function(err) { console.error('Play error', err); } // errorCallback
);
function playSound() {
media.play(); // 異步播放
}
// 可選:釋放資源
function cleanup() {
media.release();
}
| 項目 | 說明 |
|---|---|
| 文件路徑 | 相對 www/ 目錄,或用 cordova.file.applicationDirectory 拼接絕對路徑 |
| 格式兼容 | iOS 偏好 .caf/.mp3,Android 支持 .ogg/.mp3;建議同時提供多格式 |
| 併發播放 | 創建多個 Media 實例,各自管理 |
| 生命周期 | 頁面離開時調用 release() 防止內存洩漏 |
遊戲場景建議使用 cordova-plugin-nativeaudio 預加載音效到內存,實現毫秒級觸發:
Window.plugins.NativeAudio.preloadSimple('click', 'sounds/click.mp3', onSuccess, onError);
Window.plugins.NativeAudio.play('click');
<audio> 移動端不可靠,棄用。cordova-plugin-media 通用音樂/長音頻。cordova-plugin-nativeaudio 短音效/遊戲。選對工具,讓混合應用音頻體驗媲美原生。