我想设计一个按钮让用户选择一个图像和一个音频,然后应用程序创建一个视频与图像和音频。
我希望以一种方式实现:
-
用户点击按钮
-
启动从图库中选择照片的意图。
-
在用户选择一张照片并返回结果后,启动第二个意图来选择一个音频。
-
用户选择音频后,应用程序为其生成视频。
实现它们的最佳方式是什么?
有可能像下面这样写吗?
fun onClick() {
getImage.launch(firstIntent)
getAudio.launch(secondIntent)
process(image, audio)
}
如果没有,我仍然可以使用分隔的ActivityResult回调来编写它们,如
fun process(val image: Uri, val audio: Uri) {
...
}
val getAudio = registerForActivityResult(...) {result ->
val audio = getAudio(result.data)
// get image somewhere
process(image, audio)
}
val getImage = registerForActivityResult(...) {
val image = getImage(result.data)
// save image somewhere
val intent = getAudioIntent()
getAudio.launch(intent)
}
fun onClick() {
val intent = getImageIntent()
getImage.launch(intent)
}
我面临的一个困难是在启动第二个意图时将图像存储在某个地方。
第一种方法是行不通的,尝试像那样启动两个intent最多只能导致一个启动,然后另一个在它上面,并且可能导致1在backstack中被跳过。唯一的方法是启动activityforresult,等待结果,然后以同样的方式启动下一个活动。