Criteria.ACCURACY_COARSE
를 사용하여 위치를 얻지 만 정확하지 않습니다. GPS Criteria.ACCURACY_FINE
을 사용하려고했지만 onLocationChanged(Location location)
메서드가 호출되지 않았습니다.
몇 가지 조사를했지만 왜 그럴 수 없었습니다.
StackOverflow에 비슷한 질문이 많이 있지만 불행히도 내 문제를 해결할 수있는 항목을 찾을 수 없습니다.GPS로부터 현재 위치 얻기
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 서비스를 확인하고 Android 4.3 및 Android 2.3.3에서 테스트했습니다.
미리 감사드립니다.
대신 기준 대신 LocationManager.GPS_PROVIDER를 사용하여 위치 업데이트를 요청한 다음 먼저 작동하는지 확인하십시오. –
@HoanNguyen 주석에서 알 수 있듯이 시도했지만 작동하지 않았습니다. –
GPS 위치를 획득하는 것이 즉각적인 것은 아닙니다. 상단 트레이에서 수정 프로그램을 가져 오려고 GPS 아이콘이 표시되어야합니다. –