カメラアプリを呼んでビデオを撮る
- AndroidManifest.xml
<manifest ... >
<uses-feature android:name="android.hardware.camera"
android:required="true" />
...
</manifest>
- Record a video with a camera app
const val REQUEST_VIDEO_CAPTURE = 1
private fun dispatchTakeVideoIntent() {
Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
takeVideoIntent.resolveActivity(packageManager)?.also {
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
}
}
}
- View the video
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent) {
if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
val videoUri: Uri = intent.data
videoView.setVideoURI(videoUri)
}
}
- Android11 では不十分。さらにAndroidManifest.xmlに追記が必要
<queries>
<intent>
<action android:name="android.media.action.VIDEO_CAPTURE" />
</intent>
</queries>
-
別解。このコードでもカメラアプリをビデオモードで呼べる
val takeVideoIntent = Intent(MediaStore.ACTION_VIDEO_CAPTURE)
try {
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, e.message, Toast.LENGTH_SHORT).show()
}