0

ばかげた質問で申し訳ありませんが、私はアンドロイドが初めてで、解決策が見つかりません。

簡単に言えば、センサーイベントリスナーを持つクラスがあり、メインアクティビティでセンサーから受信したデータを使用したいと考えています。私は試しましたが、成功しませんでした ここに私のコード:

public class Lis{

SensorManager MagSensorManager;
SensorManager ACCSensorManager;
Sensor magnetometer;
Sensor Accelerometer;
Callback cb =null;
float [] magvec =new float[3];
float [] lin =new float[3];





Lis(Context context, Callback cb)
{

    MagSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
    ACCSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

    ACCSensorManager.registerListener(listener,Accelerometer, SensorManager.SENSOR_DELAY_GAME);
    MagSensorManager.registerListener(listener,magnetometer, SensorManager.SENSOR_DELAY_GAME);
    this.cb=cb;
}
SensorEventListener listener = new SensorEventListener() {

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

}
public void onSensorChanged(SensorEvent event) {

    switch (event.sensor.getType())
    {
    case Sensor.TYPE_MAGNETIC_FIELD:
         magvec = event.values.clone();
         break;
    case Sensor.TYPE_LINEAR_ACCELERATION:
         lin = event.values.clone();
         break;

    }



            SensorManager.getRotationMatrix(Ri, I, lin, magnetic);
        SensorManager.getOrientation(Ri, orientat);
                orientat[0] = (float) Math.toDegrees(orientat[0]);
            cb.azvalue(orientat[0]);

}
}

};



 public interface Callback {
        void azvalue(float azim);

    }

}


public class MainActivity extends Activity 実装 Lis.Callback{

    TextView tbX;

    Lis listen;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tbX = (TextView)findViewById(R.id.textView1);
        listen=new Lis(this,this);
    }       


    @Override
    protected void onPause() {
        super.onPause();

    }
    public void azvalue(float azim)
    {
        tbX.setText("azimuth"+azim);
    }

}

どこが間違っていますか?APK を実行しようとすると、「方位角」+値ではなく、tbX textview からデフォルトのテキストのみが取得されます。

前もって感謝します。

4

1 に答える 1

0
SensorManager MagSensorManager;
SensorManager ACCSensorManager;  

必要な SensorManager は 1 つだけです

SensorManager mSensorManager;  

コンストラクタで

Lis(Context context, Callback cb)
{

    mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

    // You need to initialize these value, otherwise you pass in null 
    // and onSensorChanged would not be called as in your case.
    magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    Accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    mSensorManager.registerListener(listener,Accelerometer, SensorManager.SENSOR_DELAY_GAME);
    mSensorManager.registerListener(listener,magnetometer, SensorManager.SENSOR_DELAY_GAME);
    this.cb=cb;
}
于 2013-05-01T19:42:27.340 に答える