2011-01-21 4 views
0

이상한 문제가 있습니다.GPS 처리의 NumberFormatException

GPS 및 센서 판독 값을 주기적으로 기록하는 프로그램을 개발 중입니다. 내 친구는 이클립스 갈릴레오 3.6을 사용하여 코드를 실행하고 완전히 잘 돌아 간다.

Eclipse Galileo 3.5.2가 설치된 컴퓨터에서 코드를 실행하면 예기치 않게 서비스가 중지 된 것으로 나타납니다.

동일한 JDK 버전이 있습니다. 나는 정확한 문제가 무엇인지 파악할 수 없다.

문제를 해결하기 위해 내가 제공해야하는 정보를 알려주십시오.

로그 캣

I/ActivityManager(1104): Start proc com.sensor.test for service com.sensor.test/.SensorReadings: pid=3539 uid=10057 gids={3003, 1015} 
D/AndroidRuntime(3539): Shutting down VM 
W/dalvikvm(3539): threadid=1: thread exiting with uncaught exception (group=0x4001d7e0) 
E/AndroidRuntime(3539): FATAL EXCEPTION: main 
E/AndroidRuntime(3539): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.BATTERY_CHANGED flg=0x60000000 (has extras) } in [email protected] 
E/AndroidRuntime(3539): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:905) 
E/AndroidRuntime(3539): at android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime(3539): at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(3539): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(3539): at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime(3539): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(3539): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(3539): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime(3539): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime(3539): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(3539): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(3539): at com.sensor.test.SensorReadings$2.onReceive(SensorReadings.java:327) 
E/AndroidRuntime(3539): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892) 
E/AndroidRuntime(3539): ... 9 more 
W/ActivityManager(1104): Activity destroy timeout for HistoryRecord{44b38508 com.sensor.test/.MainScreen} 
D/WifiService(1104): acquireWifiLockLocked: WifiLock{NetworkLocationProvider type=2 [email protected]} 
D/LocationMasfClient(1104): getNetworkLocation(): Location not found in cache, making network request 
D/LocationMasfClient(1104): getNetworkLocation(): Number of prefetched entries 10 
E/LocationMasfClient(1104): getNetworkLocation(): Returning *server* computed location with accuracy 28 
D/libgps (1104): GpsInterface_inject_location(35.772249, -78.673950, 28.000) 
D/WifiService(1104): releaseWifiLockLocked: WifiLock{NetworkLocationProvider type=2 [email protected]} 
D/WifiService(1104): acquireWifiLockLocked: WifiLock{NetworkLocationProvider type=2 [email protected]} 
D/WifiService(1104): releaseWifiLockLocked: WifiLock{NetworkLocationProvider type=2 [email protected]} 
D/NativeCrypto(1104): Freeing OpenSSL session 
D/dalvikvm(1104): GC_FOR_MALLOC freed 22104 objects/1169312 bytes in 128ms 
D/NativeCrypto(1104): Freeing OpenSSL session 
I/Process (3539): Sending signal. PID: 3539 SIG: 9 
W/InputManagerService(1104): Window already focused, ignoring focus gain of: [email protected] 
I/ActivityManager(1104): Process com.sensor.test (pid 3539) has died. 

구문 분석에가는 라인 (88)에 대한 관련 코드 :

public void startService(){ 
     //startService(new Intent(MainScreen.this,SensorReadings.class)); 
     Intent intent = new Intent(MainScreen.this, SensorReadings.class); 
     **intent.putExtra("lp", Integer.parseInt(""+longPeriod.getText()));// LINE 88** 
     intent.putExtra("gp", Integer.parseInt(""+gpsPeriod.getText())); 
     intent.putExtra("sp", Integer.parseInt(""+snrPeriod.getText())); 
     //startActivity(intent); 
     startService(intent); 
    } 

감사합니다. AG

+3

예기치 않게 서비스가 중단되면 logcat은 무엇을 말합니까? –

+1

또한 동일한 에뮬레이터를 사용하고 있습니까? 이것은 Eclipse 문제처럼 들리지 않습니다. – Matt

+0

모토 드로이드 폰을 사용하고 있습니다. – Glex

답변

0

""을 왜 사용하는지 알 수 없습니다. 대한

  • intent.putExtra("lp", Integer.parseInt(longPeriod.getText())); intent.putExtra("gp", Integer.parseInt(gpsPeriod.getText())); intent.putExtra("sp", Integer.parseInt(snrPeriod.getText()));

또는

  • String lp = longPeriod.getText();
    String gp = gpsPeriod.getText();
    String sp = snrPeriod.getText();
    intent.putExtra("lp", Integer.parseInt(lp)); intent.putExtra("gp", Integer.parseInt(gp)); intent.putExtra("sp", Integer.parseInt(sp));

두 번째 방법은 더 나은 : 그래서

이 중 하나는이 시도 문제가 있지 않은지 확인합니다 뎁 ugging ... 그래서 실제로 일어나는 것을 볼 수 있습니다.

1
E/AndroidRuntime(2934): java.lang.NumberFormatException: unable to parse '' as integer 
E/AndroidRuntime(2934): at java.lang.Integer.parseInt(Integer.java:412) 
E/AndroidRuntime(2934): at java.lang.Integer.parseInt(Integer.java:382) 
E/AndroidRuntime(2934): at com.sensor.test.MainScreen.startService(MainScreen.java:88) 

아마도 MainScreen.java 라인 (88)에, 당신의 startService 방법은 빈 문자열로 Integer.parseInt를 호출?

관련 코드를 표시 할 수 있습니까?

+0

@Glex - 질문을 편집하고이 코드를 포함하십시오. 4 칸을 사용하거나 코드를 강조 표시하고 형식 코드 버튼 ('{}) '을 클릭하십시오. –

+0

죄송합니다 Bert ... 사실 나는 코드의 잘못된 부분을 보여주었습니다. 질문에서 관련 코드를 가능한 빨리 업데이트 할 것입니다. – Glex

+0

@Glex - 차갑다. "모든 것을"하고 "하라"는 지시가 모든 사람에게서 당신을 낙담시키지 않기를 바랍니다. 모두가이 사이트를 최대한 활용할 수 있도록 돕기 위해 노력하고 있습니다. –