java - Android 传感器意外崩溃

标签 java android eclipse accelerometer logcat

每当我尝试运行它时它就会崩溃。我不知道问题出在哪里。我是不是遗漏了什么或者什么东西放错地方了?在 logcat 中它说系统服务对 oncreate 之前的 Activity 不可用。

import android.os.Bundle;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Handler;
import android.view.Menu;
import android.widget.*;
import android.*;

import java.math.*;
import java.text.*;
import java.util.*;

public class MainActivity extends Activity implements SensorEventListener {


    private final SensorManager mSensorManager;
    private final Sensor mRotationVector;

    public float x,y,z;

    public MainActivity(){
            mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
            mRotationVector = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mRotationVector, SensorManager.SENSOR_DELAY_GAME);
    }

    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        x= event.values[0];
        y= event.values[1];
        z= event.values[2];

        TextView mTextView0 = (TextView) findViewById(R.id.textView0);
        mTextView0.setText("x"+x);
        TextView mTextView1 = (TextView) findViewById(R.id.textView1);
        mTextView1.setText("y"+y);
        TextView mTextView2 = (TextView) findViewById(R.id.textView2);
        mTextView2.setText("z"+z);


    }

}

最佳答案

system services are not avaliable to activities before oncreate

您的 LogCat 告诉您一切!

所以改成

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    mRotationVector = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
}

并删除此构造函数public MainActivity()

关于java - Android 传感器意外崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17971907/

相关文章:

android - 服务生成器改造

java - Gson 在 fromJson 方法中崩溃

android - Eclipse 无法检测到 Android 4.0.3 选项卡

java - 以通用时间和标准时间打印时间和日期

Java JTabbedPane 插入颜色

java - 确定多边形是否在 map 边界内

android - Intellij Idea 和 Eclipse 以及 JDK 7 和 Android

java - 在 Spring 4 中定义异常处理程序以返回自定义 404 和 500 页面

java - Android Joda Time,从 ISOPeriodFormat 排序字符串时遇到问题

eclipse - 如何使用Eclipse设置JBoss-EAP并进行调试;使用 "minimal"服务器配置