Camera timer
This commit is contained in:
parent
cac264043f
commit
9c2da04a11
@ -1,8 +1,12 @@
|
||||
package sushi.hardcore.droidfs
|
||||
|
||||
import android.graphics.Color
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import android.text.InputType
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.EditText
|
||||
import android.widget.Toast
|
||||
import com.otaliastudios.cameraview.CameraListener
|
||||
import com.otaliastudios.cameraview.PictureResult
|
||||
@ -13,6 +17,7 @@ import sushi.hardcore.droidfs.util.GocryptfsVolume
|
||||
import sushi.hardcore.droidfs.util.MiscUtils
|
||||
import sushi.hardcore.droidfs.util.PathUtils
|
||||
import sushi.hardcore.droidfs.widgets.ColoredAlertDialogBuilder
|
||||
import sushi.hardcore.droidfs.widgets.ThemeColor
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.FileOutputStream
|
||||
import java.io.InputStream
|
||||
@ -28,6 +33,15 @@ class CameraActivity : AppCompatActivity() {
|
||||
private val random = Random()
|
||||
}
|
||||
private var currentFlashModeIndex = 0
|
||||
private var timerDuration = 0
|
||||
set(value) {
|
||||
field = value
|
||||
if (value > 0){
|
||||
image_timer.setColorFilter(Color.GREEN)
|
||||
} else {
|
||||
image_timer.clearColorFilter()
|
||||
}
|
||||
}
|
||||
private lateinit var gocryptfsVolume: GocryptfsVolume
|
||||
private lateinit var outputDirectory: String
|
||||
private lateinit var fileName: String
|
||||
@ -61,7 +75,21 @@ class CameraActivity : AppCompatActivity() {
|
||||
do {
|
||||
fileName = baseName+(random.nextInt(fileNameRandomMax-fileNameRandomMin)+fileNameRandomMin)+".jpg"
|
||||
} while (gocryptfsVolume.pathExists(fileName))
|
||||
if (timerDuration > 0){
|
||||
text_timer.visibility = View.VISIBLE
|
||||
Thread{
|
||||
for (i in timerDuration downTo 1){
|
||||
runOnUiThread { text_timer.text = i.toString() }
|
||||
Thread.sleep(1000)
|
||||
}
|
||||
runOnUiThread {
|
||||
camera.takePicture()
|
||||
text_timer.visibility = View.GONE
|
||||
}
|
||||
}.start()
|
||||
} else {
|
||||
camera.takePicture()
|
||||
}
|
||||
}
|
||||
|
||||
fun onClickFlash(view: View) {
|
||||
@ -86,4 +114,25 @@ class CameraActivity : AppCompatActivity() {
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
|
||||
fun onClickTimer(view: View) {
|
||||
val dialogEditTextView = layoutInflater.inflate(R.layout.dialog_edit_text, null)
|
||||
val dialogEditText = dialogEditTextView.findViewById<EditText>(R.id.dialog_edit_text)
|
||||
dialogEditText.inputType = InputType.TYPE_CLASS_NUMBER
|
||||
val dialog = ColoredAlertDialogBuilder(this)
|
||||
.setView(dialogEditTextView)
|
||||
.setTitle("Enter the timer duration (in s)")
|
||||
.setPositiveButton(R.string.ok) { _, _ ->
|
||||
timerDuration = dialogEditText.text.toString().toInt()
|
||||
}
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create()
|
||||
dialogEditText.setOnEditorActionListener { _, _, _ ->
|
||||
timerDuration = dialogEditText.text.toString().toInt()
|
||||
dialog.dismiss()
|
||||
true
|
||||
}
|
||||
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
||||
dialog.show()
|
||||
}
|
||||
}
|
6
app/src/main/res/drawable/icon_timer.xml
Normal file
6
app/src/main/res/drawable/icon_timer.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M12.5,7H11v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z"/>
|
||||
</vector>
|
@ -14,6 +14,30 @@
|
||||
app:cameraPictureFormat="jpeg"
|
||||
app:cameraAudio="off"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginTop="20dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image_timer"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:src="@drawable/icon_timer"
|
||||
android:layout_centerInParent="true"
|
||||
android:onClick="onClickTimer"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_timer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="100sp"
|
||||
android:layout_centerInParent="true"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
|
Loading…
Reference in New Issue
Block a user