未分類 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] TextToSpeechをforeground serviceで実行する

1 はじめに2 環境3 MainActivity.kt4 ForegroundService.kt5 実行してみる6 さいごに はじめに こんにちは。 前回の投稿ではTextToSpeechを使い、と ...

[Androidアニメーション]Shared Elements遷移

1 はじめに2 Shared Elements遷移とは3 layout xml4 Activity遷移5 その他6 さいごに はじめに 最近、雨が多いですね。そんな時は家にこもって、プログラミングをす ...

【Unity】TextMeshProで文字の表示と日本語入力

1 はじめに2 プロジェクトに追加3 TextMeshProのプロパティ4 日本語を使うには5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。unityをアップデートしたらTextが ...

【Unity】Inspectorから値にアクセス可能にするためには。

1 はじめに2 シリアライズ2.1 [SerializeField]2.2 public2.3 [System.NonSerialized] public2.4 まとめ3 おすすめ書籍 はじめに こん ...

[Android] パーミッション管理を簡単・簡潔に書けそうなPermissionsDispatcher

1 はじめに2 環境3 導入4 Activityでの実装例5 @RuntimePermissions(必須)6 PermissionsDispatcherに処理を移譲する7 @NeedsPermiss ...

フォロー

blog-page_side_responsive

2019年10月
 12345
6789101112
13141516171819
20212223242526
2728293031  

アプリ情報

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