2017-01-19 4 views
1

私のアプリは地図を特長としており、ユーザーが地図を長押しすると地図上に現在の電話機の位置が表示されます。 @Chen advisedのように、私の場合にはgetCurrentLocation()が適切なメソッドであるようです。 LocationListenerを使用したくないのは、ユーザーが自分の位置を更新したいときに制御できるようにしたいからです。getCurrentLocationメソッド(Codename One Location Manager)を中断するにはどうすればよいですか?

また、@ Shai-Almog discouraged location pollingのため、このマニュアルロケーションアップデートを選択しました。現在の携帯電話の場所を取得するには、以下の記述されたように、このpostを読んだ後、私は最初の20秒のタイムアウトを設定します。

   Dialog ip = new InfiniteProgress().showInifiniteBlocking(); 
       Location currentLocation = locationManager.getCurrentLocationSync(
         ParametresGeneraux.LOCATION_TIMEOUT_MILLI); 
       // We try to get something 
       if (currentLocation == null) { 
        currentLocation = locationManager.getLastKnownLocation(); 
       } 
       ip.dispose(); 

をしかし、私はカウントされませんでした(それが十分ではなかったし、最後の既知の場所は「常に」提供されましたたぶん5回連続で)小さな位置アイコンがツールバーに表示されました。だから、私はそれを40秒に設定しましたが、実際の現在地はこれより2倍の時間がかかっていませんでした(2km以上離れた最後の場所が提供されました)。

AndroidでGoogleマップ(KitKat)を起動すると、その場所が瞬時に正確に表示されます。私のアプリに戻ってマップを押すと、現在の場所が見つかります。実際に私はpost Google MapsとAndroid APIの間の精度の違いを扱っているが、EU(フランス)ではなくShangai/Chinaに関連していた。

したがって、私の質問は2つあり:

  1. 最初にどのようにGoogleマップとコードネームの一つとの間で同じデバイス上のような巨大な違いがあることができますか?

  2. タイムアウトをgetCurrentLocation()に設定しないと、ユーザーが待機しているときにどのように検索を中断できますか? Googleマップの位置情報サービスがオンになっている場合

感謝すべてのヘルプ、

BR

答えて

1

インスタント場所が動作します。 android.playServiceビルドヒントの1つを有効または無効にした場合は、android.playService.location=trueも有効にしてマップで使用される高速ロケーションサービスを取得する必要があります。

+0

おかげさまで@Shaiありがとうございました!android.playService.location = trueをビルドヒントに追加すると、現在の場所がより速く表示されます([CN1ブログの詳細](https://www.codenameone.com/blog/)。 a-thanks-on-important-update-on-android-builds.html)を参照してください)。これまでのところ、それでもまだ正確ではありませんが、Googleマップはどちらも動作しませんので比較できません。ところであなたは私の他の[質問]を見ましたか(http://stackoverflow.com/questions/41695584/buttons-in-codename-one-form-inactive-on-android-actual-device-but-work-under- si)? – HelloWorld

+0

私はその質問を忘れました。最初にタグを付けるのを忘れましたか? –

+0

いいえ、私は忘れていない、あなたはいつもすぐに答えるので、ちょうど驚いた。とにかく答えてくれてありがとう! – HelloWorld

関連する問題