별도의 스레드에서 GPS를 사용하여 현재 위치를 검색해야합니다. 다음 코드백그라운드 스레드에서 GPS 위치 지정을 시작하는 방법은 무엇입니까?
답변
GPS가 비동기 적으로 작동하므로 별도의 스레드를 호출 할 필요가 없습니다. GPS는 위치를 가져올 때 사용자 인터페이스를 고정시키지 않습니다. 가장 좋은 방법은 progressDialog를 사용하고 position을 얻은 후에 progressDialog를 닫을 수 있다는 것입니다.
연구,
public class LocListener implements LocationListener {
private static double lat =0.0;
private static double lon = 0.0;
private static double alt = 0.0;
private static double speed = 0.0;
public static double getLat()
{
return lat;
}
public static double getLon()
{
return lon;
}
public static double getAlt()
{
return alt;
}
public static double getSpeed()
{
return speed;
}
@Override
public void onLocationChanged(Location location)
{
lat = location.getLatitude();
lon = location.getLongitude();
alt = location.getAltitude();
speed = location.getSpeed();
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
지금 스레드에서 GPS를 시작하는이 코드를 사용합니다.
new Thread (new Runnable()
{
public void run()
{
locationManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
locationListener = new LocListener();
locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
}).start();
동일한 프로 시저를 사용했지만 오류가 발생했습니다. Looper.prepare()를 호출하지 않은 스레드 내부에서 처리기를 만들 수 없습니다. – DevAndroid
안녕 Arjun, 일부 코드 서식을 수정했습니다. 일부 공백을 제외하고는 아무 것도하지 않았습니다. 제대로 표시됩니다. –
@DevAndroid 귀하의 질문에 Logcat 오류를 게시하십시오. –
private void turnGPSOn(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
private void turnGPSOff(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){ //if gps is enabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
- 1. GPS 위성 수를 기반으로 위치 추적을 시작하는 방법은 무엇입니까?
- 2. 백그라운드 스레드에서 이미지를 미리로드하는 방법은 무엇입니까?
- 3. CSS에서 고정 위치 지정을 사용하는 방법은 무엇입니까?
- 4. 백그라운드 스레드에서 이벤트를 처리하는 방법은 무엇입니까?
- 5. LoadKeyboardLayout을 백그라운드 스레드에서 사용하는 방법은 무엇입니까?
- 6. 백그라운드 스레드에서 MKNetworkKit의 데이터를 처리하는 방법은 무엇입니까?
- 7. 백그라운드 스레드에서 이미지의 이미지를로드하는 방법은 무엇입니까?
- 8. 백그라운드 스레드에서 WebBrowser를 만들고 사용하는 방법은 무엇입니까?
- 9. macosx에서 백그라운드 프로세스를 시작하는 방법은 무엇입니까?
- 10. 위젯에서 백그라운드 활동을 시작하는 방법은 무엇입니까?
- 11. IE6 버기 위치 : 절대 위치 지정을 통한 고정 렌더링
- 12. 백그라운드 스레드에서 NSManagedObject에 액세스
- 13. Google지도에서 GPS 위치 찾기
- 14. "위치"배경 스레드에서 무엇을 할 수 있습니까?
- 15. GPS 위치 - 안드로이드
- 16. GPS 위치 정보 수정을 기다리는 가장 좋은 방법은 무엇입니까?
- 17. iPhone의 백그라운드 스레드에서 모달 경고
- 18. 백그라운드 스레드에서 인스턴스 변수에 액세스
- 19. 백그라운드 스레드에서 검색
- 20. 백그라운드 스레드에서 CFReadStreamClientCallBack
- 21. UIScrollview의 백그라운드 스레드에서 크래시
- 22. 백그라운드 스레드에서 호출하는 방법
- 23. 백그라운드 스레드에서 UIView 빌드하기
- 24. 백그라운드 스레드에서 LocalReport.Render를 호출합니다.
- 25. performSelectorInBackground : 백그라운드 스레드에서 호출
- 26. 절대/상대 위치 지정을 사용하지 않고 레이아웃을 달성하는 방법은 무엇입니까?
- 27. iOS의 상대 위치 지정을 자동으로 처리하는 방법은 무엇입니까?
- 28. Android에서 사진에 위치 정보 태그 지정을 지정하는 방법은 무엇입니까?
- 29. svg 경로 요소 위치 지정을 수정하는 방법은 무엇입니까?
- 30. 절대 위치 지정을 사용하여 JComponent에 구성 요소를 추가하는 방법은 무엇입니까?
시도해 보셨습니까? – BoltClock