-3

ボタンのオンクリックのイベントでセンサーマネージャーを使用して方向角を取得しようとしましたが、値はテキストビューに追加されましたが、センサー値はユーザーインターフェイスでナノ秒ごとに更新されました。特定のタイムスタンプでセンサーイベント値を持つコードを作成するのを手伝ってもらえますか?

前もって感謝します

4

1 に答える 1

1

センサーから単一の値を取得する直接的な方法はありません。回避策を使用する必要があります。

  • onClick()メソッドで、そのregisterListener()センサーを呼び出します
  • onSensorEventChanged()メソッドで を呼び出してunregisterListener()から、TextView を更新します。

これにより、1 つのイベントを受信した後にリスナーから登録が解除されます。

注、ホバー:

  • イベント配信は非同期になります。TextView には、新しい値がまだonClick()返されていません。それに依存するすべての処理は、 で行う必要がありますonSensorEventChanged()
  • コードがセンサーから登録解除される前に、センサーから複数のイベントを受け取る可能性があるため、まだ少し競合状態があります。それが望ましくない場合は、すでにイベントを受信して​​いるかどうかを追跡し、後続のイベントを破棄してください。
  • センサーがデータを配信するのが遅い場合があります (私はそれが起こっているのを見てきました)。イベントが到達する前にアクティビティが終了する可能性があるためunregisterListener()、アクティビティがバックグラウンドに移行するときに への追加の呼び出しを含めるようにしてください (例: onPause())。
于 2013-09-25T15:20:53.310 に答える