2011-07-01 33 views
0

如何檢查在android模擬器中是否有像accerelerometer,magenetic compass這樣的傳感器類型。 在android模擬器中是否存在默認傳感器,或者我們需要將任何傳感器模擬器連接到android模擬器。如何顯示傳感器值

import android.app.Activity; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 

import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
//import android.widget.LinearLayout; 
//import android.util.Log; 

import android.widget.TextView; 

public class SujaproActivity extends Activity implements SensorEventListener { 
SensorManager sensorManager ; 
private Sensor accSensor; 


private TextView outputX; 
private TextView outputY; 
private TextView outputZ; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    accSensor = sensorManager.getSensorList(
      Sensor.TYPE_ACCELEROMETER).get(0); 

    outputX = (TextView) findViewById(R.id.textView1); 





    outputY = (TextView) findViewById(R.id.textView2); 
    outputZ = (TextView) findViewById(R.id.textView3); 
    setContentView(R.layout.main); 

} 
protected void onResume() { 
    super.onResume(); 
    sensorManager.registerListener(this,accSensor,SensorManager.SENSOR_DELAY_GAME); 
    // sensorManager.registerListener(this, 
     /*sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
     SensorManager.SENSOR_DELAY_GAME);*/ 
} 
protected void onStop() { 
    super.onStop(); 
    sensorManager.unregisterListener(this); 
    /*sensorManager.unregisterListener(this, 
     sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION));*/ 
    } 




public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    // TODO Auto-generated method stub 

} 

public void onSensorChanged(SensorEvent event) { 




if (event.sensor.getType() == Sensor.TYPE_ALL) 

{   
       outputX.setText("x:"+Float.toString(event.values[0]));    
       outputY.setText("y:"+Float.toString(event.values[1])); 
       outputZ.setText("z:"+Float.toString(event.values[2])); 



       // default: 
       /*case Sensor.TYPE_ORIENTATION: 
        outputX2.setText("x:"+Float.toString(event.values[0])); 
        outputY2.setText("y:"+Float.toString(event.values[1])); 
        outputZ2.setText("z:"+Float.toString(event.values[2])); 
        break;*/ 

     } 

    } 
} 

此代碼不顯示傳感器值。它只顯示在main.xml中繪製的設計部分。給我解決方案來顯示傳感器值。

回答

0

我有一個工作應用程序,代碼非常類似於此。唯一真正的區別是我不做「if(event.sensor.getType()== Sensor.TYPE_ALL)」。我會建議在onSensorChanged中放置一個日誌或調試斷點,看看它是否被調用。