2011-06-08 73 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