Saya ingin menyalakan lampu kilat depan (bukan dengan pratinjau kamera) secara terprogram di Android. Saya mencari di Google untuk itu tetapi bantuan yang saya temukan merujuk saya ke halaman ini
Adakah yang punya tautan atau kode sampel?
sumber
Saya ingin menyalakan lampu kilat depan (bukan dengan pratinjau kamera) secara terprogram di Android. Saya mencari di Google untuk itu tetapi bantuan yang saya temukan merujuk saya ke halaman ini
Adakah yang punya tautan atau kode sampel?
Untuk masalah ini Anda harus:
Periksa apakah senter tersedia atau tidak?
Jika demikian maka Matikan / Hidupkan
Jika tidak maka Anda bisa melakukan apa saja, sesuai dengan kebutuhan aplikasi Anda.
Untuk Memeriksa ketersediaan flash di perangkat:
Anda dapat menggunakan yang berikut ini:
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
yang akan mengembalikan true jika flash tersedia, false jika tidak.
Lihat:
http://developer.android.com/reference/android/content/pm/PackageManager.html untuk informasi lebih lanjut.
Untuk menyalakan / mematikan senter:
Saya mencari di Google dan mengetahui tentang android.permission.FLASHLIGHT ini. Izin manifes Android terlihat menjanjikan:
<!-- Allows access to the flashlight -->
<permission android:name="android.permission.FLASHLIGHT"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="normal"
android:label="@string/permlab_flashlight"
android:description="@string/permdesc_flashlight" />
Kemudian gunakan Camera dan atur Camera.Parameters . Parameter utama yang digunakan di sini adalah FLASH_MODE_TORCH .
misalnya.
Cuplikan Kode untuk menyalakan senter kamera.
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Cuplikan kode untuk mematikan lampu led kamera.
cam.stopPreview();
cam.release();
Saya baru saja menemukan proyek yang menggunakan izin ini. Periksa kode src pengaturan cepat. di sini http://code.google.com/p/quick-settings/ (Catatan: Tautan ini sekarang rusak)
Untuk Flashlight secara langsung lihat http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/#quick-settings/src/com/bwx/bequick/flashlight (Catatan: Tautan ini sekarang rusak)
Update6 Anda juga bisa mencoba menambahkan SurfaceView seperti yang dijelaskan dalam jawaban ini senter LED pada Galaxy Nexus yang dapat dikontrol oleh API apa? Ini sepertinya menjadi solusi yang berfungsi pada banyak ponsel.
Perbarui 5 Pembaruan Besar
Saya telah menemukan Tautan alternatif (untuk tautan rusak di atas): http://www.java2s.com/Open-Source/Android/Tools/quick-settings/com.bwx.bequick.flashlight.htm Sekarang Anda dapat menggunakan ini tautan. [Pembaruan: 14/9/2012 Tautan ini sekarang rusak]
Perbarui 1
Kode OpenSource lain: http://code.google.com/p/torch/source/browse/
Perbarui 2
Contoh yang menunjukkan cara mengaktifkan LED pada Motorola Droid: http://code.google.com/p/droidled/
Kode Sumber Terbuka Lain:
http://code.google.com/p/covedesigndev/
http://code.google.com/p/search-light/
Pembaruan 3 (Widget untuk menghidupkan / mematikan kamera yang dipimpin)
Jika Anda ingin mengembangkan widget yang menghidupkan / mematikan kamera Anda, maka Anda harus merujuk Widget jawaban saya untuk menghidupkan / mematikan senter kamera di android ..
Perbarui 4
Jika Anda ingin mengatur intensitas cahaya yang muncul dari LED kamera Anda dapat merujuk Dapatkah saya mengubah intensitas LED dari perangkat Android?pos penuh. Perhatikan bahwa hanya perangkat HTC yang di-rooting yang mendukung fitur ini.
** Masalah:**
Ada juga beberapa masalah saat menyalakan / mematikan senter. misalnya. untuk perangkat yang tidak memiliki FLASH_MODE_TORCH
atau bahkan jika ada, maka senter tidak menyala, dll.
Biasanya Samsung menciptakan banyak masalah.
Anda dapat merujuk masalah dalam daftar di bawah ini:
Gunakan senter kamera di Android
Hidupkan / Matikan LED Kamera / lampu flash di Samsung Galaxy Ace 2.2.1 & Galaxy Tab
Dari pengalaman saya, jika aplikasi Anda dirancang untuk bekerja dalam orientasi potret dan lanskap, Anda perlu mendeklarasikan variabel
cam
sebagai statis. Kalau tidak,onDestroy()
yang disebut orientasi switching, menghancurkannya tetapi tidak merilis Kamera sehingga tidak mungkin untuk membukanya kembali.untuk mewujudkan saya harus meletakkan garis ini
dari http://developer.android.com/reference/android/hardware/Camera.html
baris yang disarankan di atas tidak bekerja untuk saya.
sumber
you need to declare the variable cam as static
Camera
Kelas,AndroidStudio
perhatikanandroid.hardware
kelas ...Di API 23 atau lebih tinggi (Android M, 6.0)
EDIT TAMBAHAN
Orang-orang masih memperbaiki jawaban saya jadi saya memutuskan untuk mengirim kode tambahan Ini adalah solusi saya untuk masalah di masa lalu:
sumber
Saya Dapat cahaya AutoFlash dengan Tiga Langkah sederhana di bawah ini.
Dalam Kode Kamera Anda, lakukan cara ini.
Build + Run -> Now Pergi ke area redup cahaya dan Jepret foto, Anda akan mendapatkan lampu flash otomatis jika perangkat mendukung.
sumber
Android Lollipop memperkenalkan camera2 API dan menghentikan API kamera sebelumnya. Namun, menggunakan API yang sudah tidak digunakan lagi untuk menghidupkan flash masih berfungsi dan jauh lebih sederhana daripada menggunakan API baru.
Tampaknya API baru dimaksudkan untuk digunakan dalam aplikasi kamera berfitur lengkap dan arsiteknya tidak benar-benar mempertimbangkan kasus penggunaan yang lebih sederhana seperti menyalakan lampu senter. Untuk melakukan itu sekarang, kita harus mendapatkan CameraManager, membuat CaptureSession dengan Permukaan dummy, dan akhirnya membuat dan memulai CaptureRequest. Penanganan pengecualian, pembersihan sumber daya, dan panggilan balik yang panjang sudah termasuk!
Untuk melihat cara menyalakan lampu senter pada Lollipop dan yang lebih baru, lihatlah FlashlightController di proyek AOSP (cobalah untuk menemukan yang terbaru sebagai API penggunaan lama yang telah dimodifikasi). Jangan lupa untuk mengatur izin yang diperlukan.
Android Marshmallow akhirnya memperkenalkan cara sederhana untuk menyalakan flash dengan setTorchMode .
sumber
Kode Lengkap untuk Aplikasi Senter android
Nyata
XML
MainActivity.java
sumber
Ada berbagai cara untuk mengakses Flash Kamera dalam berbagai versi Android. Beberapa API berhenti bekerja di Lollipop dan kemudian diubah lagi di Marshmallow. Untuk mengatasinya, saya telah membuat perpustakaan sederhana yang telah saya gunakan di beberapa proyek saya dan memberikan hasil yang baik. Ini masih belum lengkap, tetapi Anda dapat mencoba memeriksa kode dan menemukan bagian yang hilang. Inilah tautannya - NoobCameraFlash .
Jika Anda hanya ingin mengintegrasikan kode Anda, Anda bisa menggunakan gradle untuk itu. Ini instruksinya (Diambil langsung dari Readme) -
Langkah 1. Tambahkan repositori JitPack ke file build Anda. Tambahkan di root build.gradle Anda di akhir repositori:
Langkah 2. Tambahkan ketergantungan
Pemakaian
Inisialisasi
NoobCameraManager
singleton.Anda secara opsional dapat mengatur Level Log untuk logging debug. Logging menggunakan perpustakaan LumberJack . LogLevel default adalah
LogLevel.None
Setelah itu Anda hanya perlu memanggil singleton untuk menghidupkan atau mematikan flash kamera.
Mudah untuk mengaktifkan Flash juga
sumber
You have to take care of the runtime permissions to access Camera yourself, before initializing the NoobCameraManager. In version 0.1.2 or earlier we used to provide support for permissions directly from the library, but due to dependency on the Activity object, we have to remove it.
Saya telah mengimplementasikan fungsi ini dalam aplikasi saya melalui fragmen menggunakan SurfaceView. Tautan ke pertanyaan stackoverflow ini dan jawabannya dapat ditemukan di sini
Semoga ini membantu :)
sumber
Di Marshmallow dan di atasnya, `setTorchMode () 'dari CameraManager tampaknya menjadi jawabannya. Ini bekerja untuk saya:
sumber
Coba ini.
sumber
Anda juga dapat menggunakan kode berikut untuk mematikan lampu kilat.
sumber