android - 长按开始录制视频,同时在图像捕获UseCase android
问题描述
我必须在 android 中实现类似 Instagram 的视频录制功能。我启用了图像捕获 UseCase 并且长按我需要将用例更改为 videoCapture 并立即开始录制视频。请帮助我实现此功能。我已经处理了可以长按的情况。唯一给我的问题是,在更改视频捕获后,我需要开始录制。如果不是,它将在不更改用例的情况下录制视频时给我一个非法参数例外。这是一些可供参考的代码。
shutterButton.setOnLongClickListener {
longClickActive = true
return@setOnLongClickListener true
}
shutterButton.setOnTouchListener { view, motionEvent ->
when (motionEvent.action) {
MotionEvent.ACTION_DOWN -> {
shutterGestureDetector.onTouchEvent(motionEvent)
}
MotionEvent.ACTION_UP -> {
shutterCountDownTimer?.cancel()
if (longClickActive) {
recordVideo() // Also stops the video recording
longClickActive = false
}
}
}
return@setOnTouchListener true
}
}
}
private val shutterGestureDetector = GestureDetector(context,
object : SimpleOnGestureListener() {
override fun onSingleTapUp(e: MotionEvent): Boolean {
clickPicture() // captures just an Image
return true
}
override fun onLongPress(e: MotionEvent) {
longClickActive = true
startVideoCamera()
recordVideo()
shutterCountDownTimer = object : CountDownTimer(30000, 1000) {
override fun onTick(millisUntilFinished: Long) {
mViewBinding.shutterProgressBar.progress =
millisUntilFinished.toInt() * 100 / (5000 / 1000)
}
override fun onFinish() {
if (longClickActive) {
recordVideo()
longClickActive = false
}
}
}.start()
}
}
})
请帮助我实现此功能,即使是零碎的。:)
解决方案
推荐阅读
- php - 尝试通过 heroku 中的 supervisord 运行 apache 遇到 chown 问题
- clojure - 如何在 Clojure 中指定没有参数的函数?
- python - 处理 websockets 模块异常和错误
- vue.js - 如何使用 $emit 或 vuex 从组件向主实例发出事件
- python - 如何使用 python 脚本读取/翻译 *txt.erb 模板(ruby)
- c++ - 如何在使用 Visual Studio 2019 的 cmake 项目中使用库(dll/lib)
- python - 代码工作正常,但是当整个代码放在 def() 函数中时,不能完全工作
- python - 为什么mypy会抱怨'“Type [Logger]”没有属性“manager”'
- python - Boto3 s3 python upload_file反复重试
- javascript - 如何在对象中使用 Javascript url 键