Kotlinでカメラのライトをオンにして光らせてみました。
加速度センサーの値に応じて光らせる・消すができるようにしました。
ライトのことをトーチと呼ぶらしいです。
加速度センサーの記事については以下を参照ください。
ライトの制御はCameraManagerが行うので以下のように初期化します。
ライトの状態が変化すると、コールバックが実行されて、カメラIDやオンオフのフラグがとれるようです。
lateinit var cameraManager:CameraManager
private var lightOn:Boolean = false
var cameraID:String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//cameraManagerのコールバックを指定する。
cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
cameraManager.registerTorchCallback(object : CameraManager.TorchCallback(){
override fun onTorchModeChanged(cameraId: String, enabled: Boolean) {
super.onTorchModeChanged(cameraId, enabled)
cameraID = cameraId
lightOn = enabled
}
}, Handler())
}
cameraIDはnull許容のStringで宣言しておきます。
ライトがオンかどうかはフラグで管理します。
次にライトのオンオフを切り替えるための関数を作ります。
private fun torchOn(){
if (cameraID != null){
try {
if (!lightOn){
cameraManager.setTorchMode(cameraID!!,true)
}else{
cameraManager.setTorchMode(cameraID!!,false)
}
}catch (e:CameraAccessException){
e.printStackTrace()
}
}
}
あとはこの関数を呼べばライトが光ります。
ライトが光っている時に呼ぶと消えます。
シンプルなコードでライトを光らせることができました。
エンジョイ、Kotlinプログラミング。