fixing some startup crashes

This commit is contained in:
tibbi
2016-11-20 18:55:14 +01:00
parent 679103f810
commit e35f849548

View File

@ -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)