Java 在传入呼叫期间使用加速计时无法注销侦听器

Java 在传入呼叫期间使用加速计时无法注销侦听器,java,android,broadcastreceiver,accelerometer,Java,Android,Broadcastreceiver,Accelerometer,我创建了一个简单的广播接收器,在设备接收信号时捕捉加速度计的运动。该应用程序的目的是将设备翻转,从而使来电静音。请检查动议标题下的最后一点。该应用程序运行正常,但我想在广播接收器检测到空闲模式时注销Listener。当我尝试这样做时,我会遇到以下错误: 05-27 13:01:21.122: E/MyApp(9836): Vibrate mode 05-27 13:01:25.426: E/Detecting(9836): PhoneIdle 05-27 13:01:25.436: E/actu

我创建了一个简单的广播接收器,在设备接收信号时捕捉加速度计的运动。该应用程序的目的是将设备翻转,从而使来电静音。请检查动议标题下的最后一点。该应用程序运行正常,但我想在广播接收器检测到空闲模式时注销Listener。当我尝试这样做时,我会遇到以下错误:

05-27 13:01:21.122: E/MyApp(9836): Vibrate mode
05-27 13:01:25.426: E/Detecting(9836): PhoneIdle
05-27 13:01:25.436: E/actualRingerMode(9836): Actual State: Vibrate mode
05-27 13:01:25.446: E/AndroidRuntime(9836): FATAL EXCEPTION: main
05-27 13:01:25.446: E/AndroidRuntime(9836): java.lang.RuntimeException: Unable to start receiver com.abhideep.silentfacedown.IncommingCallReceiver: java.lang.NullPointerException
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2495)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.app.ActivityThread.access$1500(ActivityThread.java:150)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1374)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.os.Looper.loop(Looper.java:213)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.app.ActivityThread.main(ActivityThread.java:5225)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at java.lang.reflect.Method.invokeNative(Native Method)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at java.lang.reflect.Method.invoke(Method.java:525)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at dalvik.system.NativeStart.main(Native Method)
05-27 13:01:25.446: E/AndroidRuntime(9836): Caused by: java.lang.NullPointerException
05-27 13:01:25.446: E/AndroidRuntime(9836):     at com.abhideep.silentfacedown.IncommingCallReceiver.onReceive(IncommingCallReceiver.java:83)
05-27 13:01:25.446: E/AndroidRuntime(9836):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2488)
05-27 13:01:25.446: E/AndroidRuntime(9836):     ... 10 more
广播接收机:


stacktrace的第一行告诉您什么是错误的:

05-27 13:01:25.446: E/AndroidRuntime(9836): java.lang.RuntimeException: Unable to start receiver com.abhideep.silentfacedown.IncommingCallReceiver: java.lang.NullPointerException
它说:

无法在IncommingCallReceiver中启动接收器,其中某处有空指针


因此,要进行调试,请转到HomeActivity类,检查每个对象的每个实例是否为==null,然后抛出您自己的异常并从那里开始。

我更新了我的答案,但基本上是一样的:您必须检查null指针并找出哪个对象为null;这是造成问题的原因。我无法注销传感器。是否检查传感器管理器是否为空?
05-27 13:01:25.446: E/AndroidRuntime(9836): java.lang.RuntimeException: Unable to start receiver com.abhideep.silentfacedown.IncommingCallReceiver: java.lang.NullPointerException