顯示具有 Android感測器 標籤的文章。 顯示所有文章
顯示具有 Android感測器 標籤的文章。 顯示所有文章

2011年5月25日 星期三

Orientation感測器

Orientation感測器
方向感測器
    sensor = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);
    sm.registerListener(oriSensor, sensor, SensorManager.SENSOR_DELAY_NORMAL);

    // Azimuth : 0=North, 90=East, 180=South, 270=West     private SensorEventListener oriSensor = new SensorEventListener() {
        public void onAccuracyChanged(Sensor sensor, int accuracy) { }

        public void onSensorChanged(SensorEvent event) {
        txtMsg.setText(
            "(Azimuth, Pitch, Roll) = \n" + event.values[0] + "\n" + event.values[1] + "\n" + event.values[2]);
        }
    };

Gyroscope感測器

Gyroscope感測器
陀螺儀感測器
    sensor = sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
    sm.registerListener(gyroSensor, sensor, SensorManager.SENSOR_DELAY_NORMAL);

    private SensorEventListener gyroSensor = new SensorEventListener() {
         public void onAccuracyChanged(Sensor sensor, int accuracy) { }

         public void onSensorChanged(SensorEvent event) {
             txtMsg.setText("(x, y, z) = \n" + event.values[0] + "\n" + event.values[1] + "\n" + event.values[2]);
        }
    };

2011年4月20日 星期三

Light感測器

Light感測器
    public void onCreate(Bundle savedInstanceState) {
        ................
        // get reference to SensorManager
        SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
        Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
        sm.registerListener(lsn, sensor, SensorManager.SENSOR_LIGHT);
    }

    SensorEventListener lsn = new SensorEventListener() {
        public void onAccuracyChanged(Sensor sensor, int accuracy) { }

        public void onSensorChanged(SensorEvent event) {
            // light sensor informations
            cloudy.setText(String.valueOf(SensorManager.LIGHT_CLOUDY));
            fullmoon.setText(String.valueOf(SensorManager.LIGHT_FULLMOON));
            no_moon.setText(String.valueOf(SensorManager.LIGHT_NO_MOON));
            overcast.setText(String.valueOf(SensorManager.LIGHT_OVERCAST));
            shade.setText(String.valueOf(SensorManager.LIGHT_SHADE));
            sunlight.setText(String.valueOf(SensorManager.LIGHT_SUNLIGHT));
            sunlight_max.setText(String.valueOf(SensorManager.LIGHT_SUNLIGHT_MAX));
            sunrise.setText(String.valueOf(SensorManager.LIGHT_SUNRISE));
            // light sensor values
            txtMsg.setText("Ambient light level = " + event.values[0] + " lux");
        }
    };

2011年4月18日 星期一

OnTouchEvent偵測

OnTouchEvent偵測
透過下列程式,可偵測Touch的動作
MotionEvent.ACTION_DOWN:壓下時觸發
MotionEvent.ACTION_MOVE:移動時觸發
MotionEvent.ACTION_UP:離開時觸發
    public boolean onTouchEvent(MotionEvent event){
        switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN :
            temp_x = (int) event.getX();
            temp_y = (int) event.getY();
            break;
        case MotionEvent.ACTION_MOVE :
            break;
        case MotionEvent.ACTION_UP :
            break;
        default :
            break;
        }
        return false; 
    }

event.getPointerCount() get count number

Accelerometer感測器

Accelerometer感測器
加速度感測器,主要運用於感應手機的運動
values[0]:空間座標中X軸方向上的加速度減去重力加速度在X軸的分量。
values[1]:空間座標中Y軸方向上的加速度減去重力加速度在Y軸的分量。
values[2]:空間座標中Z軸方向上的加速度減去重力加速度在Z軸的分量。

    // 設定感測器
    sm = (SensorManager) getSystemService(SENSOR_SERVICE);
    Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sm.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_NORMAL);

    // 接收感測器資訊
    SensorEventListener lsn = new SensorEventListener() {
        public void onAccuracyChanged(Sensor sensor, int accuracy) { }
        public void onSensorChanged(SensorEvent event) {
            gsensor_info.setText(
                "(x,y,z) = (" +  event.values[0] + "," + event.values[1] + "," + event.values[2] + ")");
        }
    };