我的应用程序使用接近传感器在应用程序的主 Activity 上打开/关闭屏幕。这工作正常,但是我收到了来自 HTC One S 用户的崩溃报告:
08-23 11:25:04.754 E/AndroidRuntime(30499): 致命异常: main 08-23 11:25:04.754 E/AndroidRuntime(30499): java.lang.NumberFormatException: Invalid int: "38,654,705,664" 08-23 11 :25:04.754 E/AndroidRuntime(30499): at java.lang.Integer.invalidInt(Integer.java:138) 08-23 11:25:04.754 E/AndroidRuntime(30499): at java.lang.Integer.parse( Integer.java:375) 08-23 11:25:04.754 E/AndroidRuntime(30499): 在 java.lang.Integer.decode(Integer.java:188) 08-23 11:25:04.754 E/AndroidRuntime(30499) : 在 com.myapp.MyActivity.onSensorChanged(NotificationActivity.java:793) 08-23 11:25:04.754 E/AndroidRuntime(30499): 在 android.hardware.SystemSensorManager$ListenerDelegate$1.handleMessage(SystemSensorManager.java:204)
我正在使用的代码是
private NumberFormat numForm = new DecimalFormat();
@Override
public void onSensorChanged(SensorEvent event) {
float sensor = event.values[0];
String cm = numForm.format(sensor);
int dis = Integer.decode(cm);
Log.i(TAG, "Proximity distance: " + dis);
}
这是用户端的传感器校准问题,还是我可以简单地用 try/catch 包围整数解析以避免明显错误的值,如“38,654,705,664”?