getSystemService(SENSOR_SERVICE)问题 - 已经实现了上下文

时间:2016-03-29 09:33:52

标签: android gyroscope

我正在尝试在Android中为我的陀螺仪创建服务,但我一直遇到getSystemService问题。

我一直在搜索论坛,试图找到解决方案,但在大多数情况下,只需从MainActivity中导入上下文即可。

public class GyroData implements SensorEventListener {

private final Context mContext;
protected SensorManager mSensorManager;

public GyroData(Context context) {
    mContext = context;
    mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
}

正如您在上面所看到的,我已经做到了,但我仍然遇到以下错误。

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{sw806f16.p8project/sw806f16.p8project.CameraActivity}: java.lang.IllegalStateException: System services not available to Activities before onCreate()
at sw806f16.p8project.GyroData.setupSensorManager(GyroData.java:24)

编辑:从MainActivity添加了代码

public class CameraActivity extends Activity implements LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
public static final String TAG = "CameraActivity";

LocationService gps = new LocationService(this);
GyroData gyro = new GyroData(this);

1 个答案:

答案 0 :(得分:1)

您在GyroData CameraActivity方法中实例化<init>;也就是说,在任何方法之外。这种情况发生在调用任何已定义的方法之前,包括onCreate()super.onCreate()调用,这些调用必须在您请求系统服务之前发生,就像您在GyroData中那样构造

在致电gyro后,只需将onCreate()初始化移至super.onCreate()即可。您应该对gps初始化执行相同的操作。