光センサーというと、あまり使っていないように感じる人もいるかもしれませんが、携帯電話自体の明るさの自動調整は、使用されている光センサー、つまり携帯電話内の光センサーの機能です。携帯電話の電源が入っていますか?
ちょっとした紹介
では、光センサーとは一体何でしょうか?携帯電話の周囲の光の強度を検出するために使用されます。単位はルクスです。通常、携帯電話の頭部のフロントカメラの近くに配置されます。携帯電話を見て、指を押して確認することができます。携帯電話の明るさが暗くなり、光がセンサーと他のセンサーの開発手順は同じです(そのようなプロセスであるようです)
開発プロセス
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 のセンサー (合計)」を参照してください。