Android
Cordova

cordovaでGPS機能を導入した際に詰まった話

前置き

cordova-plugin-geolocationを導入して普通にGPSを利用しようとした際に動作確認で色々うまくいかなかった際のお話です。

現象

実際に起きた現象は以下です。

  1. Android4.4の実機で位置情報の取得に失敗した
  2. Androidエミュレータで位置情報の取得に失敗した

※ iOSでは問題なく確認できました。

何が行けなかったか

1. Android4.4の実機で取得できない問題

geolocationOptions
{ enableHighAccuracy: true };

currentPositionなどの関数の第3引数であるgeolocationOptionsに上記の条件でエラーが出ました。
enableHighAccuracyは使えないみたいで、falseにしたら取得できるようになりました。

2. Androidエミュレータで位置情報の取得に失敗した

エミュレータが悪いというより、擬似ロケーションのテストが失敗した話です。

AndroidManifest.xmlにパーミッションの追加

AndroidManifest.xml
   <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

cordova-plugin-geolocationにはACCESS_MOCK_LOCATIONは追加されないので、手動で追加が必要です。 

geolocationOptionsの変更

geolocationOptions
{ enableHighAccuracy: true };

エミュレータではenableHighAccuracyはtrueでないといけませんでした。

エミュレータで擬似ロケーションを有効にする

設定 > 開発向けオプション > 擬似ロケーションの有効

以上です。