[英]Java/Android : passing accelerometer value from onSensorChanged method to onCreateSetContentView()
我是Java和Android編程語言的新手,這是我研究的第一個平台。 我想問一下,如何通過這種方法訪問event.values [1]?
public void onSensorChanged(SensorEvent event) {synchronized (this){
if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
return;
mAccVals.x = (float) (event.values[1] * FILTERING_FACTOR + mAccVals.x * (1.0 - FILTERING_FACTOR));
//mAccVals.y = (float) ((-event.values[1] * FILTERING_FACTOR + mAccVals.y * (1.0 - FILTERING_FACTOR)));
mAccVals.z = (float) (event.values[2] * FILTERING_FACTOR + mAccVals.z * (1.0 - FILTERING_FACTOR));
scene.camera().position.x = mAccVals.x * .2f;
scene.camera().position.z = mAccVals.z * .8f;
scene.camera().target.x = -scene.camera().position.x;
scene.camera().target.z = -scene.camera().position.z;
}
我想獲取event.values [1],然后將其顯示在textview上
protected void onCreateSetContentView()
{
setContentView(R.layout.custom_layout_example);
LinearLayout ll = (LinearLayout) this.findViewById(R.id.scene1Holder);
ll.addView(_glSurfaceView);
TextView myTextView = (TextView) findViewById(R.id.splashTitle);
myTextView.setText("Test " + event.values[1] );
return;
}
有什么建議可以解決這個問題嗎? 提前致謝
在Activity
創建一個字段,並將其分配給您的R.id.splashTitle
:
TextView mTextView;
...
protected void onCreateSetContentView() {
mTextView = (TextView) findViewById(R.id.splashTitle);
...
}
然后在onSensorChanged()
設置其文本,如下所示:
public void onSensorChanged(SensorEvent event) {
mTextView.setText("Test " + event.values[1]);
...
}
或者,您可以將最新傳感器的值存儲在字段中:
// Class field
float[] mSensorValues;
// In onSensorChanged()
mSensorValues = event.values;
// In onCreateSetContentView()
myTextView.setText("Test " + mSensorValues[1]);
為了保留onCreate
和onSensorChanged
正確序列,您可以使用文檔中描述的方法:
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mAccelerometer,
SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.