안드로이드 개발 질문/답변
(글 수 45,052)
private void getLoc() {
locManger = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationThread = new Thread(new LocationThread());
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);// 정확도
criteria.setPowerRequirement(Criteria.POWER_LOW); // 전원 소비량
criteria.setAltitudeRequired(false); // 고도 사용여부
criteria.setBearingRequired(false); //
criteria.setSpeedRequired(false); // 속도
criteria.setCostAllowed(true); // 금전적비용
String provider = locManger.getBestProvider(criteria, true);
loc = locManger.getLastKnownLocation(provider);
gpsLatitude = (int) (loc.getLatitude() * 1E6);
gpsLongitude = (int) (loc.getLongitude() * 1E6);
Log.e("Location", "위도 : " + gpsLatitude + "경도 : " + gpsLongitude);
}
소스는 대략 이렇게 되고 있습니다.
gpsLatitude = (int) (loc.getLatitude() * 1E6);
gpsLongitude = (int) (loc.getLongitude() * 1E6);
이부분에서 애러가 잡혀 있구요
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.ActivityThread.access$600(ActivityThread.java:127)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.os.Handler.dispatchMessage(Handler.java:99)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.os.Looper.loop(Looper.java:137)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.ActivityThread.main(ActivityThread.java:4512)
06-28 11:47:39.302: E/AndroidRuntime(5325): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 11:47:39.302: E/AndroidRuntime(5325): at java.lang.reflect.Method.invoke(Method.java:511)
06-28 11:47:39.302: E/AndroidRuntime(5325): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
06-28 11:47:39.302: E/AndroidRuntime(5325): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
06-28 11:47:39.302: E/AndroidRuntime(5325): at dalvik.system.NativeStart.main(Native Method)
06-28 11:47:39.302: E/AndroidRuntime(5325): Caused by: java.lang.NullPointerException
06-28 11:47:39.302: E/AndroidRuntime(5325): at kr.re.kier.Main.getLoc(Main.java:418)
06-28 11:47:39.302: E/AndroidRuntime(5325): at kr.re.kier.Main.onCreate(Main.java:110)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.Activity.performCreate(Activity.java:4492)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
06-28 11:47:39.302: E/AndroidRuntime(5325): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
애러는 대충 이렇게 뜨고 있네요..
퍼미션 추가는 해 준 상태 입니다.
어제는 쓰레드를 써서 해 보라고 하신느분도 계셨는데요 쓰레드 처리를 해도 값을 가지고 오는 부분에서 애러가 나고 있습니다.
조언 부탁 드립니다




loc = locManger.getLastKnownLocation(provider);
요부분에서 loc 에 null 이 들어오는거 같고..위 가지고 오는 부분을 수정하셔야 할듯 하네요.
아래 부분엔
Log.d("값확인", loc);