Kotlin
AndroidアプリのViewをPDFファイルとして出力する方法
tanaka at 2023年06月21日 10:00:00
AndroidのカメラサポートライブラリのCameraXを使ってみました
Androidのカメラ制御は
カメラが対応している解像度の取得や
プレビュー解像度の設定、画面回転など
いくつか面倒なステップを踏む必要がありますが
それらを吸収してくれる公式ライブラリがCameraXです。
ライブラリの使用方法はGoogleのCameraXのドキュメントに記載されていますが、
実際に動かしてみたコードを以下に記載します。
MainActivityにカメラプレビューを表示するだけの機能を持つアプリです。
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.camera.core.CameraSelector
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.view.PreviewView
import androidx.core.content.ContextCompat
import androidx.lifecycle.LifecycleOwner
import com.google.common.util.concurrent.ListenableFuture
class MainActivity : AppCompatActivity() {
private lateinit var cameraProviderFuture: ListenableFuture<ProcessCameraProvider>
private lateinit var previewView : PreviewView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// PreviewView
previewView = findViewById(R.id.cameraPreview)
// CameraProvider リクエスト
cameraProviderFuture = ProcessCameraProvider.getInstance(this)
// タスクを実行するエグゼキューター
val executor = ContextCompat.getMainExecutor(this)
// リスナー用タスク
val listenerRunnable = Runnable {
// ListenableFutureからCameraProviderを取得
val cameraProvider = cameraProviderFuture.get()
// ライフサイクルにバインド -カメラの指定とプレビューの設定も行う
bindToLifecycle(cameraProvider)
}
// CameraProvider リクエスト のリスナーをセット
cameraProviderFuture.addListener(listenerRunnable, executor)
}
private fun bindToLifecycle(cameraProvider: ProcessCameraProvider)
{
// Previewを作成
val preview : Preview = Preview.Builder().build()
// 背面カメラを選択
val cameraSelector : CameraSelector = CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build()
// Previewとレイアウト上のPreviewViewを接続
preview.setSurfaceProvider(previewView.surfaceProvider)
// CameraProvider をライフサイクルにバインド
val camera = cameraProvider.bindToLifecycle(this as LifecycleOwner, cameraSelector, preview)
}
}
Kotlinで書いているのもありますが、
ライブラリを使用しない時と比べて、ぐっと必要なコード量が減っています。
画像の撮影や、画像分析もライブラリに含まれているようです。
水曜担当:Tanaka
tanaka at 2021年02月10日 10:00:37
AndroidでQRCodeを作成しよう
tanaka at 2020年08月19日 10:00:33
Android ダイアログを画面いっぱいに表示する
tanaka at 2020年04月22日 10:00:24
AndroidのViewをフェードイン(アウト)させる時に便利なAlphaAnimationクラス
tanaka at 2020年04月15日 10:00:37