2011-12-28 67 views
5

嘗試使用PhoneGap創建初學者應用程序。我卡在這條線:Phonegap錯誤 - 「無法在Android上讀取未定義的屬性'捕獲'

navigator.device.capture.captureAudio(onSuccess, onError, {limits:1, duration:5});

它工作正常,在iOS上,但拋出的Android模擬器此錯誤:

無法讀取的不確定

財產 '捕獲'這裏是navigator對象,在出錯的時候(注意沒有device屬性會導致這個錯誤)

{ 
    "language": "en-US", 
    "product": "Gecko", 
    "mimeTypes": { 
     "length": 0 
    }, 
    "appVersion": "5.0 (Linux; U; Android 4.0.3; en-us; sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", 
    "plugins": { 
     "length": 0 
    }, 
    "onLine": true, 
    "connection": { 
     "type": 0 
    }, 
    "platform": "Linux armv7l", 
    "vendor": "Google Inc.", 
    "appCodeName": "Mozilla", 
    "geolocation": {}, 
    "cookieEnabled": true, 
    "appName": "Netscape", 
    "productSub": "20030107", 
    "userAgent": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", 
    "vendorSub": "" 
} 

而這裏的Phonegap.js加載剛過PhoneGap對象(注意,它說:device: true

{ 
    "commandQueue": [], 
    "commandQueueFlushing": false, 
    "_constructors": [ 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null, 
     null 
    ], 
    "documentEventHandler": {}, 
    "windowEventHandler": {}, 
    "resources": { 
     "base": true, 
     "debugconsole": true, 
     "position": true, 
     "acceleration": true, 
     "accelerometer": true, 
     "battery": true, 
     "camera": true, 
     "device": true, 
     "capture": true, 
     "contact": true, 
     "file": true, 
     "filetransfer": true, 
     "geolocation": true, 
     "compass": true, 
     "media": true, 
     "notification": true, 
     "orientation": true, 
     "sms": true, 
     "telephony": true, 
     "network": true, 
     "splashscreen": true 
    }, 
    "available": false, 
    "sessionKey": 0, 
    "callbackId": 0, 
    "callbacks": {}, 
    "callbackStatus": { 
     "NO_RESULT": 0, 
     "OK": 1, 
     "CLASS_NOT_FOUND_EXCEPTION": 2, 
     "ILLEGAL_ACCESS_EXCEPTION": 3, 
     "INSTANTIATION_EXCEPTION": 4, 
     "MALFORMED_URL_EXCEPTION": 5, 
     "IO_EXCEPTION": 6, 
     "INVALID_ACTION": 7, 
     "JSON_EXCEPTION": 8, 
     "ERROR": 9 
    }, 
    "mediaObjects": {} 
} 

任何想法如何讓過去呢?

+0

你能指向[PhoneGap的API]頁面(http://docs.phonegap.com/en/1.3.0/index.html)其中它描述了'navigator.device'對象以及PhoneGap如何增強它...? – 2011-12-28 15:38:07

+0

這是[這裏](http://docs.phonegap.com/en/1.3.0/phonegap_media_capture_capture.md.html#capture.captureAudio) – Mrchief 2011-12-28 16:41:36

+0

音頻捕獲功能應該在模擬器上可用嗎?在設備上測試並查看是否得到相同的結果 – sciritai 2011-12-28 21:04:10

回答

2

好的,這是我遇到過的最愚蠢的解決方案!

對於Android的JS是不同於比iOS的。這些文件的名稱相同 - phonegap-x.x.x.js。對於其他所有移動平臺來說,猜測它並不會有什麼不同。

我知道你需要針對不同的平臺有不同的JS,但如何提到某處?

一旦我從Android文件夾拖動JS,一切都落到了位置。

由於這個問題的答案:deviceready won't fire in Phonegap 1.0.0 on Android

+0

我只是浪費了30分鐘的時間,然後找到了這篇文章。多麼愚蠢:)謝謝! – 2012-01-11 19:32:42

0

您的www目錄中的phonegap.js文件名與index.html參考文件是否匹配?一旦我將phonegap.js更改爲phonegap-1.3.0.js,the API docs的完整示例就會在我的HTC evo上運行

+0

是的。此外,它適用於iOS(iOS和Android版本之間無需更改代碼)。 – Mrchief 2011-12-28 18:30:16

+0

也許你應該發佈一個演示問題的HTML文件 – 2011-12-28 20:53:46

+0

你可以拿他們的hello world例子,複製這一行來觸發按鈕點擊,你會看到問題。 – Mrchief 2011-12-29 14:52:37

相關問題