mirror of
https://github.com/SimpleMobileTools/Simple-Camera.git
synced 2025-06-27 09:02:59 +02:00
fixing some startup crashes
This commit is contained in:
@ -39,9 +39,9 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
lateinit var mFocusRectView: FocusRectView
|
lateinit var mFocusRectView: FocusRectView
|
||||||
lateinit var mTimerHandler: Handler
|
lateinit var mTimerHandler: Handler
|
||||||
lateinit var mFadeHandler: Handler
|
lateinit var mFadeHandler: Handler
|
||||||
lateinit var mPreview: Preview
|
|
||||||
lateinit var mRes: Resources
|
lateinit var mRes: Resources
|
||||||
|
|
||||||
|
private var mPreview: Preview? = null
|
||||||
private var mPreviewUri: Uri? = null
|
private var mPreviewUri: Uri? = null
|
||||||
private var mIsFlashEnabled = false
|
private var mIsFlashEnabled = false
|
||||||
private var mIsInPhotoMode = false
|
private var mIsInPhotoMode = false
|
||||||
@ -64,13 +64,6 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
tryInitCamera()
|
tryInitCamera()
|
||||||
|
|
||||||
supportActionBar?.hide()
|
supportActionBar?.hide()
|
||||||
|
|
||||||
toggle_camera.setOnClickListener { toggleCamera() }
|
|
||||||
last_photo_video_preview.setOnClickListener { showLastMediaPreview() }
|
|
||||||
toggle_flash.setOnClickListener { toggleFlash() }
|
|
||||||
shutter.setOnClickListener { shutterPressed() }
|
|
||||||
settings.setOnClickListener { launchSettings() }
|
|
||||||
toggle_photo_video.setOnClickListener { handleTogglePhotoVideo() }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
||||||
@ -118,7 +111,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
hideToggleModeAbout()
|
hideToggleModeAbout()
|
||||||
val output = intent.extras.get(MediaStore.EXTRA_OUTPUT)
|
val output = intent.extras.get(MediaStore.EXTRA_OUTPUT)
|
||||||
if (output != null && output is Uri) {
|
if (output != null && output is Uri) {
|
||||||
mPreview.setTargetUri(output)
|
mPreview?.setTargetUri(output)
|
||||||
}
|
}
|
||||||
} else if (intent.action == MediaStore.ACTION_VIDEO_CAPTURE) {
|
} else if (intent.action == MediaStore.ACTION_VIDEO_CAPTURE) {
|
||||||
mIsVideoCaptureIntent = true
|
mIsVideoCaptureIntent = true
|
||||||
@ -130,6 +123,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
|
|
||||||
private fun initializeCamera() {
|
private fun initializeCamera() {
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
|
initButtons()
|
||||||
|
|
||||||
if (Utils.hasNavBar(mRes) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
if (Utils.hasNavBar(mRes) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||||
val lp = btn_holder.layoutParams as RelativeLayout.LayoutParams
|
val lp = btn_holder.layoutParams as RelativeLayout.LayoutParams
|
||||||
@ -138,7 +132,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
|
|
||||||
mCurrCamera = config.lastUsedCamera
|
mCurrCamera = config.lastUsedCamera
|
||||||
mPreview = Preview(this, camera_view, this)
|
mPreview = Preview(this, camera_view, this)
|
||||||
mPreview.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
mPreview!!.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
|
||||||
view_holder.addView(mPreview)
|
view_holder.addView(mPreview)
|
||||||
toggle_camera.setImageResource(if (mCurrCamera == Camera.CameraInfo.CAMERA_FACING_BACK) R.mipmap.camera_front else R.mipmap.camera_back)
|
toggle_camera.setImageResource(if (mCurrCamera == Camera.CameraInfo.CAMERA_FACING_BACK) R.mipmap.camera_front else R.mipmap.camera_back)
|
||||||
|
|
||||||
@ -153,6 +147,15 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
setupPreviewImage(true)
|
setupPreviewImage(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun initButtons() {
|
||||||
|
toggle_camera.setOnClickListener { toggleCamera() }
|
||||||
|
last_photo_video_preview.setOnClickListener { showLastMediaPreview() }
|
||||||
|
toggle_flash.setOnClickListener { toggleFlash() }
|
||||||
|
shutter.setOnClickListener { shutterPressed() }
|
||||||
|
settings.setOnClickListener { launchSettings() }
|
||||||
|
toggle_photo_video.setOnClickListener { handleTogglePhotoVideo() }
|
||||||
|
}
|
||||||
|
|
||||||
private fun hasCameraAndStoragePermission() = Utils.hasCameraPermission(applicationContext) && hasStoragePermission()
|
private fun hasCameraAndStoragePermission() = Utils.hasCameraPermission(applicationContext) && hasStoragePermission()
|
||||||
|
|
||||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
||||||
@ -191,8 +194,8 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
|
|
||||||
config.lastUsedCamera = mCurrCamera
|
config.lastUsedCamera = mCurrCamera
|
||||||
var newIconId = R.mipmap.camera_front
|
var newIconId = R.mipmap.camera_front
|
||||||
mPreview.releaseCamera()
|
mPreview?.releaseCamera()
|
||||||
if (mPreview.setCamera(mCurrCamera)) {
|
if (mPreview?.setCamera(mCurrCamera) == true) {
|
||||||
if (mCurrCamera == Camera.CameraInfo.CAMERA_FACING_FRONT) {
|
if (mCurrCamera == Camera.CameraInfo.CAMERA_FACING_FRONT) {
|
||||||
newIconId = R.mipmap.camera_back
|
newIconId = R.mipmap.camera_back
|
||||||
}
|
}
|
||||||
@ -240,14 +243,14 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun disableFlash() {
|
private fun disableFlash() {
|
||||||
mPreview.disableFlash()
|
mPreview?.disableFlash()
|
||||||
toggle_flash.setImageResource(R.mipmap.flash_off)
|
toggle_flash.setImageResource(R.mipmap.flash_off)
|
||||||
mIsFlashEnabled = false
|
mIsFlashEnabled = false
|
||||||
config.lastFlashlightState = mIsFlashEnabled
|
config.lastFlashlightState = mIsFlashEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun enableFlash() {
|
private fun enableFlash() {
|
||||||
mPreview.enableFlash()
|
mPreview?.enableFlash()
|
||||||
toggle_flash.setImageResource(R.mipmap.flash_on)
|
toggle_flash.setImageResource(R.mipmap.flash_on)
|
||||||
mIsFlashEnabled = true
|
mIsFlashEnabled = true
|
||||||
config.lastFlashlightState = mIsFlashEnabled
|
config.lastFlashlightState = mIsFlashEnabled
|
||||||
@ -262,11 +265,10 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
private fun handleShutter() {
|
private fun handleShutter() {
|
||||||
if (mIsInPhotoMode) {
|
if (mIsInPhotoMode) {
|
||||||
toggleBottomButtons(true)
|
toggleBottomButtons(true)
|
||||||
mPreview.takePicture()
|
mPreview?.takePicture()
|
||||||
Handler().postDelayed({ toggleBottomButtons(false) }, Preview.PHOTO_PREVIEW_LENGTH.toLong())
|
Handler().postDelayed({ toggleBottomButtons(false) }, Preview.PHOTO_PREVIEW_LENGTH.toLong())
|
||||||
} else {
|
} else {
|
||||||
val isRecording = mPreview.toggleRecording()
|
if (mPreview?.toggleRecording() == true) {
|
||||||
if (isRecording) {
|
|
||||||
shutter.setImageDrawable(mRes.getDrawable(R.mipmap.video_stop))
|
shutter.setImageDrawable(mRes.getDrawable(R.mipmap.video_stop))
|
||||||
toggle_camera.visibility = View.INVISIBLE
|
toggle_camera.visibility = View.INVISIBLE
|
||||||
showTimer()
|
showTimer()
|
||||||
@ -311,7 +313,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mIsVideoCaptureIntent)
|
if (mIsVideoCaptureIntent)
|
||||||
mPreview.trySwitchToVideo()
|
mPreview?.trySwitchToVideo()
|
||||||
|
|
||||||
disableFlash()
|
disableFlash()
|
||||||
hideTimer()
|
hideTimer()
|
||||||
@ -330,12 +332,12 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
private fun initPhotoButtons() {
|
private fun initPhotoButtons() {
|
||||||
toggle_photo_video.setImageDrawable(mRes.getDrawable(R.mipmap.videocam))
|
toggle_photo_video.setImageDrawable(mRes.getDrawable(R.mipmap.videocam))
|
||||||
shutter.setImageDrawable(mRes.getDrawable(R.mipmap.camera))
|
shutter.setImageDrawable(mRes.getDrawable(R.mipmap.camera))
|
||||||
mPreview.initPhotoMode()
|
mPreview?.initPhotoMode()
|
||||||
setupPreviewImage(true)
|
setupPreviewImage(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun tryInitVideoButtons() {
|
private fun tryInitVideoButtons() {
|
||||||
if (mPreview.initRecorder()) {
|
if (mPreview?.initRecorder() == true) {
|
||||||
initVideoButtons()
|
initVideoButtons()
|
||||||
} else {
|
} else {
|
||||||
if (!mIsVideoCaptureIntent) {
|
if (!mIsVideoCaptureIntent) {
|
||||||
@ -446,7 +448,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
toggle_camera.visibility = View.INVISIBLE
|
toggle_camera.visibility = View.INVISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mPreview.setCamera(mCurrCamera)) {
|
if (mPreview?.setCamera(mCurrCamera) == true) {
|
||||||
hideNavigationBarIcons()
|
hideNavigationBarIcons()
|
||||||
checkFlash()
|
checkFlash()
|
||||||
|
|
||||||
@ -470,7 +472,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
mFadeHandler.removeCallbacksAndMessages(null)
|
mFadeHandler.removeCallbacksAndMessages(null)
|
||||||
|
|
||||||
hideTimer()
|
hideTimer()
|
||||||
mPreview.releaseCamera()
|
mPreview?.releaseCamera()
|
||||||
mSensorManager.unregisterListener(this)
|
mSensorManager.unregisterListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -558,7 +560,7 @@ class MainActivity : SimpleActivity(), SensorEventListener, PreviewListener, Pho
|
|||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
config.isFirstRun = false
|
config.isFirstRun = false
|
||||||
mPreview.releaseCamera()
|
mPreview?.releaseCamera()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onScanCompleted(path: String, uri: Uri) = setupPreviewImage(mIsInPhotoMode)
|
override fun onScanCompleted(path: String, uri: Uri) = setupPreviewImage(mIsInPhotoMode)
|
||||||
|
Reference in New Issue
Block a user