使用传感器时问题 - 加速度计

时间:2011-06-08 15:48:00

标签: android sensor android-sensors

我有一个Galaxy Tab 1000。

我正在尝试编写代码,以识别任何动作。

手机上有2.2版。

这是oncreate代码。


OnCreate()
    mySensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
        mySensorManager.registerListener(mySensorEventListener, mySensorManager
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL); // 

这是传感器onsensorchanged实现(我认为非常简单)但不起作用


if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER) // Do WORK

event.sensor.getType()返回1

如果我这样做:getSensorList(Sensor.TYPE_ALL); 我得到传感器指南针,指南针,BMA150(加速),温度,磁铁,接近,光和陀螺仪。

(很奇怪 - 我认为它只在3.0中出现)

请告知,我如何在手机上进行动作检测。

感谢


1 个答案:

答案 0 :(得分:1)

我对你想要做的究竟是什么感到有点困惑,但是从我想要的你想要获得onSensorChanged中的加速度数据。你的创建看起来很好,但你可以通过检查从registerListener返回的bool来检查它们是否正确注册了监听器。这是我在监听事件和检索返回值时所做的事情。

    @Override
    public void onSensorChanged(SensorEvent event)
    {
        // If the sensor data is unreliable return
        if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
        {
            //Toast.makeText(main.this, "Sensor Status Unreliable",Toast.LENGTH_SHORT).show();
            return;
        }


        // Gets the value of the sensor that has been changed
        switch (event.sensor.getType())
        {
        case Sensor.TYPE_ACCELEROMETER:
            m_vAccel = event.values.clone();
            break;
        }

另外,您也可以使用与加速度计返回减去相同的线性加速度传感器  重力。 http://developer.android.com/reference/android/hardware/SensorEvent.html