未分類 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

page_footer_300rect




page_footer_300rect




-未分類, Android
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Android StudioのInstant Runの種類

1 はじめに2 概要3 全部で3種類4 コールドスワップになる条件5 ビルドおよびデプロイが実行される条件6 再実行について7 参考ページ8 さいごに はじめに はじめまして、nomuraと申します。 ...

【Kotlin】FirebaseAuthenticationでGoogle・Facebook連携する

1 はじめに2 Firebaseプロジェクトの設定3 build.gradleに追記4 Googleログイン5 Facebookログイン6 さいごに7 参考8 おすすめ書籍 はじめに はじめまして。m ...

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

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

Kotlin OkHttp3で通信を行なった際の備忘

1 はじめに2 ライブラリの導入方法3 Build時にエラーが発生する4 パーミッションの追加5 main関数で同期処理の通信6 onFailureでUnable to resolve host &# ...

Kotlinのスコープ関数を調べて見た

1 はじめに2 スコープ関数とは3 スコープ関数の種類について4 with関数4.1 使い方4.1.1 withを使わない場合4.1.2 withを使う場合4.2 所感5 apply関数5.1 使い方 ...

フォロー

follow us in feedly

page_side_300rect

2019年10月
« 9月  
 12345
6789101112
13141516171819
20212223242526
2728293031 

アプリ情報

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