0
我剛開始在Android和Java昨天,我有一個問題。我正試圖向一些TextView輸出一個傳感器的值。文本更新,但是在定義時設置了值。 onSensorChanged應該更新這些值嗎?傳感器更改不會觸發onSensorChanged
import [...]
public class MainActivity extends Activity implements SensorEventListener {
public float[] gravity = {0,0,0};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView gravxTxtView = (TextView) findViewById(R.id.gravxTxtView);
final TextView gravyTxtView = (TextView) findViewById(R.id.gravyTxtView);
final TextView gravzTxtview = (TextView) findViewById(R.id.gravzTxtView);
final Handler handler = new Handler();
handler.postDelayed(
new Runnable() {
@Override
public void run() {
gravxTxtView.setText("Gravity x: " + Float.toString((gravity[0])));
gravyTxtView.setText("Gravity y: " + Float.toString((gravity[1])));
gravzTxtview.setText("Gravity z: " + Float.toString((gravity[2])));
}
}, 500);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
gravity[0] = event.values[0];
gravity[1] = event.values[1];
gravity[2] = event.values[2];
}
}
}
感謝您的快速回復!我從未在文檔中跨過註冊步驟。現在正在工作(ish)。我得到正確的值,但不會每x毫秒更新一次。不要認爲它與onSensorChanged函數有什麼關係,而是我正在使用的循環方法。 –
檢查步驟3,第三個參數在這裏你可以改變頻率有一些默認頻率可用。我沒有得到最後一部分,但沒有使用任何循環,android傳感器事件遵循發佈者訂閱模式,您可能需要閱讀此內容。 –
我的不好,我的意思是文本doensn't後第一次更新。通過在傳感器更新功能中簡單地移動setText()來修復它。謝謝一堆!這打開了很多。 –