を使用しCriteria.ACCURACY_COARSE
て場所を取得しますが、正確ではありません。GPSを使いたかったのですCriteria.ACCURACY_FINE
が、onLocationChanged(Location location)
メソッドが呼び出されません。
私はいくつかの調査をしましたが、その理由を理解できませんでした。
StackOverflowにも同様の質問がたくさんありますが、残念ながら、問題を解決する質問は見つかりませんでした。
以下は私のソースコードです:
private void locationInformationSettings(){
Criteria criteria= new Criteria();;
criteria.setAccuracy(Criteria.ACCURACY_FINE); //using Criteria.ACCURACY_COARSE works
//criteria.setPowerRequirement(Criteria.POWER_LOW);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String providername = locationManager.getBestProvider(criteria, true);
myLocationListener = new MyLocationListener();
locationManager.requestLocationUpdates(
providername, //LocationManager.GPS_PROVIDER,
Utils.MINIMUM_TIME_BETWEEN_UPDATES,
Utils.MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
myLocationListener
);
}
private class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
locLongitude = location.getLongitude();
locLatitude = location.getLatitude();
String message = String.format(
"New Location \n Longitude: %1$s \n Latitude: %2$s",
locLongitude, locLatitude);
Toast.makeText(RecordActivity.this, message, Toast.LENGTH_LONG).show();
Log.e(TAG, "Location information received:(" + locLongitude + "," + locLatitude +")");
locationManager.removeUpdates(myLocationListener);
}
public void onStatusChanged(String s, int i, Bundle b) {
Toast.makeText(RecordActivity.this, "Provider status changed",
Toast.LENGTH_LONG).show();
}
public void onProviderDisabled(String s) {
Toast.makeText(RecordActivity.this,
"Provider disabled by the user. GPS turned off",
Toast.LENGTH_LONG).show();
}
public void onProviderEnabled(String s) {
Toast.makeText(RecordActivity.this,
"Provider enabled by the user. GPS turned on",
Toast.LENGTH_LONG).show();
}
}
マニフェストファイルのアクセス許可:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
ネットワークプロバイダーの使用が機能し、GPSプロバイダーが機能しないのはなぜですか?
デバイスの設定でGPSサービスを確認し、Android4.3とAndroid2.3.3でテストしました。
前もって感謝します