mirror of
https://github.com/SimpleMobileTools/Simple-Camera.git
synced 2025-02-16 19:30:40 +01:00
create an interface to be reused by camera1 and camera2
This commit is contained in:
parent
cc4e07d1ff
commit
b2e9854b9a
@ -2,7 +2,6 @@ package com.simplemobiletools.camera.activities
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.hardware.Camera
|
|
||||||
import android.hardware.SensorManager
|
import android.hardware.SensorManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -19,6 +18,9 @@ import com.simplemobiletools.camera.R
|
|||||||
import com.simplemobiletools.camera.extensions.config
|
import com.simplemobiletools.camera.extensions.config
|
||||||
import com.simplemobiletools.camera.extensions.navBarHeight
|
import com.simplemobiletools.camera.extensions.navBarHeight
|
||||||
import com.simplemobiletools.camera.helpers.*
|
import com.simplemobiletools.camera.helpers.*
|
||||||
|
import com.simplemobiletools.camera.implementations.MyCameraOneImpl
|
||||||
|
import com.simplemobiletools.camera.implementations.MyCameraTwoImpl
|
||||||
|
import com.simplemobiletools.camera.interfaces.MyCamera
|
||||||
import com.simplemobiletools.camera.views.FocusRectView
|
import com.simplemobiletools.camera.views.FocusRectView
|
||||||
import com.simplemobiletools.camera.views.Preview
|
import com.simplemobiletools.camera.views.Preview
|
||||||
import com.simplemobiletools.camera.views.Preview.PreviewListener
|
import com.simplemobiletools.camera.views.Preview.PreviewListener
|
||||||
@ -33,6 +35,7 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave
|
|||||||
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 mCameraImpl: MyCamera
|
||||||
|
|
||||||
private var mPreview: Preview? = null
|
private var mPreview: Preview? = null
|
||||||
private var mPreviewUri: Uri? = null
|
private var mPreviewUri: Uri? = null
|
||||||
@ -57,8 +60,6 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
appLaunched(BuildConfig.APPLICATION_ID)
|
appLaunched(BuildConfig.APPLICATION_ID)
|
||||||
requestWindowFeature(Window.FEATURE_NO_TITLE)
|
requestWindowFeature(Window.FEATURE_NO_TITLE)
|
||||||
if (config.alwaysOpenBackCamera)
|
|
||||||
config.lastUsedCamera = Camera.CameraInfo.CAMERA_FACING_BACK
|
|
||||||
|
|
||||||
initVariables()
|
initVariables()
|
||||||
tryInitCamera()
|
tryInitCamera()
|
||||||
@ -120,6 +121,11 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave
|
|||||||
mCurrVideoRecTimer = 0
|
mCurrVideoRecTimer = 0
|
||||||
mCurrCameraId = 0
|
mCurrCameraId = 0
|
||||||
mLastHandledOrientation = 0
|
mLastHandledOrientation = 0
|
||||||
|
mCameraImpl = if (isLollipopPlus()) MyCameraTwoImpl(applicationContext) else MyCameraOneImpl(applicationContext)
|
||||||
|
|
||||||
|
if (config.alwaysOpenBackCamera) {
|
||||||
|
config.lastUsedCamera = mCameraImpl.getBackCameraId()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
||||||
@ -193,7 +199,7 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave
|
|||||||
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 (mCurrCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) R.drawable.ic_camera_front else R.drawable.ic_camera_rear)
|
toggle_camera.setImageResource(if (mCurrCameraId == mCameraImpl.getBackCameraId()) R.drawable.ic_camera_front else R.drawable.ic_camera_rear)
|
||||||
|
|
||||||
mFocusRectView = FocusRectView(applicationContext)
|
mFocusRectView = FocusRectView(applicationContext)
|
||||||
view_holder.addView(mFocusRectView)
|
view_holder.addView(mFocusRectView)
|
||||||
@ -220,17 +226,17 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mCurrCameraId = if (mCurrCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
|
mCurrCameraId = if (mCurrCameraId == mCameraImpl.getBackCameraId()) {
|
||||||
Camera.CameraInfo.CAMERA_FACING_FRONT
|
mCameraImpl.getFrontCameraId()
|
||||||
} else {
|
} else {
|
||||||
Camera.CameraInfo.CAMERA_FACING_BACK
|
mCameraImpl.getBackCameraId()
|
||||||
}
|
}
|
||||||
|
|
||||||
config.lastUsedCamera = mCurrCameraId
|
config.lastUsedCamera = mCurrCameraId
|
||||||
var newIconId = R.drawable.ic_camera_front
|
var newIconId = R.drawable.ic_camera_front
|
||||||
mPreview?.releaseCamera()
|
mPreview?.releaseCamera()
|
||||||
if (mPreview?.setCamera(mCurrCameraId) == true) {
|
if (mPreview?.setCamera(mCurrCameraId) == true) {
|
||||||
if (mCurrCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT) {
|
if (mCurrCameraId == mCameraImpl.getFrontCameraId()) {
|
||||||
newIconId = R.drawable.ic_camera_rear
|
newIconId = R.drawable.ic_camera_rear
|
||||||
}
|
}
|
||||||
toggle_camera.setImageResource(newIconId)
|
toggle_camera.setImageResource(newIconId)
|
||||||
@ -480,7 +486,7 @@ class MainActivity : SimpleActivity(), PreviewListener, PhotoProcessor.MediaSave
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun showToggleCameraIfNeeded() {
|
private fun showToggleCameraIfNeeded() {
|
||||||
toggle_camera?.beInvisibleIf(Camera.getNumberOfCameras() <= 1)
|
toggle_camera?.beInvisibleIf(mCameraImpl.getCountOfCameras() <= 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hasStorageAndCameraPermissions() = hasPermission(PERMISSION_WRITE_STORAGE) && hasPermission(PERMISSION_CAMERA)
|
private fun hasStorageAndCameraPermissions() = hasPermission(PERMISSION_WRITE_STORAGE) && hasPermission(PERMISSION_CAMERA)
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.simplemobiletools.camera.implementations
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.hardware.Camera
|
||||||
|
import com.simplemobiletools.camera.interfaces.MyCamera
|
||||||
|
|
||||||
|
class MyCameraOneImpl(val context: Context) : MyCamera() {
|
||||||
|
override fun getFrontCameraId() = Camera.CameraInfo.CAMERA_FACING_FRONT
|
||||||
|
|
||||||
|
override fun getBackCameraId() = Camera.CameraInfo.CAMERA_FACING_BACK
|
||||||
|
|
||||||
|
override fun getCountOfCameras() = Camera.getNumberOfCameras()
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.simplemobiletools.camera.implementations
|
||||||
|
|
||||||
|
import android.annotation.TargetApi
|
||||||
|
import android.content.Context
|
||||||
|
import android.hardware.camera2.CameraCharacteristics
|
||||||
|
import android.hardware.camera2.CameraManager
|
||||||
|
import android.os.Build
|
||||||
|
import com.simplemobiletools.camera.interfaces.MyCamera
|
||||||
|
|
||||||
|
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
class MyCameraTwoImpl(val context: Context) : MyCamera() {
|
||||||
|
override fun getFrontCameraId() = CameraCharacteristics.LENS_FACING_FRONT
|
||||||
|
|
||||||
|
override fun getBackCameraId() = CameraCharacteristics.LENS_FACING_BACK
|
||||||
|
|
||||||
|
override fun getCountOfCameras(): Int {
|
||||||
|
val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
||||||
|
return manager.cameraIdList.size
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.simplemobiletools.camera.interfaces
|
||||||
|
|
||||||
|
abstract class MyCamera {
|
||||||
|
abstract fun getFrontCameraId(): Int
|
||||||
|
|
||||||
|
abstract fun getBackCameraId(): Int
|
||||||
|
|
||||||
|
abstract fun getCountOfCameras(): Int
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user