2011-01-21 14 views
0

私は奇妙な問題を抱えています。GPS処理のNumberFormatException

GPSとセンサーの読み取り値を定期的に記録するプログラムを開発しています。私の友人は、Eclipse Galileo 3.6を使用して自分のマシン上でコードを実行し、それは完全にうまく動作します。

Eclipse Galileo 3.5.2がインストールされているマシンでコードを実行すると、サービスが予期せず停止したことが示されます。

私たちは同じJDKバージョンを持っています。私は正確な問題が何であるか把握することができません。

問題を解決するために必要な情報を教えてください。

logcat

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));

をdebあなたは実際に何が起こっているかを見ることができます。

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 - クール。すべての人が "これを行う"と "する"の指示があなたを落胆させないことを願っています。誰もがこのサイトを最大限に活用するのを手伝っているだけです。 –