android4.0.4とPhonegap1.9でジオロケーションを使用しようとしています。http://docs.phonegap.com/en/1.9.0/cordova_geolocation_geolocation.md.html#Geolocationの最初の例を試しました
AndroidManifest.xmlとplugins.xmlに行を追加しました。私はGPSを有効にし、グーグルマップでその動作をしました。しかし、銀河のネクサスでPhonegapを使用してhtmlファイルを開始すると、「ジオロケーションを検索しています...」と表示され、何も実行されません。
これが完全なLogcat出力です。
07-17 10:13:08.296: D/CordovaWebView(7612): >>> loadUrlNow()
07-17 10:13:18.984: D/CordovaWebView(7612): >>> loadUrlNow()
07-17 10:13:19.132: D/OpenGLRenderer(7612): Flushing caches (mode 0)
07-17 10:13:19.179: D/OpenGLRenderer(7612): Flushing caches (mode 1)
07-17 10:13:33.984: I/CordovaLog(7800): Changing log level to DEBUG(3)
07-17 10:13:33.984: I/CordovaLog(7800): Found preference for useBrowserHistory=false
07-17 10:13:33.984: D/CordovaLog(7800): Found preference for useBrowserHistory=false
07-17 10:13:33.984: D/DroidGap(7800): DroidGap.init()
07-17 10:13:33.991: D/CordovaWebView(7800): >>> loadUrl
(file:///android_asset/www/geolocation.html)
07-17 10:13:33.991: D/PluginManager(7800): init()
07-17 10:13:33.991: D/CordovaWebView(7800): >>> loadUrlNow()
07-17 10:13:34.023: D/DroidGap(7800): onMessage(onPageStarted,file:///android_asset/www/geolocation.html)
07-17 10:13:34.023: D/SoftKeyboardDetect(7800): Ignore this event
07-17 10:13:34.046: D/libEGL(7800): loaded /system/lib/egl/libGLES_android.so
07-17 10:13:34.046: D/libEGL(7800): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
07-17 10:13:34.054: D/libEGL(7800): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
07-17 10:13:34.070: D/libEGL(7800): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
07-17 10:13:34.140: D/dalvikvm(7800): GC_CONCURRENT freed 139K, 2% free 12959K/13191K, paused 3ms+2ms
07-17 10:13:34.210: D/OpenGLRenderer(7800): Enabling debug mode 0
07-17 10:13:34.210: D/SoftKeyboardDetect(7800): Ignore this event
07-17 10:13:34.390: D/Cordova(7800): onPageFinished(file:///android_asset/www/geolocation.html)
07-17 10:13:34.390: D/CordovaWebView(7800): >>> loadUrlNow()
07-17 10:13:34.390: D/DroidGap(7800): onMessage(onNativeReady,null)
07-17 10:13:34.390: D/DroidGap(7800): onMessage(onPageFinished,file:///android_asset/www/geolocation.html)
07-17 10:13:34.398: I/SqliteDatabaseCpp(7800): sqlite returned: error code = 14, msg = cannot open file at line 27701 of [8609a15dfa], db=/data/data/de.xxxx.ble.html5/databases/webview.db
07-17 10:13:34.398: I/SqliteDatabaseCpp(7800): sqlite returned: error code = 14, msg = os_unix.c: open() at line 27701 - "" errno=2 path=/CachedGeoposition.db, db=/data/data/de.xxxx.ble.html5/databases/webview.db
07-17 10:13:34.413: D/DroidGap(7800): onMessage(networkconnection,3g)
07-17 10:13:36.398: D/DroidGap(7800): onMessage(spinner,stop)
onDeviceReady()関数に入りましたが、onSuccessもonErrorも呼び出さないと思います。
それが私のコードです:
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
// onSuccess Geolocation
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude
+ '<br />' +
'Longitude: ' +
position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp
+ '<br />';
}
// onError Callback receives a PositionError object
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
</body>
</html>
更新:コードがInternet Explorer 9で機能していることを発見しましたが、GalaxyNexusのAndroid4.0.4ではFirefoxベータ版またはChromeでは機能しません。Phonegapを使用したAndroidパッケージとしては機能せず、通常のhtml5ページとしても機能しません。IPhone4Sでそれは働いています!
何が問題なのか、何かアイデアがあれば教えてください!
ありがとう!