Android 指南針傳感器

nnkde 9年前發布 | 998 次閱讀 Java Android

public void onSensorChanged(int sensor, float[] values) {
    synchronized (this) {
        if (sensor == SensorManager.SENSOR_ORIENTATION) {
            Log.d(TAG, "onSensorChanged: " + sensor + ", x: " + values[0]

                + ", y: " + values[1] + ", z: " + values[2]);

        // OrientText.setText("--- NESW ---");
        if (Math.abs(values[0] - DegressQuondam) < 1)
            return;

        switch ((int) values[0]) {
        case 0: // North 北
            OrientText.setText("正北");
            break;
        case 90: // East 東
            OrientText.setText("正東");
            break;
        case 180: // South 南
            OrientText.setText("正南");
            break;
        case 270: // West 西
            OrientText.setText("正西");
            break;
        default: {
            int v = (int) values[0];
            if (v > 0 && v < 90) {
                OrientText.setText("北偏東" + v);
            }

            if (v > 90 && v < 180) {
                v = 180 - v;
                OrientText.setText("南偏東" + v);
            }

            if (v > 180 && v < 270) {
                v = v - 180;
                OrientText.setText("南偏西" + v);
            }
            if (v > 270 && v < 360) {
                v = 360 - v;
                OrientText.setText("北偏西" + v);
            }
        }
        }

        ((TextView) findViewById(R.id.OrientValue)).setText(String
                .valueOf(values[0]));

        if (DegressQuondam != -values[0])
            AniRotateImage(-values[0]);
    }

    // if (sensor == SensorManager.SENSOR_ACCELEROMETER) { // //}

}

}

public void onAccuracyChanged(int sensor, int accuracy) { Log.d(TAG, "onAccuracyChanged: " + sensor + ", accuracy: " + accuracy); }</pre>

 本文由用戶 nnkde 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!