Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

actions: less warnings is more (fixes #3777) #3781

Merged
merged 6 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
applicationId "org.ole.planet.myplanet"
minSdkVersion 21
targetSdkVersion 34
versionCode 1656
versionName "0.16.56"
versionCode 1657
versionName "0.16.57"
ndkVersion '21.3.6528147'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import org.ole.planet.myplanet.model.RealmSubmission
import org.ole.planet.myplanet.model.RealmUserModel
import org.ole.planet.myplanet.service.UserProfileDbHandler
import org.ole.planet.myplanet.ui.exam.TakeExamFragment
import org.ole.planet.myplanet.utilities.CameraUtils.CapturePhoto
import org.ole.planet.myplanet.utilities.CameraUtils.capturePhoto
import org.ole.planet.myplanet.utilities.CameraUtils.ImageCaptureCallback
import org.ole.planet.myplanet.utilities.Constants
import org.ole.planet.myplanet.utilities.Constants.showBetaFeature
Expand Down Expand Up @@ -164,7 +164,7 @@ class CourseStepFragment : BaseContainerFragment(), ImageCaptureCallback {
takeExam.arguments = b
homeItemClickListener?.openCallFragment(takeExam)
context?.let { it1 ->
CapturePhoto(it1, object : ImageCaptureCallback {
capturePhoto(it1, object : ImageCaptureCallback {
override fun onImageCapture(fileUri: String?) {
}
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import org.ole.planet.myplanet.model.RealmExamQuestion
import org.ole.planet.myplanet.model.RealmSubmission
import org.ole.planet.myplanet.model.RealmSubmission.Companion.createSubmission
import org.ole.planet.myplanet.service.UserProfileDbHandler
import org.ole.planet.myplanet.utilities.CameraUtils.CapturePhoto
import org.ole.planet.myplanet.utilities.CameraUtils.capturePhoto
import org.ole.planet.myplanet.utilities.CameraUtils.ImageCaptureCallback
import org.ole.planet.myplanet.utilities.JsonParserUtils.getStringAsJsonArray
import org.ole.planet.myplanet.utilities.JsonUtils.getString
Expand Down Expand Up @@ -210,7 +210,7 @@ class TakeExamFragment : BaseExamFragment(), View.OnClickListener, CompoundButto
try {
if (isCertified && !isMySurvey) {
context?.let { it1 ->
CapturePhoto(it1, object : ImageCaptureCallback {
capturePhoto(it1, object : ImageCaptureCallback {
override fun onImageCapture(fileUri: String?) {
}
})
Expand Down
77 changes: 50 additions & 27 deletions app/src/main/java/org/ole/planet/myplanet/utilities/CameraUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,28 @@ import android.content.pm.PackageManager
import android.graphics.ImageFormat
import android.graphics.SurfaceTexture
import android.hardware.camera2.*
import android.hardware.camera2.params.OutputConfiguration
import android.hardware.camera2.params.SessionConfiguration
import android.media.ImageReader
import android.os.Build
import android.os.Handler
import android.os.HandlerThread
import android.util.Size
import android.view.Surface
import androidx.core.content.ContextCompat
import java.io.File
import java.io.FileOutputStream
import java.util.*
import java.util.concurrent.Executors

object CameraUtils {
private var cameraDevice: CameraDevice? = null
private var captureSession: CameraCaptureSession? = null
private var imageReader: ImageReader? = null
private var backgroundHandler: Handler
private var backgroundThread: HandlerThread
private var backgroundThread: HandlerThread = HandlerThread("CameraBackground")

@JvmStatic
fun CapturePhoto(context: Context, callback: ImageCaptureCallback) {
fun capturePhoto(context: Context, callback: ImageCaptureCallback) {
if (ContextCompat.checkSelfPermission(
context,
Manifest.permission.CAMERA
Expand All @@ -48,11 +52,7 @@ object CameraUtils {
captureBuilder?.addTarget(imageReader!!.surface)
captureBuilder?.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE)

val captureCallback = object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) {
super.onCaptureCompleted(session, request, result)
}
}
val captureCallback = object : CameraCaptureSession.CaptureCallback() {}

captureSession?.stopRepeating()
captureSession?.abortCaptures()
Expand Down Expand Up @@ -83,13 +83,6 @@ object CameraUtils {
val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
try {
val cameraId = manager.cameraIdList[0] // Assuming we want to use the first (rear) camera
val characteristics = manager.getCameraCharacteristics(cameraId)
val map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
val largest = Collections.max(
listOf(*map!!.getOutputSizes(ImageFormat.JPEG)),
CompareSizesByArea()
)
val reader = ImageReader.newInstance(largest.width, largest.height, ImageFormat.JPEG, 2)
manager.openCamera(cameraId, object : CameraDevice.StateCallback() {
override fun onOpened(camera: CameraDevice) {
cameraDevice = camera
Expand Down Expand Up @@ -117,9 +110,10 @@ object CameraUtils {
val surface = Surface(texture)
val captureRequestBuilder = cameraDevice!!.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)
captureRequestBuilder.addTarget(surface)
cameraDevice!!.createCaptureSession(
listOf(surface),
object : CameraCaptureSession.StateCallback() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val outputConfigurations = listOf(OutputConfiguration(surface))
val executor = Executors.newSingleThreadExecutor()
val stateCallback = object : CameraCaptureSession.StateCallback() {
override fun onConfigured(session: CameraCaptureSession) {
if (cameraDevice == null) return
captureSession = session
Expand All @@ -139,9 +133,44 @@ object CameraUtils {
}

override fun onConfigureFailed(session: CameraCaptureSession) {}
},
backgroundHandler
)
}

val sessionConfiguration = SessionConfiguration(
SessionConfiguration.SESSION_REGULAR,
outputConfigurations,
executor,
stateCallback
)

cameraDevice!!.createCaptureSession(sessionConfiguration)
} else {
@Suppress("DEPRECATION")
cameraDevice!!.createCaptureSession(
listOf(surface),
object : CameraCaptureSession.StateCallback() {
override fun onConfigured(session: CameraCaptureSession) {
if (cameraDevice == null) return
captureSession = session
try {
captureRequestBuilder.set(
CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
)
captureSession!!.setRepeatingRequest(
captureRequestBuilder.build(),
null,
backgroundHandler
)
} catch (e: CameraAccessException) {
e.printStackTrace()
}
}

override fun onConfigureFailed(session: CameraCaptureSession) {}
},
backgroundHandler
)
}
} catch (e: CameraAccessException) {
e.printStackTrace()
}
Expand All @@ -151,13 +180,7 @@ object CameraUtils {
fun onImageCapture(fileUri: String?)
}

private class CompareSizesByArea : Comparator<Size> {
override fun compare(lhs: Size, rhs: Size): Int {
return java.lang.Long.signum(lhs.width.toLong() * lhs.height - rhs.width.toLong() * rhs.height)
}
}
init {
backgroundThread = HandlerThread("CameraBackground")
backgroundThread.start()
backgroundHandler = Handler(backgroundThread.looper)
}
Expand Down