デバイスの場所を取得しようとしているので、クラスを作成しました
public class MainActivity extends Activity implements LocationListener
とメソッド
private Location getLocation(Context ctx) {
Location location = null;
LocationManager lm = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
List<String> providers = lm.getProviders(true);
for(int i=providers.size() - 1; i>=0; i--) {
lm.requestLocationUpdates(providers.get(i), 100, 1, MainActivity.this);
location = lm.getLastKnownLocation(providers.get(i));
if(location != null) {
Log.i("Used provider", providers.get(i));
break;
}
}
if(location != null) {
Log.i("Latitude", String.valueOf(location.getLatitude()));
Log.i("Longitude", String.valueOf(location.getLongitude()));
Log.i("Accuracy", String.valueOf(location.getAccuracy())+" m");
}
return location;
}
それは非常にうまく機能しますが、たとえ私が外にいても、常に GPS をスキップします。インターフェース LocationListener からオーバーライドされたすべてのメソッドを空のままにしておいたと言わざるを得ません。何か案が?私が使っているコードは大丈夫だと思いますか? どうもありがとうございました!
編集:返信ありがとうございますが、私のコードに何か問題があるはずです。ログを介して、デバイスが使用しているプロバイダーを確認できます。昨日は「パッシブ」を使用していて、位置は完璧 (26 m の精度) でしたが、今日はまだ「パッシブ」を使用していますが、精度は 2288 m で、信じられないほど悪いです! Google マップを使用して自分の位置を特定しようとすると、まったく問題ありません。何か不足していますか?