2010-12-14 37 views
27

Tôi có một tệp .wav trong thư mục www của mình. Tôi đang sử dụng jQuery với mã sau đây. Các cảnh báo sẽ tắt nhưng âm thanh không phát. Tôi có làm điều gì sai?Phát âm thanh cục bộ trong điện thoại

<script type="text/javascript" charset="utf-8" src="phonegap-0.9.2.js"></script> 
<script type="text/javascript" charset="utf-8" src="jquery.js"></script> 


<script type="text/javascript" charset="utf-8"> 

$(document).ready(function() { 
    window.alert("READY!"); 
    document.addEventListener("deviceready", onDeviceReady, true); 

    function onDeviceReady(){ 
     window.alert("[email protected]!"); 
     var snd = new Media("test.wav"); 
     snd.play(); 
    } 
}); 

</script> 

Âm thanh không phát.

Trả lời

31

Hãy thử cung cấp đường dẫn cục bộ tuyệt đối. Ví dụ.

Phương tiện mới ("/ android_asset/www/test.wav");

Điều đó sẽ hoạt động trên Android. Hy vọng rằng họ sẽ sửa lỗi này trong PhoneGap, vì đó là một lỗi trong hỗ trợ thiết bị chéo.

+0

Cảm ơn bạn đã bit này của thông tin. Tôi không thể hiểu tại sao nó không hoạt động cho đến khi tôi nhìn thấy con đường. Tôi đã viết "/android_asset/polka.mp3" và các nội dung tương tự. – wavyGravy

+0

Còn iPhone thì sao? Có thư mục iphone_asset không? – Mark

+0

Làm cho nó trở thành một sự khác biệt nếu tôi sử dụng Phone Gap Build? –

48

Bạn có thể sử dụng window.location.pathname để nhận đường dẫn ứng dụng của mình trong bất kỳ ứng dụng PhoneGap nào. Bằng cách đó bạn không cần phải mã hóa nó cho Android. Nó sẽ giống như thế này trên iPhone:

/var/mobile/Applications/{GUID}/{appname}.app/www/index.html

Và đây trên Android:

/android_asset/www/index.html

Strip khỏi /index.html, hãy thêm file://, và thêm tập tin của bạn test.wav.

Demo: http://jsfiddle.net/ThinkingStiff/r7eay/

Code:

function getPhoneGapPath() { 

    var path = window.location.pathname; 
    path = path.substr(path, path.length - 10); 
    return 'file://' + path; 

}; 

var snd = new Media(getPhoneGapPath() + 'test.wav'); 
+1

Cảm ơn bạn đã cảm ơn vì điều này! Phonegap 3.0 vừa được phát hành và đây là STILL không có giấy tờ trong tất cả các địa điểm chính thức. – c0bra

+2

Câu trả lời này chấm dứt 2 ngày đau khổ. Cảm ơn bạn rất nhiều. – tomwoods

+2

Tôi đã thử bằng cách sử dụng hàm getPhoneGapPath() ở trên để lấy đường dẫn tệp cục bộ trong ios. Nhưng nó vẫn chưa được giải quyết. Vui lòng cho tôi ý tưởng về cách chỉ định đường dẫn tệp âm thanh cục bộ trong ios. – Sathiyaraj

0

Tôi có một phiên bản khác của getPhonegapPath, nó phát hiện khi you'r sử dụng Android:

function getPhoneGapPath() { 
    var path = window.location.pathname; 
    path = path.substr(path, path.length - 10); 
    var devicePlatform = device.platform; 
    if(devicePlatform=="Android"){ 
    path = 'file://'+path; 
    } 
    return path; 
}; 
Các vấn đề liên quan