package com.example.appflash01 import android.app.AlertDialog import android.content.Context import android.content.DialogInterface import android.content.pm.PackageManager import android.hardware.camera2.CameraAccessException import android.hardware.camera2.CameraManager import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.VibrationEffect import android.os.Vibrator import android.widget.Button import android.widget.ToggleButton class MainActivity : AppCompatActivity() { private lateinit var cameraManager: CameraManager private lateinit var cameraId: String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) title = "Flash & Vibrate" // lámpa val isFlashAvailable = applicationContext.packageManager .hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT) if (!isFlashAvailable) { showNoFlashAlert() } cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager try { cameraId = cameraManager.cameraIdList[0] } catch (e: CameraAccessException) { e.printStackTrace() } val toggleButton: ToggleButton = findViewById(R.id.onOffFlashlight_toggleButton) toggleButton.setOnCheckedChangeListener { _, isChecked -> switchFlashLight(isChecked) } // rezgés val button: Button = findViewById(R.id.vibrate_button) button.setOnClickListener { val vbr = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator if (Build.VERSION.SDK_INT >= 26) { //vbr.vibrate( VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE) ) vbr.vibrate( VibrationEffect.createWaveform( longArrayOf(300,200,300,200,300,200,600,200,200,200,200), intArrayOf(255,0,255,0,255,0,255,0,255,0,255), -1)) } else { vbr.vibrate(200) } } } private fun showNoFlashAlert() { val alert = AlertDialog.Builder(this).create() alert.setTitle("Oops!") alert.setMessage("Flash not available in this device...") alert.setButton(DialogInterface.BUTTON_POSITIVE, "OK") { _, _ -> finish() } alert.show() } private fun switchFlashLight(status: Boolean) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { cameraManager.setTorchMode(cameraId, status) } } catch (e: CameraAccessException) { e.printStackTrace() } } }