Skip to content

Commit e35f849

Browse files
committed
fixing some startup crashes
1 parent 679103f commit e35f849

1 file changed

Lines changed: 25 additions & 23 deletions

File tree

app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
3939
lateinit var mFocusRectView: FocusRectView
4040
lateinit var mTimerHandler: Handler
4141
lateinit var mFadeHandler: Handler
42-
lateinit var mPreview: Preview
4342
lateinit var mRes: Resources
4443

44+
private var mPreview: Preview? = null
4545
private var mPreviewUri: Uri? = null
4646
private var mIsFlashEnabled = false
4747
private var mIsInPhotoMode = false
@@ -64,13 +64,6 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
6464
tryInitCamera()
6565

6666
supportActionBar?.hide()
67-
68-
toggle_camera.setOnClickListener { toggleCamera() }
69-
last_photo_video_preview.setOnClickListener { showLastMediaPreview() }
70-
toggle_flash.setOnClickListener { toggleFlash() }
71-
shutter.setOnClickListener { shutterPressed() }
72-
settings.setOnClickListener { launchSettings() }
73-
toggle_photo_video.setOnClickListener { handleTogglePhotoVideo() }
7467
}
7568

7669
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
@@ -118,7 +111,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
118111
hideToggleModeAbout()
119112
val output = intent.extras.get(MediaStore.EXTRA_OUTPUT)
120113
if (output != null && output is Uri) {
121-
mPreview.setTargetUri(output)
114+
mPreview?.setTargetUri(output)
122115
}
123116
} else if (intent.action == MediaStore.ACTION_VIDEO_CAPTURE) {
124117
mIsVideoCaptureIntent = true
@@ -130,6 +123,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
130123

131124
private fun initializeCamera() {
132125
setContentView(R.layout.activity_main)
126+
initButtons()
133127

134128
if (Utils.hasNavBar(mRes) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
135129
val lp = btn_holder.layoutParams as RelativeLayout.LayoutParams
@@ -138,7 +132,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
138132

139133
mCurrCamera = config.lastUsedCamera
140134
mPreview = Preview(this, camera_view, this)
141-
mPreview.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
135+
mPreview!!.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
142136
view_holder.addView(mPreview)
143137
toggle_camera.setImageResource(if (mCurrCamera == Camera.CameraInfo.CAMERA_FACING_BACK) R.mipmap.camera_front else R.mipmap.camera_back)
144138

@@ -153,6 +147,15 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
153147
setupPreviewImage(true)
154148
}
155149

150+
private fun initButtons() {
151+
toggle_camera.setOnClickListener { toggleCamera() }
152+
last_photo_video_preview.setOnClickListener { showLastMediaPreview() }
153+
toggle_flash.setOnClickListener { toggleFlash() }
154+
shutter.setOnClickListener { shutterPressed() }
155+
settings.setOnClickListener { launchSettings() }
156+
toggle_photo_video.setOnClickListener { handleTogglePhotoVideo() }
157+
}
158+
156159
private fun hasCameraAndStoragePermission() = Utils.hasCameraPermission(applicationContext) && hasStoragePermission()
157160

158161
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
@@ -191,8 +194,8 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
191194

192195
config.lastUsedCamera = mCurrCamera
193196
var newIconId = R.mipmap.camera_front
194-
mPreview.releaseCamera()
195-
if (mPreview.setCamera(mCurrCamera)) {
197+
mPreview?.releaseCamera()
198+
if (mPreview?.setCamera(mCurrCamera) == true) {
196199
if (mCurrCamera == Camera.CameraInfo.CAMERA_FACING_FRONT) {
197200
newIconId = R.mipmap.camera_back
198201
}
@@ -240,14 +243,14 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
240243
}
241244

242245
private fun disableFlash() {
243-
mPreview.disableFlash()
246+
mPreview?.disableFlash()
244247
toggle_flash.setImageResource(R.mipmap.flash_off)
245248
mIsFlashEnabled = false
246249
config.lastFlashlightState = mIsFlashEnabled
247250
}
248251

249252
private fun enableFlash() {
250-
mPreview.enableFlash()
253+
mPreview?.enableFlash()
251254
toggle_flash.setImageResource(R.mipmap.flash_on)
252255
mIsFlashEnabled = true
253256
config.lastFlashlightState = mIsFlashEnabled
@@ -262,11 +265,10 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
262265
private fun handleShutter() {
263266
if (mIsInPhotoMode) {
264267
toggleBottomButtons(true)
265-
mPreview.takePicture()
268+
mPreview?.takePicture()
266269
Handler().postDelayed({ toggleBottomButtons(false) }, Preview.PHOTO_PREVIEW_LENGTH.toLong())
267270
} else {
268-
val isRecording = mPreview.toggleRecording()
269-
if (isRecording) {
271+
if (mPreview?.toggleRecording() == true) {
270272
shutter.setImageDrawable(mRes.getDrawable(R.mipmap.video_stop))
271273
toggle_camera.visibility = View.INVISIBLE
272274
showTimer()
@@ -311,7 +313,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
311313
}
312314

313315
if (mIsVideoCaptureIntent)
314-
mPreview.trySwitchToVideo()
316+
mPreview?.trySwitchToVideo()
315317

316318
disableFlash()
317319
hideTimer()
@@ -330,12 +332,12 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
330332
private fun initPhotoButtons() {
331333
toggle_photo_video.setImageDrawable(mRes.getDrawable(R.mipmap.videocam))
332334
shutter.setImageDrawable(mRes.getDrawable(R.mipmap.camera))
333-
mPreview.initPhotoMode()
335+
mPreview?.initPhotoMode()
334336
setupPreviewImage(true)
335337
}
336338

337339
private fun tryInitVideoButtons() {
338-
if (mPreview.initRecorder()) {
340+
if (mPreview?.initRecorder() == true) {
339341
initVideoButtons()
340342
} else {
341343
if (!mIsVideoCaptureIntent) {
@@ -446,7 +448,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
446448
toggle_camera.visibility = View.INVISIBLE
447449
}
448450

449-
if (mPreview.setCamera(mCurrCamera)) {
451+
if (mPreview?.setCamera(mCurrCamera) == true) {
450452
hideNavigationBarIcons()
451453
checkFlash()
452454

@@ -470,7 +472,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
470472
mFadeHandler.removeCallbacksAndMessages(null)
471473

472474
hideTimer()
473-
mPreview.releaseCamera()
475+
mPreview?.releaseCamera()
474476
mSensorManager.unregisterListener(this)
475477
}
476478

@@ -558,7 +560,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
558560
override fun onDestroy() {
559561
super.onDestroy()
560562
config.isFirstRun = false
561-
mPreview.releaseCamera()
563+
mPreview?.releaseCamera()
562564
}
563565

564566
override fun onScanCompleted(path: String, uri: Uri) = setupPreviewImage(mIsInPhotoMode)

0 commit comments

Comments
 (0)