Kanade Labo

かなで研究所

Android Studio カメラアプリ作成その8(カメラ表示3)

こんにちは かなで です。

続きです!

参考サイト

https://developer.android.com/training/camerax/preview?hl=ja

ここから始めます。

どこに入れるねん!

はい。正解はここでした。

ちょっとでも場所が違うとこうなります↓

なので、間違わない位置におくと、問題ビューはこうなります↓

クイックフィックスの表示を見ると、2番目は「インポート」がありますね。

「インポート」があればとりあえず「インポートする」というマイルールにのっとり、インポートします。

package net.kanalabo.cam

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.google.common.util.concurrent.ListenableFuture

//class MainActivity : AppCompatActivity() {
//    override fun onCreate(savedInstanceState: Bundle?) {
//        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_main)
//    }
//}

class MainActivity : AppCompatActivity() {
    private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        cameraProviderFuture = ProcessCameraProvider.getInstance(this)
        cameraProviderFuture.addListener(Runnable {
            val cameraProvider = cameraProviderFuture.get()
            bindPreview(cameraProvider)
        }, ContextCompat.getMainExecutor(this))
    }
}

ContextCompatの文字が赤ではなくなり、importが1行追加されました。

残り2つになりました。

1つ目を考えます。「関数bindPreviewを作成する」という選択肢があります。

本来なら、これで新しい関数bindPreviewを作って、中を書いていくんでしょうが、今はコピペしてるだけであり、次でbindPreviewが出てくるので、一旦ここは放置します。

こちらは、よくわからなかったのですが、除去するとどうなるか

除去前↓

除去後↓

「Runnable」の文字がなくなりました。

だから何?わかりませんでしたが、結果これでOKでした。

ということで残り1つ。順調です。

続けるとまた長くなりそうなので、ここで区切ります!

package net.kanalabo.cam

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.google.common.util.concurrent.ListenableFuture

//class MainActivity : AppCompatActivity() {
//    override fun onCreate(savedInstanceState: Bundle?) {
//        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_main)
//    }
//}

class MainActivity : AppCompatActivity() {
    private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        cameraProviderFuture = ProcessCameraProvider.getInstance(this)
        cameraProviderFuture.addListener({
            val cameraProvider = cameraProviderFuture.get()
            bindPreview(cameraProvider)
        }, ContextCompat.getMainExecutor(this))
    }
}

最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。

-AndroidStudio