kotlinにてインテントで呼び出したデフォルトカメラに最初にフロントカメラを指定するようなことは可能でしょうか?
googleページを参考にインテントでカメラを呼び出し、画像を保存、保存した画像を表示するまではできています。
下記のページ真似て「intent.putExtra("android.intent.extras.CAMERA_FACING", 1)」と最後の2行目にいれたものの
変わりがありません。functionにジンジャーブレッドの表記があったりするため、古い記事の翻訳かもしれません。
今ではできなくなったのでしょうか?そのあたりもお教えいただけましたら。
https://codeday.me/jp/qa/20190410/594170.html
class MainActivity : AppCompatActivity() { val requestCameraNum=1 val requestPermissionNum=200 private var photoUri: Uri? = null//保存画像のパス(今はnull) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } //カメラからの情報が戻って来た際 public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if(requestCode==requestCameraNum && resultCode==RESULT_OK){ val bitmap = data?.getParcelableExtra<Bitmap>("data")//撮影された画像のビットマップデータを取得。 val ivCamera = findViewById<ImageView>(R.id.ivCamera)//画像を表示するImageViewを取得。 ivCamera.setImageBitmap(bitmap)//撮影された画像をImageviewに張り付け ivCamera.setImageURI(photoUri)//画像のパスや名前などを適応 } } //パーミッションダイアログで許可を出したなら override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray){ //super.onRequestPermissionsResult(requestCode, permissions, grantResults) if(requestCode==requestPermissionNum && grantResults[0] == PackageManager.PERMISSION_GRANTED){ val ivCamera = findViewById<ImageView>(R.id.ivCamera)//もう一度カメラアプリ起動 onCameraImageClick(ivCamera) } } //カメラボタンを押したとき(xmlにonClick) fun onCameraImageClick(view: View){//最初に出るストレージ利用許可 if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)//許可を求めるダイアログ表示 ActivityCompat.requestPermissions(this, permissions, requestPermissionNum) return } val dateFormat = SimpleDateFormat("MMddHHmmss") //日時データをファイル名にする val now = Date() val nowStr = dateFormat.format(now) //取得した日時データを「MMddHHmmss」形式に整形した文字列を生成 val fileName = "face_${nowStr}.jpg" val values = ContentValues()//ContentValuesオブジェクトを生成 values.put(MediaStore.Images.Media.TITLE, fileName)//画像ファイル名を設定 values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg")//jpg保存 photoUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values) val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri) intent.putExtra("android.intent.extras.CAMERA_FACING", 1) startActivityForResult(intent, requestCameraNum) } }
回答1件
あなたの回答
tips
プレビュー