私はあなたがそれを開いたときにあなたの場所を取得するアプリを実装しています。アクティビティが作成されたときにのみ取得されるため、は必要ありませんLocationListener
。2つの実際のデバイスでテストしています。
まず、を使用して場所を取得しようとしますGPS_PROVIDER
。結果がNULLの場合、を使用しますNETWORK_PROVIDER
。私は建物の中でそれをテストしているので、GPSプロバイダーを使用して位置を取得することはできないと予想されます。
デバイスの1つで、使用している場所GPS_PROVIDER
はNULLであり、NETWORK_PROVIDER
は正しい場所を返します。しかし、他のデバイスでは、GPS_PROVIDERを使用している場所はNULLではありませんが、間違っています(現在の都市とは別の都市にあります!)。これは私が使用しているコードです:
private void getPosition() {
locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
myloc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(myloc == null)
myloc = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(myloc != null){
Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try{
List<Address> addresses = geoCoder.getFromLocation(myloc.getLatitude(), myloc.getLongitude(), 1);
if(addresses.size()>0){
String add = "";
for(int i=0; i<addresses.get(0).getMaxAddressLineIndex(); i++)
add += addresses.get(0).getAddressLine(i)+"\n";
placeEdit.setText(add);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
GPSプロバイダーから返された場所が間違っていることをどのように知ることができますか?最初にネットワークプロバイダーを調べ、それがnullの場合はGPSを使用する必要がありますか?このアプリは屋外で使用することになっているので、より正確なので、最初にGPSを使用したいと思います。
ありがとう!