質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1678閲覧

Android Studio カメラアプリの起動

asmer

総合スコア3

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2023/06/30 02:41

編集2023/06/30 02:45

実現したいこと

カメラ起動というボタンを押したらAndroidのカメラが起動し、
撮ったものを表示できるようにしたいです。

今回はカメラ起動をメインに教えていただきたいです。

前提

Android Studioを使ってKotlinでスマホアプリの開発を行なっています。
https://qiita.com/naoi/items/04e44308221f6eb73024
上記のサイトを参考にしてみましたが、内部カメラが存在するかどうかのところで、存在していないというエラーメッセージがでるようになってしまいます。
もともとスマホ内にカメラアプリは御座います。

該当のソースコード

AndroidMinifest.xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools"> 4 5 <uses-permission android:name="android.permission.CAMERA"/> 6 <uses-feature android:name="android.hardware.camera" /> 7 <uses-feature android:name="android.hardware.camera.autofocus" /> 8 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 9 10 <application 11 android:allowBackup="true" 12 android:dataExtractionRules="@xml/data_extraction_rules" 13 android:fullBackupContent="@xml/backup_rules" 14 android:icon="@mipmap/ic_launcher" 15 android:label="@string/app_name" 16 android:roundIcon="@mipmap/ic_launcher_round" 17 android:supportsRtl="true" 18 android:theme="@style/Theme.SampleBtn" 19 tools:targetApi="31"> 20 <activity 21 android:name=".MainActivity" 22 android:exported="true" 23 android:label="@string/app_name" 24 android:theme="@style/Theme.SampleBtn"> 25 <intent-filter> 26 <action android:name="android.intent.action.MAIN" /> 27 28 <category android:name="android.intent.category.LAUNCHER" /> 29 </intent-filter> 30 </activity> 31 </application> 32 33</manifest>

activity_main.xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context=".MainActivity" 9 android:gravity="center"> 10 11 <TextView 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:id="@+id/cameraImage" /> 15 16 <Button 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:id="@+id/btnLaunchCamera" 20 android:text="@string/launch_camera"/> 21 22</LinearLayout> 23

MainActivity.kt

1package com.example.samplebtn 2 3import android.content.Context 4import android.content.Intent 5import android.content.pm.PackageManager 6import androidx.appcompat.app.AppCompatActivity 7import android.os.Bundle 8import android.provider.MediaStore 9import android.widget.Button 10import android.widget.TextView 11import android.widget.Toast 12import androidx.core.app.ActivityCompat 13import androidx.core.content.ContextCompat 14import android.Manifest 15import android.app.Activity 16 17 18class MainActivity : AppCompatActivity() { 19 companion object { 20 const val CAMERA_REQUEST_CODE = 1 21 const val CAMERA_PERMISSION_REQUEST_CODE = 2 22 } 23 24 override fun onCreate(savedInstanceState: Bundle?) { 25 super.onCreate(savedInstanceState) 26 setContentView(R.layout.activity_main) 27 } 28 29 //カメラ起動ボタン 30 override fun onResume(){ 31 super.onResume() 32 33 val cameraImage = findViewById<TextView>(R.id.cameraImage) 34 val btnLaunchCamera = findViewById<Button>(R.id.btnLaunchCamera) 35 36 btnLaunchCamera.setOnClickListener{ 37 38 Intent(MediaStore.ACTION_IMAGE_CAPTURE).resolveActivity(packageManager)?.let { 39 if(checkCameraPermission()) { 40 takePictire() 41 } 42 else { 43 grantCameraPermission() 44 } 45 } ?: Toast.makeText(this, "カメラがありません。", Toast.LENGTH_LONG).show() 46 } 47 } 48 49 //撮影した写真をビューに追加 50 //override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 51 // if(requestCode == CAMERA_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 52 // val image = data?.extras?.get("data")?.let { 53 // cameraImage.setImageBitmap(it as Bitmap) 54 // } 55 // } 56 //} 57 58 private fun takePictire(){ 59 val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply { 60 addCategory(Intent.CATEGORY_DEFAULT) 61 } 62 startActivityForResult(intent, CAMERA_REQUEST_CODE) 63 } 64 65 //カメラへのアクセス許可 66 private fun checkCameraPermission() = PackageManager.PERMISSION_GRANTED == 67 ContextCompat.checkSelfPermission(applicationContext, Manifest.permission.CAMERA) 68 69 private fun grantCameraPermission() = 70 ActivityCompat.requestPermissions(this, 71 arrayOf(Manifest.permission.CAMERA), 72 CAMERA_PERMISSION_REQUEST_CODE) 73 74 override fun onRequestPermissionsResult(requestCode: Int, 75 permissions: Array<out String>, 76 grantResults: IntArray) { 77 super.onRequestPermissionsResult(requestCode, permissions, grantResults) 78 if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) { 79 if (grantResults.isNotEmpty() && 80 grantResults[0] == PackageManager.PERMISSION_GRANTED) { 81 takePictire() 82 } 83 } 84 } 85 86} 87

試したこと

撮影した写真をビューに追加ところはエラーが出てしまうため、とりあえずコメントアウトしています。
デバックで確認すると、

Intent(MediaStore.ACTION_IMAGE_CAPTURE).resolveActivity(packageManager)?.let {

のあとは、

} ?: Toast.makeText(this, "カメラがありません。", Toast.LENGTH_LONG).show()

にとんでしまって、現在ボタンを押したら、カメラがありませんとメッセージが出ます。

実行するスマホ側に問題があるのか、書いているコード自体に問題があるのかが分からないので、考えられる原因だけでも教えていただけると嬉しいです。よろしくお願い致します。

補足情報(FW/ツールのバージョンなど)

Android Studio 2022.2.1
Android Gradle Plugin Version 8.0.2
Gradle Version 8.0
Compile Sdk Version 33
Kotlin プラグインバージョン 222-1.8.20

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asmer

2023/07/03 07:46

返信遅くなりました。ありがとうございます! 解決しました!
guest

回答1

0

自己解決

https://curecode.jp/tech/xamarin-android-intent-resolveactivity-is-null/

AndroidManifest.xml

1 <queries> 2 <!-- Camera --> 3 <intent> 4 <action android:name="android.media.action.IMAGE_CAPTURE" /> 5 </intent> 6 <!-- Gallery --> 7 <intent> 8 <action android:name="android.intent.action.GET_CONTENT" /> 9 </intent> 10 </queries>

AndroidManifest.xmlに上記のコードを追加したところカメラを起動させることができました。

投稿2023/07/03 07:49

asmer

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問