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 初始化执行相同的操作。