Android 传感器管理器错误

Android 传感器管理器错误,android,runtime-error,accelerometer,sensormanager,Android,Runtime Error,Accelerometer,Sensormanager,直到今天,我的经理一直工作得很好。我没有更改任何代码,我所做的只是启动eclipse,现在我遇到了一个错误,迫使我的应用程序退出;以下是我得到的: 02-20 11:44:50.835: E/AndroidRuntime(23828): FATAL EXCEPTION: main 02-20 11:44:50.835: E/AndroidRuntime(23828): java.lang.RuntimeException: Unable to start activity ComponentIn

直到今天,我的经理一直工作得很好。我没有更改任何代码,我所做的只是启动eclipse,现在我遇到了一个错误,迫使我的应用程序退出;以下是我得到的:

02-20 11:44:50.835: E/AndroidRuntime(23828): FATAL EXCEPTION: main
02-20 11:44:50.835: E/AndroidRuntime(23828): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.synlight_development.sleep_smart/com.synlight_development.sleep_smart.Sleep}: java.lang.NullPointerException
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.ActivityThread.access$700(ActivityThread.java:139)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.os.Looper.loop(Looper.java:137)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.ActivityThread.main(ActivityThread.java:4918)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at java.lang.reflect.Method.invokeNative(Native Method)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at java.lang.reflect.Method.invoke(Method.java:511)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at dalvik.system.NativeStart.main(Native Method)
02-20 11:44:50.835: E/AndroidRuntime(23828): Caused by: java.lang.NullPointerException
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.content.ContextWrapper.getSystemService(ContextWrapper.java:423)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at com.synlight_development.sleep_smart.Sleep$Accelerator.<init>(Sleep.java:173)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at com.synlight_development.sleep_smart.Sleep.onCreate(Sleep.java:104)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.Activity.performCreate(Activity.java:5048)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
02-20 11:44:50.835: E/AndroidRuntime(23828):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052)
02-20 11:44:50.835: E/AndroidRuntime(23828):    ... 11 more
移动:

进入服务的onCreate()
getSystemService()
是上下文中的一个方法,该方法由服务扩展。但是,在调用onCreate()之前,您没有上下文。因此,这将导致构造函数中出现NPE


另外,请确保您正在使用startService()启动服务,而不是从中创建普通Java对象

尝试清理项目。
public class Accelerator extends Service implements SensorEventListener
    {
        public Accelerator()
        {
            SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
            if(sm.getSensorList(Sensor.TYPE_GYROSCOPE).size() != 0)
            {
                Sensor s = sm.getSensorList(Sensor.TYPE_GYROSCOPE).get(0);
                sm.registerListener(this, s, SensorManager.SENSOR_DELAY_GAME);
            }
        }
        public void onAccuracyChanged(Sensor s, int i) 
        {

        }
}
SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if(sm.getSensorList(Sensor.TYPE_GYROSCOPE).size() != 0)
{
    Sensor s = sm.getSensorList(Sensor.TYPE_GYROSCOPE).get(0);
    sm.registerListener(this, s, SensorManager.SENSOR_DELAY_GAME);
}