0

オンボードの加速度計を使用するアプリケーションを作成しようとしています。

センサーをセットアップしているときに、TYPE_MAGNETIC_FIELD を使用すると、「TYPE_MAGNETIC_FIELD を変数に解決できません」というエラー メッセージが表示されます。TYPE_ACCELERATOR は問題なく動作します。

これが私のコードです:

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sensor);

    sensMan = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    magFieldSens = sensMan.getDefaultSensor(TYPE_MAGNETIC_FIELD);
    accelerometer = sensMan.getDefaultSensor(TYPE_ACCELEROMETER);

    sensListen = new MySensorEventListener();

    orientationView = (TextView) findViewById(R.id.orientationView);


}

これらは私のメインアクティビティで定義されています:

SensorManager sensMan;
Sensor accelerometer, magFieldSens;
SensorEventListener sensListen;
    TextView orientationView;

このクラスでは、TYPE_MAGNETIC_FIELD を期待どおりに使用できます。

    class MySensorEventListener implements SensorEventListener
{



    /* 
     * @see android.hardware.SensorEventListener#onAccuracyChanged(android.hardware.Sensor, int)
     */
    @Override
    public void onAccuracyChanged(Sensor sensor, int acc)
    {
        // Edit this method, macke
        if(acc <= 1)
            Toast.makeText(SensorActivity.this, "Shake in a figure eight pattern ", Toast.LENGTH_LONG).show();


    }


    @Override
    public void onSensorChanged(SensorEvent sensorEvent)
    {
        int sensorEventType = sensorEvent.sensor.getType();

        if (sensorEventType == Sensor.TYPE_ACCELEROMETER)
            System.arraycopy(sensorEvent.values, 0, gravVals, 0, 3);

        else if(sensorEventType == Sensor.TYPE_MAGNETIC_FIELD)
            System.arraycopy(sensorEvent.values, 0, geoMagnetVals, 0, 3);
        else
            return;

        if(SensorManager.getRotationMatrix(rotMatrix, null, gravVals, geoMagnetVals))
        {
            SensorManager.getOrientation(rotMatrix, orientation);
            orientationView.setText("X: " + orientation[0] + 
                                    "\nY: " + orientation[1] + 
                                    "\nZ: " + orientation[2]);


        }


    }



}

乾杯/M

4

1 に答える 1

0

あなたはただ書くことができます

  magFieldSens = sensMan.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

TYPE_MAGNETIC_FIELD はセンサーの静的定数整数です。

于 2012-11-06T10:14:49.830 に答える