我正在尝试在 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);
最佳答案
您正在实例化 GyroData
在CameraActivity
的 <init>
方法;也就是说,在任何方法之外。这发生在调用任何定义的方法之前,包括 onCreate()
, 和 super.onCreate()
在其中调用,这必须在您可以请求系统服务之前发生,就像您在 GyroData
中一样。的构造函数。
只需移动 gyro
初始化为 onCreate()
, 在调用 super.onCreate()
之后.你应该对 gps
做同样的事情初始化。
关于android - getSystemService(SENSOR_SERVICE) 的问题 - 已经实现的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280469/