clean code and show/hide recording buttons

This commit is contained in:
Urko. 2024-01-31 07:35:12 +01:00
parent 19b7d4c019
commit 5dee3a20bb
2 changed files with 27 additions and 23 deletions

View File

@ -6,6 +6,7 @@ import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
@ -94,6 +95,7 @@ class MainActivity : AppCompatActivity() {
private fun initStartCamera(){
startFrontCameraButton.setOnClickListener {
useFrontCamera = true
manageRecordingButtonsVisibility(startRecording = true)
if (hasCameraPermission()) {
startRecordingService(useFrontCamera)
} else {
@ -103,6 +105,7 @@ class MainActivity : AppCompatActivity() {
startBackCameraButton.setOnClickListener {
useFrontCamera = false
manageRecordingButtonsVisibility(startRecording = true)
if (hasCameraPermission()) {
startRecordingService(useFrontCamera)
} else {
@ -111,6 +114,7 @@ class MainActivity : AppCompatActivity() {
}
stopCameraButton.setOnClickListener {
manageRecordingButtonsVisibility(startRecording = false)
stopRecordingService()
}
}
@ -127,11 +131,20 @@ class MainActivity : AppCompatActivity() {
private fun stopRecordingService() {
Log.e("main", "stopRecordingService")
val serviceIntent = Intent(this, RecordingService::class.java).apply {
action = RecordingService.ACTION_STOP_RECORDING
}
// startService(serviceIntent) // Note: Using startService to send the stop action
val serviceIntent = Intent(this, RecordingService::class.java)
stopService(serviceIntent)
}
private fun manageRecordingButtonsVisibility(startRecording: Boolean) {
if (startRecording) {
startFrontCameraButton.visibility = View.GONE
startBackCameraButton.visibility = View.GONE
stopCameraButton.visibility = View.VISIBLE
} else {
startFrontCameraButton.visibility = View.VISIBLE
startBackCameraButton.visibility = View.VISIBLE
stopCameraButton.visibility = View.GONE
}
}
}

View File

@ -94,7 +94,7 @@ class RecordingService : LifecycleService() {
}
private fun createNotification(): Notification {
private fun createNotification(): Notification {
val notificationIntent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
this,
@ -115,7 +115,6 @@ class RecordingService : LifecycleService() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
useFrontCamera = intent?.getBooleanExtra("useFrontCamera", false) ?: false
when (intent?.action) {
ACTION_START_RECORDING -> {
if (isCameraInitialized) {
captureVideo()
@ -127,25 +126,18 @@ class RecordingService : LifecycleService() {
})
}
}
ACTION_STOP_RECORDING -> {
Log.e(tag, ACTION_STOP_RECORDING)
stopRecording()
// return START_NOT_STICKY
}
}
// return START_STICKY
return super.onStartCommand(intent, flags, startId)
}
// override fun onDestroy() {
// Log.e(tag, "ON DESTROY IS CALLED SHOUlD STOP CAMERA")
// // Release resources
// stopRecording()
// cameraExecutor.shutdown()
// // Consider releasing cameraProvider here if needed
// Log.e(tag, "Resources released")
// super.onDestroy()
// }
override fun onDestroy() {
Log.e(tag, "ON DESTROY IS CALLED SHOUlD STOP CAMERA")
// Release resources
stopRecording()
cameraExecutor.shutdown()
Log.e(tag, "Resources released")
super.onDestroy()
}
private fun startCamera() {
Log.e(tag, "startCamera")
@ -242,12 +234,11 @@ class RecordingService : LifecycleService() {
curRecording.stop()
recording = null
Log.e(tag, "Recording stopped. Now stopping service.")
stopSelf() // Add this line to stop the service.
stopSelf() // This will stop the service.
} else {
Log.e(tag, "No active recording to stop")
}
}
}
interface CameraInitializedCallback {