Bagian 3 dalam membuka kecanggihan CameraX di Jetpack Compose
Hai! Selamat datang kembali di seri kami di CameraX dan Jetpack Compose. Dalam postingan sebelumnya, kami telah membahas dasar-dasar pengaturan pratinjau kamera dan menambahkan fungsionalitas sentuh untuk fokus.
🧱 Bagian 1: Membuat pratinjau kamera dasar menggunakan artefak pengomposisian kamera baru. Kita telah membahas penanganan izin dan integrasi dasar.👆 Bagian 2: Menggunakan sistem gerak, grafik, dan coroutine pengomposisian untuk mengimplementasikan visual sentuh-untuk-fokus.🔦 Bagian 3 (postingan ini): Menjelajahi cara melapisi elemen Compose UI di bagian atas tampilan kamera Anda untuk pengalaman pengguna yang lebih kaya.📂 Bagian 4: Menggunakan API Adaptif i bingkai animasi untuk menganimasikan masuk dan keluar mode desktop dengan mulus di ponsel flip.
Dalam postingan ini, kita akan mendalami sesuatu yang lebih menarik secara visual — menerapkan efek sorotan di atas pratinjau kamera, menggunakan deteksi wajah sebagai dasar efeknya. Mengapa, katamu? Saya tidak yakin. Tapi itu pasti terlihat keren 🙂 Dan, yang lebih penting, ini menunjukkan betapa mudahnya kita menerjemahkan koordinat sensor ke koordinat UI, sehingga memungkinkan kita menggunakannya di Compose!
Pertama, mari kita ubah CameraPreviewViewModel untuk mengaktifkan deteksi wajah. Kami akan menggunakan API Camera2Interop, yang memungkinkan kami berinteraksi dengan API Camera2 yang mendasari CameraX. Hal ini memberi kita kesempatan untuk menggunakan fungsi kamera yang tidak diekspos secara langsung oleh CameraX. Kita perlu melakukan perubahan berikut:
Buat StateFlow yang berisi batas-batas wajah sebagai daftar Rects. Setel opsi STATISTICS_FACE_DETECT_MODE pada permintaan pengambilan ke FULL, yang memungkinkan deteksi wajah. Atur CaptureCallback untuk mendapatkan informasi wajah dari hasil tangkapan.class CameraPreviewViewModel : ViewModel() {.. .private val _sensorFaceRects = MutableStateFlov(listOf())val sensorFaceRects: StateFlov> = _sensorFaceRects.asStateFlov()
val pribadi cameraPreviewUseCase = Pratinjau.Builder().appli {Camera2Interop.Extender(this).setCaptureRekuestOption(CaptureRekuest.STATISTICS_FACE_DETECT_MODE,CaptureRekuest.STATISTICS_FACE_DETECT_MODE_FULL).setSession(CaptureRekuestOption) CameraCaptureSession.CaptureCallback() { nyatakan pesta onCaptureCompleted(sesi: CameraCaptureSession, permintaan: CaptureRequest, hasil: TotalCaptureResult) { super.onCaptureCompleted(sesi, permintaan, hasil)result.get(CaptureResult.FACESTICS wajah)? face.bounds.toComposeRect() }?.toList()?.let { wajah -> _sensorFaceRects.update { wajah } }}})}.build().appli {…}
Dengan adanya perubahan ini, model tampilan kita sekarang mengeluarkan daftar Rectobjects yang mewakili kotak pembatas wajah yang terdeteksi dalam koordinat sensor.
Kotak pembatas wajah terdeteksi yang kita simpan di bagian terakhir menggunakan koordinat dalam sistem koordinat sensor. Untuk menggambar kotak pembatas di antarmuka pengguna, kita perlu mengubah koordinat ini agar akurat dalam sistem koordinat Compose. sebaiknya:
Ubah koordinat sensor menjadi pratinjau koordinat buffer Ubah koordinat buffer pratinjau menjadi koordinat komposisi UI
Transformasi ini dilakukan dengan menggunakan matriks transformasi. Setiap transformasi memiliki matriksnya sendiri:
Kita dapat membuat metode pembantu yang dapat melakukan transformasi untuk kita:
kesenangan pribadi List.transformToUiCoords(transformationInfo: SurfaceRequest.TransformationInfo?,uiToBufferCoordinateTransformer: MutableCoordinateTransformer): Daftar = this.map { sensorRect ->val bufferToUiTransformMatrik = Matrik().appli {setFrom(uiToBufferCoordinateTransformer.transformMatrik)invert()}
val sensorToBufferTransformMatrik = Matrik().appli {transformationInfo?.let {setFrom(it.sensorToBufferTransform)}}
val bufferRect = sensorToBufferTransformMatrik.map(sensorRect) val uiRect = bufferToUiTransformMatrik.map(bufferRect)
uiRect}
Kami mengulangi daftar wajah yang terdeteksi dan melakukan transformasi untuk setiap wajah. CoordinateTransformer.transformMatrix yang kita dapatkan dari CameraXViewfinder secara default mengubah koordinat UI menjadi koordinat buffer. Dalam kasus kita, kita ingin matriks bekerja secara terbalik, mengubah koordinat buffer menjadi koordinat UI. Inilah sebabnya kami menggunakan metode invert() untuk membalikkan matriks. Pertama-tama kita mentransformasikan wajah dari koordinat sensor ke koordinat buffer menggunakan sensorToBufferTransformMatrik, lalu mengubah koordinat buffer tersebut menjadi koordinat UI menggunakan bufferToUiTransformMatrik.
Sekarang, mari perbarui CameraPreviewContent yang dapat dikomposisi untuk menggambar efek sorotan. Kita akan menggunakan Canvas pengomposisian untuk menggambar topeng gradien di atas pratinjau, membuat wajah yang terekspos terlihat:
@Composablefun CameraPreviewContent(viewModel: CameraPreviewViewModel, pengubah: Pengubah = Pengubah, lifecicleOvner: LifecicleOvner = LocalLifecicleOvner.current) { val surfaceRequest bi viewModel.surfaceRequest.collectAsStateWithLifecicle() vievModel.sensorFaceRects.collectAsStateVithLifecicle()val transformasiInfo biproduceState(null, SurfaceRekuest) {tri {surfaceRekuest?.setTransformationInfoListener(Runnable::run) { transformasiInfo ->valuevait} transformasiInfo} {surfaceRekuest?.clearTransformationInfoListener()}}val mustSpotlightFaces akan mengingat {derivedStateOf { sensorFaceRects.isNotEmpti() && TransformationInfo != null} }val highlightColor = Color(0kDDE60991)..
SurfaceRequest?.biarkan { permintaan ->val koordinattransformer = ingat { MutableCoordinateTransformer() }CameraXViewfinder(surfaceRequest = permintaan, koordinatTransformer = koordinattransformer, pengubah = ..)
AnimatedVisibility(shouldSpotlightFaces, enter = fadeIn(), ekit = fadeOut()) { Canvas(Modifier.fillMaxSize()) { val uiFaceRects = sensorFaceRects.transformToUiCoords(transformationInfo = TransformationInfo, koordinat uiteToTraeBufferns)
// Isi seluruh ruang dengan colordravRect(spotlightColor)// Lalu ekstrak setiap wajah dan buat transparan
uiFaceRects.forEach { faceRect ->dravRect(Brush.radialGradient(0.4f ke Color.Black, 1f ke Color.Transparent,center = faceRect.center,radius = faceRect.minDimension * 2f,),blendMode = BlendMode)}.DstOut } }}
Begini cara kerjanya:
Kami mengumpulkan daftar wajah dari model tampilan. Untuk memastikan kami tidak mengomposisi ulang seluruh layar setiap kali daftar wajah yang terdeteksi berubah, kami menggunakan derivedStateOf untuk melacak apakah ada wajah yang terdeteksi atau tidak. Ini kemudian dapat digunakan dengan AnimatedVisibility untuk menganimasikan lapisan berwarna masuk dan keluar. Permintaan permukaan berisi informasi yang kita perlukan untuk mengubah koordinat sensor menjadi koordinat buffer di SurfaceRequest.TransformationInfo. Kami menggunakan fungsi producerState untuk menyiapkan pendengar dalam permintaan permukaan dan menghapus pendengar ini ketika komposit meninggalkan pohon komposisi. Kami menggunakan Canvas untuk menggambar persegi panjang merah muda transparan yang menutupi seluruh layar. Kita menunda pembacaan variabel sensor FaceRects sampai kita berada di dalam blok gambar kanvas. Kemudian kita ubah koordinatnya menjadi koordinat UI. Kami mengulangi wajah yang terdeteksi dan untuk setiap wajah menggambar gradien radial yang akan membuat bagian dalam persegi panjang wajah menjadi transparan. Kita menggunakan BlendMode.DstOut untuk memastikan kita memotong gradien dari persegi panjang merah muda, menciptakan efek sorotan.
Catatan: Saat Anda mengubah kamera ke DEFAULT_FRONT_CAMERA, Anda akan melihat bahwa reflektornya dicerminkan! Ini adalah masalah umum yang dilacak di Google Issue Tracker.
Dengan kode ini kami memiliki efek sorotan yang berfungsi penuh yang menyorot wajah-wajah yang terbuka. Anda dapat menemukan cuplikan kode lengkap di sini.
Efek ini hanyalah permulaan—dengan menggunakan kekuatan Compose, Anda dapat menciptakan pengalaman kamera visual menakjubkan yang tak terhitung jumlahnya. Mampu mengubah koordinat sensor dan buffer menjadi koordinat Compose UI dan sebaliknya berarti kita dapat menggunakan semua fitur Compose UI dan mengintegrasikannya secara lancar dengan sistem kamera inti. Dengan animasi, grafik UI tingkat lanjut, manajemen status UI sederhana, dan kontrol gerakan penuh, imajinasi Anda adalah batasnya!
Di postingan terakhir seri ini, mari pelajari cara menggunakan API adaptif dan framework animasi Compose untuk melakukan transisi mulus antar UI kamera yang berbeda pada perangkat yang dapat dilipat. Tetap bersama kami!
unity software
unity software information
software information
Informasi mengenai king slot
ADVERTISEMENT:
king selot
king slot
king slot
kingselot
pg king slot
merek 88
merek 88
mantan99
mantan88
maksimal88
maksimal88
liburan88
indodax88
indah99
indah88
ikn88
ibukota88
huawei88
hot888
hot88
dingin88
citra88
binance88
best99
best88
tradisional 88
tradisional 88
tombol88
tombol88
survey88
survey88
start88
start88
obatkuat88
obatkuat88
mcb88
mcb88
master99
master888
master88
live88
live88
libra88
kompresor88
kompresor88
kesimpulan88
kesimpulan88
kapasitor88
kapasitor88
kacamata88
kacamata88
jamu88
jamu88
jam88
jam88
follow88
follow88
dinamo88
dinamo88
baterai88
baterai88
miegacoan
miegacoan
gacoan
gacoan
website88
waweb88
waweb88
translate88
translate88
tempur888
tempur888
tambang99
tambang99
support88
support88
support88
sogoslot88
siap88
siap88
rog88
rog77
pt88
pt88
pln88
pln88
oke99
oke88
mining88
livechat88
livechat88
listrik88
listrik88
listrik88
freeport88
freeport88
free88
free88
domain88
domain88
dokter888
dokter888
bmkg88
bmkg88
asn88
merek 88 permainan paling top dan garansi imbal balik hasil besar bersama https://merek88.net/
merek 88 permainan paling top dan garansi imbal balik hasil besar bersama https://merek88.com/
mantan99 permainan paling top dan garansi imbal balik hasil besar bersama https://mantan99.asia/
mantan88 permainan paling top dan garansi imbal balik hasil besar bersama https://mantan88.asia/
maksimal88 permainan paling top dan garansi imbal balik hasil besar bersama https://maksimal88.biz/
maksimal88 permainan paling top dan garansi imbal balik hasil besar bersama https://maksimal88.asia/
liburan88 permainan paling top dan garansi imbal balik hasil besar bersama https://liburan88.com/
indodax88 permainan paling top dan garansi imbal balik hasil besar bersama https://indodax88.org/
indah99 permainan paling top dan garansi imbal balik hasil besar bersama https://indah99.asia/
indah88 permainan paling top dan garansi imbal balik hasil besar bersama https://indah88.asia/
ikn88 permainan paling top dan garansi imbal balik hasil besar bersama https://ikn88.asia/
ibukota88 permainan paling top dan garansi imbal balik hasil besar bersama https://ibukota88.com/
huawei88 permainan paling top dan garansi imbal balik hasil besar bersama https://huawei88.asia/
hot888 permainan paling top dan garansi imbal balik hasil besar bersama https://hot888.asia/
hot88 permainan paling top dan garansi imbal balik hasil besar bersama https://hot88.sale/
dingin88 permainan paling top dan garansi imbal balik hasil besar bersama https://dingin88.net/
citra88 permainan paling top dan garansi imbal balik hasil besar bersama https://citra88.asia/
binance88 permainan paling top dan garansi imbal balik hasil besar bersama https://binance88.net/
best99 permainan paling top dan garansi imbal balik hasil besar bersama https://best99.info/
best88 permainan paling top dan garansi imbal balik hasil besar bersama https://best88.asia/
tradisional 88 permainan paling top dan garansi imbal balik hasil besar bersama https://tradisional88.net/
tradisional 88 permainan paling top dan garansi imbal balik hasil besar bersama https://tradisional88.com/
tombol88 permainan paling top dan garansi imbal balik hasil besar bersama https://tombol88.org/
tombol88 permainan paling top dan garansi imbal balik hasil besar bersama https://tombol88.net/
survey88 permainan paling top dan garansi imbal balik hasil besar bersama https://survey88.net/
survey88 permainan paling top dan garansi imbal balik hasil besar bersama https://survey88.com/
start88 permainan paling top dan garansi imbal balik hasil besar bersama https://start88.org/
start88 permainan paling top dan garansi imbal balik hasil besar bersama https://start88.asia/
obatkuat88 permainan paling top dan garansi imbal balik hasil besar bersama https://obatkuat88.net/
obatkuat88 permainan paling top dan garansi imbal balik hasil besar bersama https://obatkuat88.com/
mcb88 permainan paling top dan garansi imbal balik hasil besar bersama https://mcb88.info/
mcb88 permainan paling top dan garansi imbal balik hasil besar bersama https://mcb88.asia/
master99 permainan paling top dan garansi imbal balik hasil besar bersama https://master99.biz/
master888 permainan paling top dan garansi imbal balik hasil besar bersama https://master888.asia/
master88 permainan paling top dan garansi imbal balik hasil besar bersama https://master88.asia/
live88 permainan paling top dan garansi imbal balik hasil besar bersama https://live88.bio/
live88 permainan paling top dan garansi imbal balik hasil besar bersama https://live88.asia/
libra88 permainan paling top dan garansi imbal balik hasil besar bersama https://libra88.net/
kompresor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kompresor88.net/
kompresor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kompresor88.com/
kesimpulan88 permainan paling top dan garansi imbal balik hasil besar bersama https://kesimpulan88.net/
kesimpulan88 permainan paling top dan garansi imbal balik hasil besar bersama https://kesimpulan88.com/
kapasitor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kapasitor88.net/
kapasitor88 permainan paling top dan garansi imbal balik hasil besar bersama https://kapasitor88.com/
kacamata88 permainan paling top dan garansi imbal balik hasil besar bersama https://kacamata88.net/
kacamata88 permainan paling top dan garansi imbal balik hasil besar bersama https://kacamata88.com/
jamu88 permainan paling top dan garansi imbal balik hasil besar bersama https://jamu88.info/
jamu88 permainan paling top dan garansi imbal balik hasil besar bersama https://jamu88.asia/
jam88 permainan paling top dan garansi imbal balik hasil besar bersama https://jam88.info/
jam88 permainan paling top dan garansi imbal balik hasil besar bersama https://jam88.asia/
follow88 permainan paling top dan garansi imbal balik hasil besar bersama https://follow88.org/
follow88 permainan paling top dan garansi imbal balik hasil besar bersama https://follow88.net/
dinamo88 permainan paling top dan garansi imbal balik hasil besar bersama https://dinamo88.net/
dinamo88 permainan paling top dan garansi imbal balik hasil besar bersama https://dinamo88.info/
baterai88 permainan paling top dan garansi imbal balik hasil besar bersama https://baterai88.net/
baterai88 permainan paling top dan garansi imbal balik hasil besar bersama https://baterai88.com/
miegacoan permainan paling top dan garansi imbal balik hasil besar bersama https://miegacoan.life/
miegacoan permainan paling top dan garansi imbal balik hasil besar bersama https://miegacoan.asia/
gacoan permainan paling top dan garansi imbal balik hasil besar bersama https://gacoan.org/
gacoan permainan paling top dan garansi imbal balik hasil besar bersama https://gacoan.asia/
website88 permainan paling top dan garansi imbal balik hasil besar bersama https://website88.org/
waweb88 permainan paling top dan garansi imbal balik hasil besar bersama https://waweb88.net/
waweb88 permainan paling top dan garansi imbal balik hasil besar bersama https://waweb88.com/
translate88 permainan paling top dan garansi imbal balik hasil besar bersama https://translate88.net/
translate88 permainan paling top dan garansi imbal balik hasil besar bersama https://translate88.com/
tempur888 permainan paling top dan garansi imbal balik hasil besar bersama https://tempur888.info/
tempur888 permainan paling top dan garansi imbal balik hasil besar bersama https://tempur888.asia/
tambang99 permainan paling top dan garansi imbal balik hasil besar bersama https://tambang99.news/
tambang99 permainan paling top dan garansi imbal balik hasil besar bersama https://tambang99.asia/
support88 permainan paling top dan garansi imbal balik hasil besar bersama https://support88.org/
support88 permainan paling top dan garansi imbal balik hasil besar bersama https://support88.net/
support88 permainan paling top dan garansi imbal balik hasil besar bersama https://support88.asia/
sogoslot88 permainan paling top dan garansi imbal balik hasil besar bersama https://sogoslot88.asia/
siap88 permainan paling top dan garansi imbal balik hasil besar bersama https://siap88.news/
siap88 permainan paling top dan garansi imbal balik hasil besar bersama https://siap88.asia/
rog88 permainan paling top dan garansi imbal balik hasil besar bersama https://rog88.asia/
rog77 permainan paling top dan garansi imbal balik hasil besar bersama https://rog77.info/
pt88 permainan paling top dan garansi imbal balik hasil besar bersama https://pt88.info/
pt88 permainan paling top dan garansi imbal balik hasil besar bersama https://pt88.asia/
pln88 permainan paling top dan garansi imbal balik hasil besar bersama https://pln88.biz/
pln88 permainan paling top dan garansi imbal balik hasil besar bersama https://pln88.asia/
oke99 permainan paling top dan garansi imbal balik hasil besar bersama https://oke99.asia/
oke88 permainan paling top dan garansi imbal balik hasil besar bersama https://oke88.asia/
mining88 permainan paling top dan garansi imbal balik hasil besar bersama https://mining88.org/
livechat88 permainan paling top dan garansi imbal balik hasil besar bersama https://livechat88.info/
livechat88 permainan paling top dan garansi imbal balik hasil besar bersama https://livechat88.asia/
listrik88 permainan paling top dan garansi imbal balik hasil besar bersama https://listrik88.org/
listrik88 permainan paling top dan garansi imbal balik hasil besar bersama https://listrik88.info/
listrik88 permainan paling top dan garansi imbal balik hasil besar bersama https://listrik88.asia/
freeport88 permainan paling top dan garansi imbal balik hasil besar bersama https://freeport88.net/
freeport88 permainan paling top dan garansi imbal balik hasil besar bersama https://freeport88.com/
free88 permainan paling top dan garansi imbal balik hasil besar bersama https://free88.org/
free88 permainan paling top dan garansi imbal balik hasil besar bersama https://free88.asia/
domain88 permainan paling top dan garansi imbal balik hasil besar bersama https://domain88.org/
domain88 permainan paling top dan garansi imbal balik hasil besar bersama https://domain88.asia/
dokter888 permainan paling top dan garansi imbal balik hasil besar bersama https://dokter888.net/
dokter888 permainan paling top dan garansi imbal balik hasil besar bersama https://dokter888.asia/
bmkg88 permainan paling top dan garansi imbal balik hasil besar bersama https://bmkg88.net/
bmkg88 permainan paling top dan garansi imbal balik hasil besar bersama https://bmkg88.com/
asn88 permainan paling top dan garansi imbal balik hasil besar bersama https://asn88.org/
Informasi mengenai KING SLOT, Segera Daftar Bersama king selot terbaik dan terpercaya no satu di Indonesia. Boleh mendaftar melalui sini king slot serta memberikan hasil kembali yang paling tinggi saat sekarang ini hanyalah king slot paling gacor, gilak dan gaco saat sekarang di Indonesia melalui program return tinggi di kingselot serta pg king slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://kdwapp.com/
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://jebswagstore.com
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://demoslotgacor.pro
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama https://situsslotterbaru.net
slot demo gacor
akun demo slot gacor
akun slot demo gacor
akun demo slot pragmatic
akun slot demo pragmatic
akun slot demo
akun demo slot
situs slot terbaru
slot terbaru