1

I accelerometer에서 데이터를 읽을 수있는 다음과 같은 클래스가 :안드로이드 가속도계 데이터 클래스

public class Accelerometer implements SensorEventListener { 

    private SensorManager mSensorManager; 
    private Sensor mAccelerometer; 

    float deltaX; 
    float deltaY; 
    float deltaZ; 

    Activity activity; 

    public Accelerometer(Activity act) 
    { 
     this.activity = act; 
     mSensorManager = (SensorManager) this.activity.getSystemService(Context.SENSOR_SERVICE); 
     mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    } 


    public float getDeltaX() 
    { 
     return this.deltaX; 
    } 

    public float getDeltaY() 
    { 
     return this.deltaY; 
    } 

    public float getDeltaZ() 
    { 
     return this.deltaZ; 
    } 


    @Override 
    public void onSensorChanged(SensorEvent event) { 
     // TODO Auto-generated method stub 

     deltaX = event.values[0]; 
     deltaY = event.values[1]; 
     deltaZ = event.values[2]; 
    } 
} 

와 나는 다음과 같은 코드를 사용하여 내 주요 activity 클래스에서이 클래스를 액세스하고 그러나

Accelerometer sbt = new Accelerometer (this); 
tvX.setText(Float.toString(sbt.getDeltaX()) + " " +Float.toString(sbt.getDeltaY()) + " "+Float.toString(sbt.getDeltaZ())); 

을, 그것은 항상 0, 0, 0을 보여줍니다. 현재 코드가 무엇인지 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

기기 또는 에뮬레이터에서이 작업을 시도하고 있습니까? ... –

+0

in mobile device – MKS

답변

2

가속도계 (및 모든 센서 데이터)는 콜백 시스템에서 작동합니다. 다음 번에 센서를 읽을 때까지 전화하지 않으며 등록을 취소 할 때까지 계속 onSensorChanged에 전화 할 것입니다. 그러나 등록 후 즉시 텍스트를 설정하려고하면 아직 전화를받지 못할 것입니다. 새로운 값으로 업데이트되면 onSensorChanged에서 textView를 설정해야합니다.

관련 문제