Skip to content

Instantly share code, notes, and snippets.

@ochim
Created February 17, 2021 09:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ochim/b12986d195052f5d85e3a95b463ab653 to your computer and use it in GitHub Desktop.
Save ochim/b12986d195052f5d85e3a95b463ab653 to your computer and use it in GitHub Desktop.
Android - Record Video カメラアプリを呼んでビデオを撮る

カメラアプリを呼んでビデオを撮る

  • 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()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment