getSystemService(SENSOR_SERVICE) 的问题 - 已经实现的上下文
Trouble with getSystemService(SENSOR_SERVICE) - Already implemented context
我正尝试在 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);
您正在 CameraActivity
的 <init>
方法中实例化 GyroData
;也就是说,在任何方法之外。这发生在调用任何定义的方法之前,包括 onCreate()
和其中的 super.onCreate()
调用,这必须在您可以请求系统服务之前发生,就像您在 GyroData
的构造函数中一样。
只需将 gyro
初始化移动到 onCreate()
,然后调用 super.onCreate()
。您应该对 gps
初始化执行相同的操作。
我正尝试在 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);
您正在 CameraActivity
的 <init>
方法中实例化 GyroData
;也就是说,在任何方法之外。这发生在调用任何定义的方法之前,包括 onCreate()
和其中的 super.onCreate()
调用,这必须在您可以请求系统服务之前发生,就像您在 GyroData
的构造函数中一样。
只需将 gyro
初始化移动到 onCreate()
,然后调用 super.onCreate()
。您应该对 gps
初始化执行相同的操作。