未分類 Android

Android CameraXプレビューを実装してみた

投稿日:

はじめに

こんにちは。matsunariです。前々からAndroidCameraの実装について気になっていたため、今回はCameraXについて取り扱ってみたいと思います。

CameraXとは

CameraX は、カメラアプリの開発を簡単に行うための Jetpack サポートライブラリです。
Camera2の実装よりもシンプルでコード量も少なく実装する事ができるため、多くのアプリケーションで普及が期待されますね。
Androidでの実装はkotlinで行われる前提ですが、今回はJavaで導入してみようと思います。
CameraXのユースケースは以下の3つとなります。
1.プレビュー:画像表示を行います。
2.画像解析:機械学習などでの利用が想定されます。
3.画像キャプチャ:画像を保存します。
これらを組み合わせたカメラ機能をアプリ内部に実装する事ができます。
また、拡張機能を追加する事でアプリ内に、ポートレート、HDR、夜景、美容などの効果を追加することもできます。

Android Jetpackについて

CameraXはAndroidJetpackの機能の一部です。Android Jetpackは、Androidアプリの開発を加速させる次世代のコンポーネント、ツール、アーキテクチャガイダンスとしてGoogle I/O 2018にて発表されました。優れたAndroidアプリを作成するためのコンポーネントやツール、ガイダンスなどをひとまとまりにしたもので、既存のSupport LibraryとArchitecture ComponentsもJetpackに統合されています。
ひとまとまりとは言っても、それぞれのコンポーネントは、ライブラリとして提供されているので、開発者が使用したいコンポーネントを、自由に選択してアプリに含めることができます。
また、ライブラリとして提供されているため、Androidプラットフォームよりも高頻度で更新され、常に最新のAndroid Jetpackコンポーネントを使用することができます。特定のOSバージョンに左右されずに機能を提供できるため、さまざまなバージョンのプラットフォームでアプリを実行でき、古いOSバージョンをサポートしなければいけない場合も、使用することができます。

※AndroidJetPackの詳細についてはこちらでご確認ください。

Cameraパーミッションの追加

まずは、プレビュー表示のためにAndroidManifestにパーミッションを追加しましょう。

ソースコード全容

今回実装するのはプレビューのみです。

activity_main.xml

レイアウトはプレビュー画面表示用のTextureViewと撮影用のボタン(今回は実装なし)を設定しています。

MainActivity.java

プレビューの実装

previewインスタンスを利用するために、pconfigを引数として渡し、インスタンス化を行います。

setOnPreviewOutputUpdateListenerの中ではSurfaceTextureの更新をして再度親Viewに追加する処理を行います。

最後にbindToLifecycle()でプレビュー表示を行います。

アプリ画面上に動的なカメラプレビューが表示される事が確認できます。

さいごに

CameraXの実装はkotlinで行われている事が多いですがJavaで行いました。Androidの新機能に関してはkotlinで書かれる事が多いと思うので、kotlinを使った実装にも挑戦してみようと思います。今回はプレビューの実装のみだったので次回は画像のキャプチャ等のご紹介しようと思います。

おすすめ書籍

スッキリわかるJava入門 第2版 (スッキリシリーズ) Android Studio パーフェクトガイド(Kotlin /Java対応版) AndroidエンジニアのためのモダンJava

blog-page_footer_336




blog-page_footer_336




-未分類, Android
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Android JavaでS3への画像アップロード

1 はじめに2 AWS上での事前準備3 Android StudioのGradleでAWS SDKをインストール4 ManifestにPermissionの追加5 カメラで写真を撮影し、保存先のPat ...

Androidでのローカルプッシュ通知実装

1 はじめに2 WorkManagerとは?3 WorkManagerの導入4 実装例4.1 Workerの実装4.2 OneTimeWorkRequestBuilderの実装4.3 Periodic ...

Kotlinで初期化を遅延する

1 はじめに2 初期化の遅延とは3 by lazy4 lateinit5 Delegates.notNull6 さいごに7 おすすめ書籍 はじめに こんにちは、前回に引き続き、Kotlinの基本的な文 ...

no image

【Unity】StarterAssetのInputSystemを利用KeyBoardとGamePadのアクションを設定してみる

1 はじめに2 InputSystemの概要3 StarterAssetでのアクションの追加3.1 InputActionの変更3.2 StarterAssetsInputs.csの変更3.3 Thi ...

Android Studioでエラーログを詳細表示する

1 はじめに2 初期設定でのビルドエラーメッセージ3 詳細なビルドエラーメッセージを出力4 おまけ5 さいごに6 おすすめ書籍 はじめに こんにちは。Android開発を久しぶりにやっているのですが、 ...

フォロー

blog-page_side_responsive

2019年10月
 12345
6789101112
13141516171819
20212223242526
2728293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。