質問

そのため、アプリケーションでGPS座標を1回だけサンプリングしようとしています。 LocationListenerオブジェクトを作成して、gpsの更新を常に取得したくありません。座標を受け取るまで待ってから、別のタスクに進みます。

ここにコードスニペットがあります

LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

エミュレータでは、loc変数は常にnullです。コマンド「ジオ修正緯度経度」を使用してみました;それを設定するために、DDMSの設定方法を使用してみました。どちらの方法もコードに影響を与えませんでした。また、スニペットは例外を引き起こしていません。

ご協力ありがとうございます。

役に立ちましたか?

解決

場所の更新を要求する呼び出しはブロックされないため、そこで待機することはありません。また、エミュレーターのプロバイダーが開始されていない可能性があります。

可能なチェックは、その設定がgpsプロバイダーを無効にするかどうかを確認することです。その後、ジオフィックスを送信します。

ただし、ロケーションリスナーを使用しますが、ジオフィックスをさらに進める必要があるため、これが理想的です。ロケーションリスナーは、ロケーションが変更されたときにLocationManagerから通知を受信するために使用されます。最初のジオフィックスの後にリスナーを登録解除できます。

注:デバイス上で現在の位置を取得するには時間がかかることがあり、デバイス上でもnullを返す場合があります。

他のヒント

MyLocationOverlay 、そのGPSロケーションで必要なことを実行する実行可能ファイルを作成し、それを渡します

boolean     runOnFirstFix(java.lang.Runnable runnable)
          Queues a runnable to be executed as soon as we have a location fix.

次に、MyLocationOverlayの場所の更新を無効にします。

編集:場所がnullである理由は、コードの実行時にジオフィックスが受信されていないためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top