私は、ユーザーの現在地に基づいて最も近い場所を取得するGPS Androidアプリケーションを構築しています。ロケーションフィックスを取得するのに長い時間待っているユーザーを停止するにはどうすればよいですか?
- チェックし、その後何もしない使用できない場合はどちらもGPSやネットワーク
- 利用可能な場合:
これは、私のアプリケーションが何をするかです。さもなければ、まずGPSがあるかどうかチェックし、そうでなければネットワークをチェックします。
- これらのうちの1つを使用した後、現在の場所を取得してサーバーに送信します。
- サーバーからデータを取得してUIを更新すると、さらに場所の更新を待機しなくなります。もう一度これを開始するリフレッシュボタンを押すまで、十分です。私はしたいと考えて何
:
GPSまたはネットワークが場所を取得するために失敗した場合、例えば、2分は、その後、我々は、プロバイダを切り替えます。ユーザーはあまりにも長く待たされることはありません。
また、両方のプロバイダを使用して、それから最も正確なものを取得することができればうれしいです。私はhttp://developer.android.com/guide/topics/location/strategies.htmlを見て、isBetterLocationメソッドを見た。このメソッドをアプリケーションにどのように統合すればよいですか?どのように、どこで、いつ呼び出されるべきかを理解するのが難しいです。私は、isBetterLocation()がネットワークとGPSの両方を同時に呼び出す必要があると仮定します。私のアプリケーションでは両方を正確に聞くのがいいでしょう。これはどうすればいいですか?そのうちの1つが利用できない場合はどうなりますか?
は、ここに私のコードの一部です:
if(!GPSEnabled && !networkEnabled)
{
Toast.makeText(this, "Error: This application requires a GPS or network connection",
Toast.LENGTH_SHORT).show();
}
else
{
if(GPSEnabled)
{
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
else if(networkEnabled)
{
System.out.println("Getting updates from network provider");
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
}
}
これはonLocationChanged
方法です。私はlat/lngの値を取得し、それらを私のサーバに送り、それから適切なものを実行します。
public void onLocationChanged(Location location)
{
//Get coordinates
double lat = (location.getLatitude());
double lng = (location.getLongitude());
Log.d("MainActivity", "got location: " + lat + ": " + lng);
//get nearest locations
new GetLocations().execute(SharedVariables.root + SharedVariables.locationsController + SharedVariables.getNearestMethod + lat + "/" + lng);
// Zoom in, animating the camera after the markers have been placed
map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 10));
System.out.println("lat = " + lat + ", lng = " + lng);
//Stop listening for updates. We only want to do this once.
locManager.removeUpdates(this);
}
あなたはこれを見ましたか?:http://android-developers.blogspot.com/2011/06/deep-dive-into-location.htmlプロトタイプのサンプルアプリですか?:https://code.google.com/p/android-protips-location/ –
ネットワークプロバイダが不正ですが、1秒未満で位置が返されます – Reno
こんにちはリノ、ありがとう。私はGPSとネットワークが正確さと速度の点で異なることを理解しています。これは私の質問に私をもたらします。どのプロバイダを利用できるかによって、プロバイダーの1つ、最も正確ですが、x時間後に修正が見つからない場合は、スイッチがオンになっている場合、ネットワークプロバイダに切り替えようとします。 –