[Android] Camera で撮影、Intentで簡単にやりましょ

本格的なカメラアプリであれば別ですが、オプション的にカメラで撮った画像を使いたい場合はIntentを使うことで「比較的」簡単にできます。

Android Studio
2021.1.1

 




ACTION_IMAGE_CAPTURE

 

Intentを使うやり方は端末内のカメラアプリ、デフォルトで入っていますから、それを呼び出して撮影と保存をやってもらおうというあなた任せの機能です。(楽)

1x1.trans - [Android]  Camera で撮影、Intentで簡単にやりましょ

android.os.FileUriExposedException というエラーになった場合は、API24からはUriをfile://xxx という使い方ができない理由によるものかもしれません。またExternal Storageを使う方法を後半で紹介しています。

 

 

シンプルなカメラ起動

 

これは、emulatorでの簡単なカメラテストです。emulatorの「Advanced Settings」からCameraのfront, backの設定をEmulatedにしておきます。
 
1x1.trans - [Android]  Camera で撮影、Intentで簡単にやりましょ


 
Intentで飛ばして間接的にカメラを起動させるのでAndroid6.0からのRuntime Permissionに引っかかりません。
またこの段階では撮った写真を保存するところまではやっていません。

<queries>
<queries>要素を使用することで、アプリはアクセス可能なその他のアプリのセットを定義できます。
カメラの静止画を撮りたいのでandroid.media.action.IMAGE_CAPTUREを設定します。

MediaStore.ACTION_IMAGE_CAPTURE
をIntentで設定します。

 
Intentで飛ばしたので結果を受け取るためにregisterForActivityResultを使います。

 
上記内容をまとめると

MainActivity.java

 
activity_main.xml

 
リソース
strings.xml

 
AndroidManifest.xml

 
これでアプリを起動してボタンをタップ

エミュレートされた画像が表示されます。中央のカメラアイコンのボタンで撮影
 
1x1.trans - [Android]  Camera で撮影、Intentで簡単にやりましょ


 
撮影して画像が固定され、

チェック「✔︎」をクリックすると画像が表示されます。

1x1.trans - [Android]  Camera で撮影、Intentで簡単にやりましょ


 
ただし、これはサムネイル程度のとても小さい画像です。ここでは拡大するようにしていますが、emulatorでは(90 x 160pix)しかありません、また端末によっては画像が回転しているケースもあります。
また、Webcam0はPCのカメラですが、これもサムネイルサイズです。

ここでは、カメラの撮影画像をそのままアプリで取りんでいますが、もっと大きい画像ではこのやり方はできません。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする