@@ -19,6 +19,7 @@ import androidx.camera.core.*
19
19
import androidx.camera.lifecycle.ProcessCameraProvider
20
20
import androidx.camera.view.PreviewView
21
21
import androidx.core.content.ContextCompat
22
+ import androidx.fragment.app.Fragment
22
23
import androidx.lifecycle.LifecycleOwner
23
24
import com.furkan.camerax_mlkit_pack.core.Constants
24
25
import com.furkan.camerax_mlkit_pack.core.Constants.CAMERA_RESOLUTION_HEIGHT
@@ -47,13 +48,15 @@ import java.util.concurrent.TimeUnit
47
48
48
49
class CameraxManager (
49
50
context : Context ,
51
+ fragment : Fragment ? ,
50
52
previewView : PreviewView ,
51
53
focusRing : ImageView ,
52
54
cameraSelectorType : Int? = CameraSelector .LENS_FACING_BACK ,
53
55
accuracyLevel : Int = Constants .BARCODE_ACCURACY_DEFAULT_COUNT
54
56
) {
55
57
56
58
private var mContext = context
59
+ private var mFragment = fragment
57
60
private var mPreviewView = previewView
58
61
private var mFocusRing = focusRing
59
62
private var cameraControl: CameraControl ? = null
@@ -120,6 +123,7 @@ class CameraxManager(
120
123
121
124
fun getInstance (
122
125
context : Context ,
126
+ fragment : Fragment ,
123
127
previewView : PreviewView ,
124
128
focusRing : ImageView ,
125
129
cameraSelectorType : Int? = CameraSelector .LENS_FACING_BACK ,
@@ -128,6 +132,7 @@ class CameraxManager(
128
132
? : synchronized(this ) {
129
133
INSTANCE ? : CameraxManager (
130
134
context,
135
+ fragment,
131
136
previewView,
132
137
focusRing,
133
138
cameraSelectorType,
@@ -148,7 +153,7 @@ class CameraxManager(
148
153
}
149
154
150
155
fun startCamera () {
151
- if (cameraExecutor.isShutdown || cameraExecutor.isTerminated) {
156
+ if (cameraExecutor.isShutdown || cameraExecutor.isTerminated) {
152
157
cameraExecutor = Executors .newSingleThreadExecutor()
153
158
}
154
159
addCameraProviderFeatureListener()
@@ -352,10 +357,18 @@ class CameraxManager(
352
357
preview.setSurfaceProvider(mPreviewView.surfaceProvider)
353
358
354
359
cameraProvider.unbindAll()
355
- val camera: Camera = cameraProvider.bindToLifecycle(
356
- (mContext as LifecycleOwner ), cameraSelector!! ,
357
- imageAnalysisUseCase, preview, imageCaptureBuilder
358
- )
360
+ val camera: Camera = if (mFragment != null ) {
361
+ cameraProvider.bindToLifecycle(
362
+ (mFragment as LifecycleOwner ), cameraSelector!! ,
363
+ imageAnalysisUseCase, preview, imageCaptureBuilder
364
+ )
365
+ } else {
366
+ cameraProvider.bindToLifecycle(
367
+ (mContext as LifecycleOwner ), cameraSelector!! ,
368
+ imageAnalysisUseCase, preview, imageCaptureBuilder
369
+ )
370
+ }
371
+
359
372
cameraControl = camera.cameraControl
360
373
}
361
374
0 commit comments