質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

1065閲覧

androidXのCameraControlを使用して、カメラの露光補正値を変更したいです。

m-mega

総合スコア56

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2021/08/19 08:50

現在、以下のプログラムでandroidの端末のカメラを起動するプログラムを作成しています。

kotlin

1package com.example.mycameraxapp; 2 3import androidx.appcompat.app.AppCompatActivity 4import android.os.Bundle 5import android.Manifest 6import android.content.pm.PackageManager 7import android.net.Uri 8import android.util.Log 9import android.widget.Toast 10import androidx.core.app.ActivityCompat 11import androidx.core.content.ContextCompat 12import java.util.concurrent.Executors 13import androidx.camera.core.* 14import androidx.camera.lifecycle.ProcessCameraProvider 15import kotlinx.android.synthetic.main.activity_main.* 16import java.io.File 17import java.nio.ByteBuffer 18import java.text.SimpleDateFormat 19import java.util.* 20import java.util.concurrent.ExecutorService 21import androidx.camera.core.CameraControl 22 23typealias LumaListener = (luma: Double) -> Unit 24 25class MainActivity : AppCompatActivity() { 26 private var imageCapture: ImageCapture? = null 27 28 private lateinit var outputDirectory: File 29 private lateinit var cameraExecutor: ExecutorService 30 31 override fun onCreate(savedInstanceState: Bundle?) { 32 super.onCreate(savedInstanceState) 33 setContentView(R.layout.activity_main) 34 35 // Request camera permissions 36 if (allPermissionsGranted()) { 37 startCamera() 38 } else { 39 ActivityCompat.requestPermissions( 40 this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS) 41 } 42 43 // Set up the listener for take photo button 44 camera_capture_button.setOnClickListener { takePhoto() } 45 46 outputDirectory = getOutputDirectory() 47 48 cameraExecutor = Executors.newSingleThreadExecutor() 49 } 50 51 private fun takePhoto() {} 52 53 private fun startCamera() { 54 val cameraProviderFuture = ProcessCameraProvider.getInstance(this) 55 cameraProviderFuture.addListener(Runnable { 56 // Used to bind the lifecycle of cameras to the lifecycle owner 57 val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get() 58 // Preview 59 val preview = Preview.Builder() 60 .build() 61 .also { 62 it.setSurfaceProvider(viewFinder.surfaceProvider) 63 } 64 // Select back camera as a default 65 val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA 66 try { 67 // Unbind use cases before rebinding 68 cameraProvider.unbindAll() 69 // Bind use cases to camera 70 cameraProvider.bindToLifecycle( 71 this, cameraSelector, preview) 72 } catch(exc: Exception) { 73 Log.e(TAG, "Use case binding failed", exc) 74 } 75 76 // 露光補正値設定 77 var cameraexposure = Camera.CameraControl() 78 cameraexposure.setExposureCompensationIndex(30) 79 80 }, ContextCompat.getMainExecutor(this)) 81 } 82 83 private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all { 84 ContextCompat.checkSelfPermission( 85 baseContext, it) == PackageManager.PERMISSION_GRANTED 86 } 87 88 private fun getOutputDirectory(): File { 89 val mediaDir = externalMediaDirs.firstOrNull()?.let { 90 File(it, resources.getString(R.string.app_name)).apply { mkdirs() } } 91 return if (mediaDir != null && mediaDir.exists()) 92 mediaDir else filesDir 93 } 94 95 override fun onDestroy() { 96 super.onDestroy() 97 cameraExecutor.shutdown() 98 } 99 100 companion object { 101 private const val TAG = "CameraXBasic" 102 private const val FILENAME_FORMAT = "yyyy-MM-dd-HH-mm-ss-SSS" 103 private const val REQUEST_CODE_PERMISSIONS = 10 104 private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA) 105 } 106 107 override fun onRequestPermissionsResult( 108 requestCode: Int, permissions: Array<String>, grantResults: 109 IntArray) { 110 super.onRequestPermissionsResult(requestCode, permissions, grantResults) 111 if (requestCode == REQUEST_CODE_PERMISSIONS) { //リクエストコードが正しいか確認 112 if (allPermissionsGranted()) { //カメラへのアクセス権限がある場合はカメラを起動 113 startCamera() 114 } else { //権限がなければトーストを提示して権限がないことを通知 115 Toast.makeText(this, 116 "Permissions not granted by the user.", 117 Toast.LENGTH_SHORT).show() 118 finish() 119 } 120 } 121 } 122}

カメラの起動自体はできたので、次にプレビュー画面の露光補正値を変更しようと思い、公式ドキュメントを元に作成しているのですが、公式に記載された内容をどのように実装したら良いか分からず困っています。

android公式ドキュメント CameraControl

こちらのサイトの「setExposureCompensationIndex」を使用して値を変更しようとしています。
上記のコードでもあるように、setExposureCompensationIndexをメソッドに持つ「CameraControl」インターフェースをインポートしています。

kotlin

1import androidx.camera.core.CameraControl

そして、メソッドを使用するために以下の記述をしているのですが、CameraControlの部分が「Rename Reference」と赤字になってしまいうまくいきません。

kotlin

1// 露光補正値設定 2var cameraexposure = Camera.CameraControl() 3 cameraexposure.setExposureCompensationIndex(30)

公式ドキュメントを見ても詳しい実装の方法が分からず困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問