2011-06-08 70 views
0

我有一个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(传感器.TYPE_ALL); 我得到传感器指南针,指南针,BMA150(加速度),温度,磁铁,接近度,光线和陀螺仪。

(奇怪的 - 我认为这只是在高达3.0)

请指教,我怎么能在手机上获得运动检测。

感谢


+0

BMA150(加速)不是你想要的吗?加速计是'运动检测' – Jodes 2011-06-08 15:51:43

+0

你是正确的。我设法使用这些传感器进行工作。 – Saariko 2011-06-16 20:55:58

回答

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

+0

我设法让这个工作。使用加速度计。 – Saariko 2011-06-16 20:57:43