Android Studio カメラアプリ作成その8(カメラ表示3)
こんにちは かなで です。
続きです!
参考サイト
https://developer.android.com/training/camerax/preview?hl=ja
![](https://kanalabo.net/wp-content/uploads/2021/10/ab958b6ab20786410c71ed0adca6ab48.png)
ここから始めます。
どこに入れるねん!
![](https://kanalabo.net/wp-content/uploads/2021/10/a213e68c3755a04cd676f5c3fc859a61.png)
はい。正解はここでした。
ちょっとでも場所が違うとこうなります↓
![](https://kanalabo.net/wp-content/uploads/2021/10/7fd7b1ddd8bacf560759f29914f8e3a4.png)
なので、間違わない位置におくと、問題ビューはこうなります↓
![](https://kanalabo.net/wp-content/uploads/2021/10/09f8e305652d27bbe86c059c21af3122.png)
![](https://kanalabo.net/wp-content/uploads/2021/10/ae16e5088e50b091dbcf4769d49d53c4.png)
![](https://kanalabo.net/wp-content/uploads/2021/10/0649250343fb4838d4edcbb0f832c62e.png)
![](https://kanalabo.net/wp-content/uploads/2021/10/0055c09f251d9c09ef7eb52306033ff1.png)
クイックフィックスの表示を見ると、2番目は「インポート」がありますね。
「インポート」があればとりあえず「インポートする」というマイルールにのっとり、インポートします。
![](https://kanalabo.net/wp-content/uploads/2021/10/13dce54c5abadd3717b3ae216dc46803.png)
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行追加されました。
![](https://kanalabo.net/wp-content/uploads/2021/10/02f57bdf571759db5526b6c20bc3b2ce.png)
残り2つになりました。
![](https://kanalabo.net/wp-content/uploads/2021/10/a841a0d7f25aa50bf603b6c6d0999bd8.png)
1つ目を考えます。「関数bindPreviewを作成する」という選択肢があります。
本来なら、これで新しい関数bindPreviewを作って、中を書いていくんでしょうが、今はコピペしてるだけであり、次でbindPreviewが出てくるので、一旦ここは放置します。
![](https://kanalabo.net/wp-content/uploads/2021/10/91aa87c34cc9505be5b6a3b982920a80.png)
こちらは、よくわからなかったのですが、除去するとどうなるか
除去前↓
![](https://kanalabo.net/wp-content/uploads/2021/10/58a6255a2d881b9ebcc3465e9f011bb9.png)
除去後↓
![](https://kanalabo.net/wp-content/uploads/2021/10/8e05a7ee70fbd0aa9f380d9bba4aa501.png)
「Runnable」の文字がなくなりました。
だから何?わかりませんでしたが、結果これでOKでした。
ということで残り1つ。順調です。
![](https://kanalabo.net/wp-content/uploads/2021/10/a990f6483cee91b23a7f566ad6bb8a1c.png)
続けるとまた長くなりそうなので、ここで区切ります!
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)) } }
最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。