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

标签 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);

最佳答案

您正在实例化 GyroDataCameraActivity<init>方法;也就是说,在任何方法之外。这发生在调用任何定义的方法之前,包括 onCreate() , 和 super.onCreate()在其中调用,这必须在您可以请求系统服务之前发生,就像您在 GyroData 中一样。的构造函数。

只需移动 gyro初始化为 onCreate() , 在调用 super.onCreate() 之后.你应该对 gps 做同样的事情初始化。

关于android - getSystemService(SENSOR_SERVICE) 的问题 - 已经实现的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280469/

相关文章:

java - 获取从html到android的输入类型值

android - 在 Android 上将音频路由到蓝牙耳机(非 A2DP)

android - 更新到 2.3.5 后 GYROSCOPE 不工作

android - Android 可穿戴设备上加速度计和陀螺仪数据的连续感知

ios - 检测 iPhone 在平面上的移动

android - 跟踪位置室内(使用智能手机)

android - 从 Android 陀螺仪获取四元数?

android - 如何强制网页在 iPhone 和 Android 上始终以 1.0(而非 1.5)的像素比呈现?

市场上的安卓应用

java - 从 android 发送图像到 php 服务器时出现 OutOfMemoryError