首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SensorManager错误

SensorManager错误
EN

Stack Overflow用户
提问于 2013-02-21 00:47:53
回答 1查看 1.5K关注 0票数 0

直到今天,我的SensorManager一直工作得很好。

代码语言:javascript
复制
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

这是我的传感器类:

代码语言:javascript
复制
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) 
        {

        }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-21 00:56:55

移动:

代码语言:javascript
复制
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);
}

添加到服务的onCreate()中。getSystemService()是服务扩展的上下文中的方法。但是,在调用onCreate()之前,您没有上下文。因此,这会导致构造函数中出现NPE。

此外,请确保使用startService()启动服务,而不是从它创建普通的Java对象

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14985329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档