안녕하세요?
얼마전에 Android에 입문하여 매일 눈팅만 하다가 문제가 발생하여 여러 회원님들의 자문을 구하고자
이렇게 글 올립니다.
다름이 아니라 Google Map 관련 어플인 WhereAMI 프로그램을 작성하여 실행을 시켜 보았는데...
이 어플이 어떤 경우엔 잘 돌아가고 어떤 경우엔 아래 이미지와 같은 메세지와 함께 실행이 되질 않습니다.
정상적인 경우와 Error가 날 경우의 로그켓을 보니 "WhereAmI.java" 파일의 88번째 라인의
String provider = locationManager.getBestProvider(criteria, true);
문구에서 리터값이 "null" 또는 "GPS"에 따라 AndroidRuntime Exception 이 발생 하고 안하고 하는 것으로 보입니다.
이 문제에 대해서 해결 방법이 없을 려는지 답변 부탁 드리겠습니다.
그리고, 정상적으로 어플이 동작할 때 위치정보에 대한 갱신이 최대 2번 정도 밖에는 안되는 것으로 보이는데요...
다른 게시글을 찾아 보니 에뮬레이터 버그라는 말씀들이 있으시던데...
이 부분에 대해서 위치정보를 특정 텍스트 파일에 저장해 놓고 그 파일의 내용을 불러와 파싱하여 사용 할 수도
있을려는 지요? 이럴 경우 화면 갱신의 문제 등이 발생 하지는 않을려는지?
여러가지로 궁굼한 부분이 많네요....
제 개발 환경은 다음과 같습니다.
Java SE Development Kit 6u14 for Windows, Multi-language
Eclipse Platform Version: 3.4.2
Android 1.5 SDK r2
ADT_0_9_1 for Android 1.5 SDK
로그켓의 정보(어플 시작 부터 Force close 선택까지)는 아래를 참고 부탁 드립니다.
그럼 남은하루 즐겁게 보내시구요....
수고하세요...
감사합니다.
P.S 소스코드 첨부해 드립니다.
■ 로그켓 내용
07-22 09:29:35.107: DEBUG/AndroidRuntime(1076): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
07-22 09:29:35.107: DEBUG/AndroidRuntime(1076): CheckJNI is ON
07-22 09:29:35.276: DEBUG/AndroidRuntime(1076): --- registering native functions ---
07-22 09:29:35.286: INFO/jdwp(1076): received file descriptor 19 from ADB
07-22 09:29:35.846: INFO/ActivityManager(569): Starting activity: Intent { flags=0x10000000 comp={com.android.whereami/com.android.whereami.WhereAmI} }
07-22 09:29:35.898: DEBUG/AndroidRuntime(1076): Shutting down VM
07-22 09:29:35.898: DEBUG/dalvikvm(1076): DestroyJavaVM waiting for non-daemon threads to exit
07-22 09:29:35.937: INFO/ActivityManager(569): Start proc com.android.whereami for activity com.android.whereami/.WhereAmI: pid=1083 uid=10021 gids={3003}
07-22 09:29:35.947: DEBUG/dalvikvm(1076): DestroyJavaVM shutting VM down
07-22 09:29:35.947: DEBUG/dalvikvm(1076): HeapWorker thread shutting down
07-22 09:29:35.956: DEBUG/dalvikvm(1076): HeapWorker thread has shut down
07-22 09:29:35.956: DEBUG/jdwp(1076): JDWP shutting down net...
07-22 09:29:35.956: DEBUG/jdwp(1076): +++ peer disconnected
07-22 09:29:35.956: INFO/dalvikvm(1076): Debugger has detached; object registry had 1 entries
07-22 09:29:35.956: DEBUG/dalvikvm(1076): VM cleaning up
07-22 09:29:36.027: DEBUG/dalvikvm(1076): LinearAlloc 0x0 used 639228 of 4194304 (15%)
07-22 09:29:36.108: INFO/jdwp(1083): received file descriptor 10 from ADB
07-22 09:29:36.426: ERROR/ActivityThread(1083): Failed to find provider info for com.google.settings
07-22 09:29:36.586: DEBUG/WhereAmI(1083): ZoomLevel = 22
07-22 09:29:36.586: DEBUG/WhereAmI(1083): ZoomLevel = 13
07-22 09:29:36.676: DEBUG/LocationManager(1083): Constructor: service = android.location.ILocationManager$Stub$Proxy@437657f8
07-22 09:29:36.688: DEBUG/WhereAmI(1083): provider = null
07-22 09:29:36.697: DEBUG/AndroidRuntime(1083): Shutting down VM
07-22 09:29:36.697: WARN/dalvikvm(1083): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
07-22 09:29:36.697: ERROR/AndroidRuntime(1083): Uncaught handler: thread main exiting due to uncaught exception
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.whereami/com.android.whereami.WhereAmI}: java.lang.IllegalArgumentException: provider==null
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.os.Handler.dispatchMessage(Handler.java:99)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.os.Looper.loop(Looper.java:123)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.ActivityThread.main(ActivityThread.java:3948)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at java.lang.reflect.Method.invokeNative(Native Method)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at java.lang.reflect.Method.invoke(Method.java:521)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at dalvik.system.NativeStart.main(Native Method)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): Caused by: java.lang.IllegalArgumentException: provider==null
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.location.LocationManager.getLastKnownLocation(LocationManager.java:952)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at com.android.whereami.WhereAmI.onCreate(WhereAmI.java:91)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
07-22 09:29:36.706: ERROR/AndroidRuntime(1083): ... 11 more
07-22 09:29:36.727: INFO/Process(569): Sending signal. PID: 1083 SIG: 3
07-22 09:29:36.727: INFO/dalvikvm(1083): threadid=7: reacting to signal 3
07-22 09:29:36.737: INFO/dalvikvm(1083): Wrote stack trace to '/data/anr/traces.txt'
07-22 09:29:40.446: INFO/Process(1083): Sending signal. PID: 1083 SIG: 9
07-22 09:29:40.456: INFO/ActivityManager(569): Process com.android.whereami (pid 1083) has died.
07-22 09:29:40.637: WARN/InputManagerService(569): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43633688
즉 criteria.setAccuracy(Criteria.ACCURACY_FINE); 으로 하시고 (COARSE로 하면 에러남)
manifest xml 파일안의
"<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> " 으로 고치면 됨니다.
그리고 위치정보 갱신부분은 현재 SDK에서 Bug는 맞는것 같습니다.
http://javiercancela.com/2009/07/15/errores-emulando-el-gps-en-android/ 를 참조하세요 (에스파냐 사이트 인듯)