4

デバイスの加速度計を使用して進行状況バーを埋めるゲームを作成しています。私のNote 2では、電話を上下に振ってバーをいっぱいにするのに約20秒かかりましたが、ZTE Bladeで試してみたところ、4秒かかりました.

コード内で加速度計を調整する方法はありますか? これは私がやっていることです:

@Override
public void onSensorChanged(SensorEvent event) {

        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];
        if (!mInitialized) {
            mLastX = x;
            mLastY = y;
            mLastZ = z;
            mInitialized = true;
        } else {
            float deltaX = Math.abs(mLastX - x);
            float deltaY = Math.abs(mLastY - y);
            float deltaZ = Math.abs(mLastZ - z);
            if (deltaX < NOISE) deltaX = (float)0.0;
            if (deltaY < NOISE) deltaY = (float)0.0;
            if (deltaZ < NOISE) deltaZ = (float)0.0;
            mLastX = x;
            mLastY = y;
            mLastZ = z;

            if(deltaY == 0){
                return;
            }

            sProgress += deltaY;
            pb.setProgress(sProgress);


        }


}
4

2 に答える 2

0

加速度計の周波数に問題がある可能性があります。登録中に以下の Android 定数を使用しないでください。

mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

これらの値は、デバイスによって異なります。

int SENSOR_DELAY_FASTEST    get sensor data as fast as possible
int SENSOR_DELAY_GAME   rate suitable for games
int SENSOR_DELAY_NORMAL rate (default) suitable for screen orientation changes
int SENSOR_DELAY_UI rate suitable for the user interface

周波数 1 Hz のように、マイクロ秒単位でハードコードされた値を使用します

mSensorManager.registerListener(this, mAccelerometer,1000000);

それが解決することを願っています。

于 2013-01-14T22:15:59.913 に答える