1

これは、ある条件が真のときにAndroid携帯電話を振動させることを目的としたコードです。方位角(磁力計から取得)が所定の範囲内になくなるまで振動するはずです。

しかし、私が電話をどちらの方向に向けても、それは決して振動しません。ステートメントには入りますが、ifステートメントには入りませんwhile。そして、バイブレーション機能が機能しています(つまり、電話が壊れていません)。私の目的は、北東西を見つけることです。

私は何が間違っているのですか?

public void onCreate(Bundle savedInstanceState) {
    // some code        
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    if (mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null){
        // Success! There's a magnetometer.
        Toast.makeText(
            getApplicationContext(),
            "Detecting magnetic field",
            Toast.LENGTH_LONG).show();
        speakOut("not Working");
    }
    else {
        Toast.makeText(
            getApplicationContext(),
            "not working",
            Toast.LENGTH_LONG).show();
        speakOut("not Working");
    }
    // some code that calls the function
}

some_function(){
    if (//some condition) {
        while (!(85 < azimuth_angle) && !(azimuth_angle < 95)) {
            viberator.vibrate(1000);
            //this should happen when it faces east.
        }
    } 
}

public void onSensorChanged(SensorEvent event) {
    // TODO: Auto-generated method stub
    azimuth_angle = event.values[0];
    pitch_angle = event.values[1];
    roll_angle = event.values[2];
}
4

2 に答える 2

2

registerListenerメソッドが欠落しているため、トリガーされません: httpSensorEventListener ://developer.android.com/reference/android/hardware/SensorManager.html#registerListener (android.hardware.SensorEventListener、android.hardware.Sensor、int)

于 2013-01-21T09:01:21.933 に答える
1

方位角はコンパスの方向ではありません。これが私がコンパスセンサー用に書いたコードです。それは100%ではありません(私が書く時間や理由がなかったので、はるかに優れたフィルターが必要です)。ただし、方向を取得するロジックを示しているため、戻り値のフィルタリングを自分で行うことができます。

コードを投稿した前の質問への回答

于 2013-01-21T09:01:39.540 に答える