It's happening now, watch the livestream.

Ekstensi vendor

CameraX menyediakan API untuk mengakses efek vendor khusus perangkat, seperti bokeh, HDR, dan fungsionalitas lainnya. API ini memungkinkan Anda mengkueri apakah ekstensi tertentu tersedia di perangkat saat ini dan mengaktifkan ekstensi tersebut sebagai preferensi. Artinya, jika tersedia di perangkat, ekstensi akan diaktifkan, dan akan didegradasi halus jika tidak tersedia.

Vendor tidak diharuskan menyediakan implementasi untuk setiap efek dan fitur. Kapabilitas yang tidak disertai implementasi vendor akan ditetapkan secara default ke implementasi CameraX. Implementasi standar ini melaporkan bahwa kapabilitas tidak tersedia sehingga langkah untuk mengaktifkannya dapat dilewati.

Mengaktifkan efek untuk pengambilan gambar

Untuk menerapkan ekstensi vendor ke kasus penggunaan CameraX, buatlah objek Extender, yang memungkinkan Anda mengonfigurasi Builder dengan setelan untuk efek atau fungsi tersebut. Kueri ekstensi untuk memeriksa ketersediaan, karena jika ekstensi tidak tersedia, panggilan enableExtension() tidak akan berfungsi apa pun.

Untuk mengimplementasikan ekstensi pada kasus penggunaan pengambilan gambar, implementasikan extender pengambilan gambar yang terkait seperti ditunjukkan dalam contoh kode berikut:

Kotlin

    import androidx.camera.extensions.BokehExtender

    fun onCreate() {
        // Create a Builder same as in normal workflow.
        val builder = ImageCaptureConfig.Builder()

        // Create a Extender object which can be used to apply extension
        // configurations.
        val bokehImageCapture = BokehImageCaptureExtender.create(builder)

        // Query if extension is available (optional).
        if (bokehImageCapture.isExtensionAvailable()) {
            // Enable the extension if available.
            bokehImageCapture.enableExtension()
        }

        // Finish constructing configuration with the same flow as when not using
        // extensions.
        val config = builder.build()
        val useCase = ImageCapture(config)
        CameraX.bindToLifecycle(this as LifecycleOwner, useCase)
    }
    

Java

    import androidx.camera.extensions.BokehExtender;

    void onCreate() {
        // Create a Builder same as in normal workflow.
        ImageCaptureConfig.Builder builder = new ImageCaptureConfig.Builder();

        // Create a Extender object which can be used to apply extension
        // configurations.
        BokehImageCaptureExtender bokehImageCapture = new
                BokehImageCaptureExtender(builder);

        // Query if extension is available (optional).
        if (bokehImageCapture.isExtensionAvailable()) {
            // Enable the extension if available.
            bokehImageCapture.enableExtension();
        }

        // Finish constructing configuration with the same flow as when not using
        // extensions.
        ImageCaptureConfig config = builder.build();
        ImageCapture useCase = new ImageCapture(config);
        CameraX.bindToLifecycle((LifecycleOwner)this, useCase);
    }

    

Menonaktifkan efek

Untuk menonaktifkan ekstensi vendor, buatlah instance baru kasus penggunaan pengambilan gambar atau pratinjau.

Referensi lainnya

Untuk mempelajari CameraX lebih lanjut, lihat referensi tambahan berikut.

Codelab

  • Memulai CameraX
  • Contoh kode

  • Contoh aplikasi CameraX resmi