Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的Android程序在我访问方向传感器(HTC Desire)时崩溃?_Java_Android - Fatal编程技术网

Java 为什么我的Android程序在我访问方向传感器(HTC Desire)时崩溃?

Java 为什么我的Android程序在我访问方向传感器(HTC Desire)时崩溃?,java,android,Java,Android,所以我在玩安卓api,并试图找出如何获得手机指向的方向 我有以下代码: private SensorManager mSensorManager; private Sensor mAcceller; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

所以我在玩安卓api,并试图找出如何获得手机指向的方向

我有以下代码:

private SensorManager mSensorManager;
private Sensor mAcceller;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    checkNotNull(mSensorManager);
    try {
        mAcceller = mSensorManager.getSensorList(3).get(0);
    } catch (Exception e) {
        showToast(e.getMessage(), Toast.LENGTH_LONG);
    }
}
但是当我试着在手机上运行它时,我只收到一条消息,程序已经崩溃了。当我在模拟器中运行它时,它告诉我没有传感器(这是意料之中的,但这意味着我无法测试代码)

有人知道如何解决这个问题吗?我知道错误发生在try语句中,因为如果我注释掉它,程序就会运行

编辑:事实证明我是个白痴,当我在代码中的其他地方引用null时发生了崩溃,作为对传感器已打开的通知的响应


Dave如果您将评论升级为答案,我会将其标记为已接受(因为我一弄清楚调试器的工作原理就发现了问题)。

首先,不推荐使用方向传感器

其次,使用
传感器
类型
常量,而不是您自己的整数。例如:

mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);

在手机上运行代码,并获取错误的logcat输出。然后在此处发布stacktrace。如果不先检查索引是否存在,则从集合中获取任意索引通常不是一个好主意。您是对的,但这样做都会产生更复杂的示例代码,并且没有必要(它只需在我的手机上运行即可进行调试,而且它有一个传感器)。