natario1 / CameraViewを使う

概要

カメラ操作ライブラリ natario1 CameraView を使う方法について記載します。
手順通りにやればできるけど、一部わかりづらかったので。

環境は、Android studio (gradleでのライブラリ利用)

■ natario1 CameraView
https://natario1.github.io/CameraView/
https://github.com/natario1/CameraView

環境構築手順

Android studioでプロジェクト作成

省略: なんでもいいです。今回はEmpty Activity で作ります。

gradleファイル(Project)の更新

build.gradle (Project: xxxxxxxx) の allprojects – repositories に jcenter() を追加します。

allprojects {
    repositories {
        google()
        jcenter()
    }
}

gradleファイル(Module)の更新

build.gradle (Module: app) の dependencies に api ‘com.otaliastudios:cameraview:2.2.0’ を追加します。

dependencies {
    …
    api 'com.otaliastudios:cameraview:2.2.0'
}

Sync Now を押下します。(↓画像の右)

xml(activity_main.xml)の更新

com.otaliastudios.cameraview.CameraViewを追加します。
flagmentを使う場合は、 https://natario1.github.io/CameraView/about/getting-started.html を見てください。

<pre class="wp-block-code"><code><?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <com.otaliastudios.cameraview.CameraView
        android:id="@+id/camera"
        android:keepScreenOn="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout></code></pre>

MainActivity.javaの更新

camereviewを作成して、camera.takePicture();を呼び出します。

package com.akashicsoftware.testnatariocameraview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.otaliastudios.cameraview.CameraListener;
import com.otaliastudios.cameraview.CameraView;
import com.otaliastudios.cameraview.PictureResult;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CameraView camera = findViewById(R.id.camera);
        camera.setLifecycleOwner(this);
        camera.addCameraListener(new CameraListener() {
            @Override
            public void onPictureTaken(PictureResult result) {
                byte[] data = result.getData();
            }
        });
        camera.takePicture();
    }
}

AndroidManifest.xmlにpermissonを追加します

<uses-permission android:name="android.permission.RECORD_AUDIO" />を追加します
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.akashicsoftware.testnatariocameraview">
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <application
        …
    </application>
</manifest>

実行

まとめ

以上で最低限の環境構築ができました。
あとは、使いたい機能に合わせて、 https://natario1.github.io/CameraView/  を参照して実装します。