2013-09-25 51 views
-3

我試圖使用sensormanager獲取方向角onclick的按鈕事件,並在textview中添加的值,但傳感器值在用戶界面上每納秒更新。你能幫助創建一個代碼,以便在特定的時間戳上有傳感器事件值。ANDROID提供點擊傳感器事件值(單值)

在此先感謝

+0

你可以發表你迄今嘗試過的嗎?否則,我會推薦freelancer.com或Rent a Coder並付費爲您做代碼。 – RossC

回答

1

沒有直接的方法從傳感器獲取單個值。你將不得不使用一種變通方法:

  • onClick()方法,調用registerListener()該傳感器在onSensorEventChanged()方法
  • ,叫unregisterListener(),然後更新您的TextView。

這將在收到一個事件後從監聽器註銷。

注意,hovever:

  • 事件傳遞將是異步的。當onClick()返回時,TextView將不會有新的值。任何依賴於此的處理都需要在onSensorEventChanged()中進行。
  • 在您的代碼從傳感器註銷之前,您可能會從傳感器接收到多個事件,這仍然有一點競爭條件。如果這是不受歡迎的,請記錄您是否已收到事件並放棄任何後續事件。
  • 有時傳感器傳遞數據的速度可能會很慢(我已經看到它發生了)。您的活動有可能會在活動到達之前終止,因此當您的活動進入後臺時(例如,在onPause()),請確保包含unregisterListener()的額外呼叫。
+0

是的,雖然也可以考慮預先訂閱傳感器事件,並記住收到的最後一個值,以便可以立即在按鈕事件中使用。 **無法完成的一件事就是等待按鈕,即使是下一個傳感器事件。 –

+0

感謝您的回覆,但如果我獲得數據數組,我怎麼才能獲取完全按鈕單擊值。我在那裏努力獲取數據並且無法解決它。 –

+0

由於有三個角度:滾動,俯仰和偏航,您可以從方位傳感器獲取陣列。如果您想提前獲取傳感器值,只需在您的Activity的某個地方定義一個成員mOrientation,當獲得傳感器事件時執行mOrientation = event.values.clone(),然後從'mOrientation'中返回值按鈕事件處理程序。 – user149408