我正在尝试在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);
答案 0 :(得分:1)
您在GyroData
CameraActivity
方法中实例化<init>
;也就是说,在任何方法之外。这种情况发生在调用任何已定义的方法之前,包括onCreate()
和super.onCreate()
调用,这些调用必须在您请求系统服务之前发生,就像您在GyroData
中那样构造
在致电gyro
后,只需将onCreate()
初始化移至super.onCreate()
即可。您应该对gps
初始化执行相同的操作。