Kanade Labo

かなで研究所

Android Studio カメラアプリ作成その11(カメラ表示6)

こんにちは かなで です。

前回までのお話。

エラーにならずアプリが起動した!(映ったとは言ってない。

前回起動できた画面がこちらです。

黒い部分と白い部分がありますが、黒い部分にカメラ映像が表示されるんだろうと。

そして、こちらは「表示するサイズ」がおかしいからだと推測できますので、後回しにします。

問題は「黒い部分にカメラ映像が表示されない」ことです。

ここで、このアプリを起動したときのLogcatをアニメーションGIFにしてますので、よく見てみてください。

別に出てくる文言を読めというわけではなく、「なんか同じログが繰り返し表示された後に、止まって、赤字がある」くらいがわかればOKです(笑

この赤字はこちら

E/Camera2CameraImpl: Camera reopening attempted for 10000ms without success.

カメラにアクセスしようとして10秒間繰り返したけど、ダメだったよ ってことだと思います。

そしてその理由は結果論としてはアプリのカメラへのアクセス権限がなかったことが要因でした。(ここに至るまでどんだけ調べたか…)

ということで、アプリにカメラへのアクセス権限を与えてあげようというのが今回の記事です。

まずは、現在の権限ってどうなってるのかを見てみたいと思います。

この辺の流れは、Androidバージョンによって異なりますが、今使ってるAndroid 7.1.1では上記のようになります。

そして「Permissions」「No permissions requested」となっています。

これが灰色にグレーアウトされているってことは、「このアプリが求めてる権限はないよ」と読めます。

なので、アプリ側で「俺はカメラの権限が欲しいよ」という設定を入れてあげないといけないわけです。

全部すっ飛ばして、こうしたらできたという結果論を書きます!

app→manifests→AndroidManifest.xml

こちらを開いてください。

赤枠の位置に以下を追加します。(上の写真は追加済みですね)

<uses-permission android:name="android.permission.CAMERA" />

はい! これで、 「俺はカメラの権限が欲しいよ」 という設定ができたはずです。


ここでもう一度、アプリをエミュレータで実行です。

カメラへの権限が欲しいよ という設定をしただけで、権限がもらえたわけじゃないので、表示は何も変わりません。

ただ、これで、エミュレータ側のアプリを更新したことになります。

と、これをやった後で権限を見てみると…

グレーアウトじゃなくなってるのがわかりますよね!

ただ「No permissions granted」で、権限が欲しいという意思表示がAndroidに伝わっただけで、Androidはまだカメラアクセス権限を与えてないので…

Permissions→CameraをON→戻ると

Permissionsの項目が「Camera」に変わりました。

これで晴れて、このアプリに「カメラにアクセスする権限」が与えられたことになります。

それではいきますよ!?

やった!!!

カメラが映りました!!

我が家の初披露ですね!!

ぇ?あっはい。嘘です!我が家じゃないです!(すぐ訂正する(笑

ってことで、次回に続きます!

最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。

-AndroidStudio