Пока мне удалось получить доступ к камере пользователя, но я не могу понять, как настроить автоматическую запись или сделать работа петли. Мне интересно, правильно ли я получаю доступ к камере или мне нужно внести изменения, или это вообще можно сделать в Kotlin.
Пользователь вводит три переменные:
Пользователь вводит три переменные:
p>
- количество раундов, целое число
- длина раундов, целое число
breakRounds, целое число
private fun startRecordingLoop() {
val handler = Handler(Looper.getMainLooper())
var currentRound = 1
fun recordRound() {
if (currentRound 0 && breakRounds > 0) {
startRecordingLoop() // Begin the recording loop
} else {
Toast.makeText(this, "Please enter valid input values", Toast.LENGTH_SHORT).show()
}
} else {
Toast.makeText(this, "Permissions are required to start recording.", Toast.LENGTH_SHORT).show()
}
}
}
// Initialize app functionality after permissions are granted
private fun initializeApp() {
Log.d("MainActivity", "App is initializing...")
Toast.makeText(this, "App initialized successfully!", Toast.LENGTH_SHORT).show()
}
// Check if all required permissions are granted
private fun allPermissionsGranted(): Boolean {
val missingPermissions = REQUIRED_PERMISSIONS.filter { permission ->
ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED
}
Log.d("MainActivity", "Missing permissions: $missingPermissions")
return missingPermissions.isEmpty()
}
// Request all necessary permissions
private fun requestPermissions() {
ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, 102)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == 102) {
val deniedPermissions = permissions.filterIndexed { index, _ ->
grantResults[index] != PackageManager.PERMISSION_GRANTED
}
if (deniedPermissions.isEmpty()) {
Log.d("MainActivity", "All permissions granted!")
initializeApp() // Call initializeApp only when permissions are granted
} else {
permissionAttempts++
if (permissionAttempts < 3) {
Toast.makeText(
this,
"Permissions denied: $deniedPermissions. Grant them to continue.",
Toast.LENGTH_LONG
).show()
requestPermissions()
} else {
showPermissionExplanation(deniedPermissions)
}
}
}
}
// Show a dialog explaining why permissions are needed
private fun showPermissionExplanation(deniedPermissions: List) {
AlertDialog.Builder(this)
.setTitle("Permissions Required")
.setMessage("The app requires the following permissions to function: $deniedPermissions. Please grant them in Settings.")
.setPositiveButton("Go to Settings") { _, _ ->
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.data = Uri.parse("package:$packageName")
startActivity(intent)
}
.setNegativeButton("Exit") { _, _ ->
finish()
}
.show()
}
// Loop to handle recording rounds
private fun startRecordingLoop() {
var currentRound = 1
fun recordRound() {
if (currentRound
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-update-n
Мобильная версия