Android のセンサー --- 光センサー

光センサーというと、あまり使っていないように感じる人もいるかもしれませんが、携帯電話自体の明るさの自動調整は、使用されている光センサー、つまり携帯電話内の光センサーの機能です。携帯電話の電源が入っていますか?

ちょっとした紹介

では、光センサーとは一体何でしょうか?携帯電話の周囲の光の強度を検出するために使用されます。単位はルクスです。通常、携帯電話の頭部のフロントカメラの近くに配置されます。携帯電話を見て、指を押して確認することができます。携帯電話の明るさが暗くなり、光がセンサーと他のセンサーの開発手順は同じです(そのようなプロセスであるようです)

開発プロセス

1. センサーマネージャーオブジェクトを取得する

// 获取传感器管理者对象
SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

2. 指定されたセンサー オブジェクトを取得します。これは光センサーです。

// 获取光线传感器对象
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

3. できれば onResume() にリスナーを追加します。

sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);

4. 現在の光強度の値を取得します。

float light = event.values[0];

5. 使用しないときは登録を解除することを忘れないでください。センサーのアップデートは受信されなくなります。

sensorManager.unregisterListener(this,sensor);

完全なコード

public class LightActivity extends AppCompatActivity implements SensorEventListener {
    private SensorManager sensorManager;
    private Sensor sensor;
    private TextView mTvLight;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_light);
        mTvLight=findViewById(R.id.tv_light);
        // 获取传感器管理者对象
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        // 获取光线传感器对象
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    }
    @Override
    protected void onResume() {
        super.onResume();
        //添加监听器
        sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (sensorManager != null) {
            //解除注册,不再接收任何传感器的更新。
            sensorManager.unregisterListener(this,sensor);
        }
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        float light = event.values[0];
        StringBuffer buffer = new StringBuffer();
        buffer.append("现在的光照强度:").append(light).append("lux");
        mTvLight.setText(buffer);
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
}

携帯電話センサーの使用方法の詳細については、「Android のセンサー (合計)」を参照してください。

おすすめ

転載: blog.csdn.net/lanrenxiaowen/article/details/108122011