カメラを起動するには、インテントACTION_IMAGE_CAPTUREを使用します。
写真を撮影すると、指定した外部ストレージのパスに写真が保存されるようにしています。
外部ストレージへの保存権限をマニフェストに記載しておきます。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
パスをもとにImageViewでURIを指定し、表示するようにしています。
なお、外部ストレージに一度写真を保存しないと、ImageViewにサムネイル表示(低解像度)となってしまいますのでご注意を。
//写真のパスを入れる private var _imageUri:Uri? = null //コールバックを設定 private val takePhotoLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() ) { result -> Log.d("registerForActivity", result.toString()) if (result.resultCode == RESULT_OK) { //イメージビューに画像をセット imageView?.setImageURI(_imageUri) } } private fun dispatchTakePictureIntent() { //ファイル名を作る val dateFormat = SimpleDateFormat("yyyyMMddHHmmss") val now = Date() val nowStr = dateFormat.format(now) val fileName = "${nowStr}.jpg" val values = ContentValues() values.put(MediaStore.Images.Media.TITLE,fileName) values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg") //外部ストレージのURIを生成する _imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values) val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) intent.putExtra(MediaStore.EXTRA_OUTPUT,_imageUri) takePhotoLauncher.launch(intent) }