2012-06-12 60 views
1

我是Java和Android編程語言的新手,這是我研究的第一個平臺。 我想問一下,如何在這個方法中訪問event.values [1]?Java/Android:將加速度計值從onSensorChanged方法傳遞給onCreateSetContentView()

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;     
} 

有任何建議,我怎麼能解決這個問題? 在此先感謝

+0

你能提供關於一些更多的信息您的設置和你想要做什麼。 本質上你正在尋找類似於 'System.out.println(event.values [1]);' – Deepend

+0

我想顯示加速度傳感器的最近值,在這種情況下event.values [1] onSensorChanged方法,但我不知道如何將它傳遞給onCreateSetContentView() – Duriothenoob

回答

1

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權sequense和onSensorChanged您可以使用documentation描述的方法:

protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mAccelerometer, 
            SensorManager.SENSOR_DELAY_NORMAL); 
} 

protected void onPause() { 
    super.onPause(); 
    mSensorManager.unregisterListener(this); 
} 
+0

血淋淋的地獄!奇蹟般有效。非常感謝你! – Duriothenoob