Bagaimana menyalakan lampu flash depan secara terprogram di Android?

233

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?

saiket
sumber

Jawaban:

401

Untuk masalah ini Anda harus:

  1. Periksa apakah senter tersedia atau tidak?

  2. Jika demikian maka Matikan / Hidupkan

  3. 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_TORCHatau 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

Kartik Domadiya
sumber
2
Terima kasih atas bantuan Anda, Ini bekerja untuk saya! - Saya baru saja menyalin antarmuka Flashlight dan kelas HtcLedFlashlight maka saya hanya memanggil metode setOn dengan true / false HtcLedFlashlight dan itu. --- Interface-Flashlight code.google.com/p/quick-settings/source/browse/trunk/… - Class-HtcLedFlashlight code.google.com/p/quick-settings/source/browse/trunk/…
saiket
1
@saiket: selamat datang .. jika masalah Anda terpecahkan maka tandai jawaban ini sudah terpecahkan. sehingga dapat bermanfaat bagi orang lain ..
Kartik Domadiya
1
@ PolamReddyRajaReddy: Saya pikir Anda menguji di Perangkat Samsung. Apakah saya benar ?
Kartik Domadiya
7
untuk izin, kode yang benar dalam file manifes adalah: `<menggunakan-izin android: name =" android.permission.CAMERA "/> <menggunakan-izin android: name =" android.permission.FLASHLIGHT "/>`
ixeft
1
Juga gunakan: - camera.release ();
Chetan
35

Dari pengalaman saya, jika aplikasi Anda dirancang untuk bekerja dalam orientasi potret dan lanskap, Anda perlu mendeklarasikan variabel camsebagai statis. Kalau tidak, onDestroy()yang disebut orientasi switching, menghancurkannya tetapi tidak merilis Kamera sehingga tidak mungkin untuk membukanya kembali.

package com.example.flashlight;

import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

public static Camera cam = null;// has to be static, otherwise onDestroy() destroys it

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void flashLightOn(View view) {

    try {
        if (getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_CAMERA_FLASH)) {
            cam = Camera.open();
            Parameters p = cam.getParameters();
            p.setFlashMode(Parameters.FLASH_MODE_TORCH);
            cam.setParameters(p);
            cam.startPreview();
        }
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getBaseContext(), "Exception flashLightOn()",
                Toast.LENGTH_SHORT).show();
    }
}

public void flashLightOff(View view) {
    try {
        if (getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_CAMERA_FLASH)) {
            cam.stopPreview();
            cam.release();
            cam = null;
        }
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getBaseContext(), "Exception flashLightOff",
                Toast.LENGTH_SHORT).show();
    }
}
}

untuk mewujudkan saya harus meletakkan garis ini

    <uses-permission android:name="android.permission.CAMERA" />

dari http://developer.android.com/reference/android/hardware/Camera.html

baris yang disarankan di atas tidak bekerja untuk saya.

Ján Lazár
sumber
Anda tidak perlu memeriksa fitur sistem jika kamera mati. Jika cam! = Null, dihidupkan
Greg Ennis
1
Bagian yang paling membantu bagi saya adalahyou need to declare the variable cam as static
Alex Jolig
Saat mengimpor CameraKelas, AndroidStudio perhatikan android.hardwarekelas ...
AN
32

Di API 23 atau lebih tinggi (Android M, 6.0)

Aktifkan kode

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    String cameraId = null; 
    try {
        cameraId = camManager.getCameraIdList()[0];
        camManager.setTorchMode(cameraId, true);   //Turn ON
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

Matikan kode

camManager.setTorchMode(cameraId, false);

Dan Izin

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>

EDIT TAMBAHAN

Orang-orang masih memperbaiki jawaban saya jadi saya memutuskan untuk mengirim kode tambahan Ini adalah solusi saya untuk masalah di masa lalu:

public class FlashlightProvider {

private static final String TAG = FlashlightProvider.class.getSimpleName();
private Camera mCamera;
private Camera.Parameters parameters;
private CameraManager camManager;
private Context context;

public FlashlightProvider(Context context) {
    this.context = context;
}

private void turnFlashlightOn() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        try {
            camManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
            String cameraId = null; 
            if (camManager != null) {
                cameraId = camManager.getCameraIdList()[0];
                camManager.setTorchMode(cameraId, true);
            }
        } catch (CameraAccessException e) {
            Log.e(TAG, e.toString());
        }
    } else {
        mCamera = Camera.open();
        parameters = mCamera.getParameters();
        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }
}

private void turnFlashlightOff() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        try {
            String cameraId;
            camManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
            if (camManager != null) {
                cameraId = camManager.getCameraIdList()[0]; // Usually front camera is at 0 position.
                camManager.setTorchMode(cameraId, false);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    } else {
        mCamera = Camera.open();
        parameters = mCamera.getParameters();
        parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        mCamera.setParameters(parameters);
        mCamera.stopPreview();
    }
}
}
Jack The Ripper
sumber
2
Apa yang Anda maksud dengan "Biasanya kamera depan berada pada posisi 0"? Bagaimana saya bisa memeriksa mana yang ada di depan dan mana yang tidak? BTW, kamera menghadap ke depan adalah yang diarahkan ke pengguna saat ini. Kamera menghadap ke belakang adalah salah satu yang mungkin selalu memiliki flash. Dan bagaimana cara saya memeriksa apakah flash dinyalakan atau dimatikan?
pengembang android
13

Saya Dapat cahaya AutoFlash dengan Tiga Langkah sederhana di bawah ini.

  • Saya baru saja menambahkan Izin Kamera dan Flash dalam file Manifest.xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
  • Dalam Kode Kamera Anda, lakukan cara ini.

    //Open Camera
    Camera  mCamera = Camera.open(); 
    
    //Get Camera Params for customisation
    Camera.Parameters parameters = mCamera.getParameters();
    
    //Check Whether device supports AutoFlash, If you YES then set AutoFlash
    List<String> flashModes = parameters.getSupportedFlashModes();
    if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO))
    {
         parameters.setFlashMode(Parameters.FLASH_MODE_AUTO);
    }
    mCamera.setParameters(parameters);
    mCamera.startPreview();
  • Build + Run -> Now Pergi ke area redup cahaya dan Jepret foto, Anda akan mendapatkan lampu flash otomatis jika perangkat mendukung.

swiftBoy
sumber
9

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 .

LukaCiko
sumber
1
API android.hardware.Camera yang lama terus berfungsi persis seperti sebelumnya, jadi tidak ada alasan mendasar Anda perlu menggunakan android.hardware.camera2 untuk lampu senter. Mungkin saja Anda dapat mengurangi konsumsi daya dan beban CPU dengan camera2, karena Anda tidak perlu menyimpan pratinjau aktif untuk mengaktifkan senter.
Eddy Talvala
Saya sudah mencoba salah satu implementasi yang lebih sederhana pada dua perangkat Lollipop dan itu tidak menyalakan flash, meskipun itu berfungsi pada semua beberapa perangkat pra-Lollipop yang telah saya coba. Mungkin itu hanya bug di Lollipop. Jika metode lama masih bekerja untuk Anda dan jika Anda bukan seorang purist Java terus menggunakan API lama karena jauh lebih sederhana :)
LukaCiko
Saat ini saya memiliki Nexus 5 dengan Lollipop dan bekerja dengan sempurna. Saya juga memiliki aplikasi yang dibuat oleh saya sendiri dan diimplementasikan dengan metode ini. Seandainya ada yang mau mencobanya. Saya memasang tautan ke play store: play.google.com/store/apps/details?id=com.fadad.linterna Yang terpenting adalah memastikan bahwa kamera aktif atau dinonaktifkan sebelum menjalankan flash dan izin.
ferdiado
Maaf, kesalahan saya. Aplikasi lain mungkin menggunakan kamera ketika saya mencoba menyalakan flash dengan API lama. Saya sudah memperbarui jawabannya.
LukaCiko
7

Kode Lengkap untuk Aplikasi Senter android

Nyata

  <?xml version="1.0" encoding="utf-8"?>
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.user.flashlight"
      android:versionCode="1"
      android:versionName="1.0">

      <uses-sdk
          android:minSdkVersion="8"
          android:targetSdkVersion="17"/>

      <uses-permission android:name="android.permission.CAMERA" />
      <uses-feature android:name="android.hardware.camera"/>

      <application
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:theme="@style/AppTheme" >
          <activity
              android:name=".MainActivity"
              android:label="@string/app_name" >
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />

                  <category android:name="android.intent.category.LAUNCHER" />
              </intent-filter>
          </activity>
      </application>

  </manifest>

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OFF"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:onClick="turnFlashOnOrOff" />
</RelativeLayout>

MainActivity.java

  import android.app.AlertDialog;
  import android.content.DialogInterface;
  import android.content.pm.PackageManager;
  import android.hardware.Camera;
  import android.hardware.Camera.Parameters;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.Button;

  import java.security.Policy;

  public class MainActivity extends AppCompatActivity {

      Button button;
      private Camera camera;
      private boolean isFlashOn;
      private boolean hasFlash;
      Parameters params;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

          button = (Button) findViewById(R.id.button);

          hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

          if(!hasFlash) {

              AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
              alert.setTitle("Error");
              alert.setMessage("Sorry, your device doesn't support flash light!");
              alert.setButton("OK", new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      finish();
                  }
              });
              alert.show();
              return;
          }

          getCamera();

          button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {

                  if (isFlashOn) {
                      turnOffFlash();
                      button.setText("ON");
                  } else {
                      turnOnFlash();
                      button.setText("OFF");
                  }

              }
          });
      }

      private void getCamera() {

          if (camera == null) {
              try {
                  camera = Camera.open();
                  params = camera.getParameters();
              }catch (Exception e) {

              }
          }

      }

      private void turnOnFlash() {

          if(!isFlashOn) {
              if(camera == null || params == null) {
                  return;
              }

              params = camera.getParameters();
              params.setFlashMode(Parameters.FLASH_MODE_TORCH);
              camera.setParameters(params);
              camera.startPreview();
              isFlashOn = true;
          }

      }

      private void turnOffFlash() {

              if (isFlashOn) {
                  if (camera == null || params == null) {
                      return;
                  }

                  params = camera.getParameters();
                  params.setFlashMode(Parameters.FLASH_MODE_OFF);
                  camera.setParameters(params);
                  camera.stopPreview();
                  isFlashOn = false;
              }
      }

      @Override
      protected void onDestroy() {
          super.onDestroy();
      }

      @Override
      protected void onPause() {
          super.onPause();

          // on pause turn off the flash
          turnOffFlash();
      }

      @Override
      protected void onRestart() {
          super.onRestart();
      }

      @Override
      protected void onResume() {
          super.onResume();

          // on resume turn on the flash
          if(hasFlash)
              turnOnFlash();
      }

      @Override
      protected void onStart() {
          super.onStart();

          // on starting the app get the camera params
          getCamera();
      }

      @Override
      protected void onStop() {
          super.onStop();

          // on stop release the camera
          if (camera != null) {
              camera.release();
              camera = null;
          }
      }

  }
RAP
sumber
jika flash sudah menyala sebelum memulai contoh Anda, maka mencoba mematikan flash tidak akan berfungsi ... apakah Anda punya solusi untuk masalah itu?
Taifun
7

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:

allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
}

Langkah 2. Tambahkan ketergantungan

dependencies {
        compile 'com.github.Abhi347:NoobCameraFlash:0.0.1'
  }

Pemakaian

Inisialisasi NoobCameraManagersingleton.

NoobCameraManager.getInstance().init(this);

Anda secara opsional dapat mengatur Level Log untuk logging debug. Logging menggunakan perpustakaan LumberJack . LogLevel default adalahLogLevel.None

NoobCameraManager.getInstance().init(this, LogLevel.Verbose);

Setelah itu Anda hanya perlu memanggil singleton untuk menghidupkan atau mematikan flash kamera.

NoobCameraManager.getInstance().turnOnFlash();
NoobCameraManager.getInstance().turnOffFlash();

Anda harus mengurus izin runtime untuk mengakses Camera sendiri, sebelum menginisialisasi NoobCameraManager. Dalam versi 0.1.2 atau sebelumnya, kami dulu memberikan dukungan untuk izin langsung dari pustaka, tetapi karena ketergantungan pada objek Aktivitas, kami harus menghapusnya.

Mudah untuk mengaktifkan Flash juga

if(NoobCameraManager.getInstance().isFlashOn()){
    NoobCameraManager.getInstance().turnOffFlash();
}else{
    NoobCameraManager.getInstance().turnOnFlash();
}
cupu
sumber
Harap tambahkan dukungan untuk menggunakan Konteks daripada Aktivitas. Terima kasih!
Vajira Lasantha
@VajiraLasantha Objek Aktivitas diperlukan untuk mengambil izin. Saya berencana untuk menghapus persyaratan sepenuhnya dengan memisahkan izin entah bagaimana. Sudah dilacak di sini - github.com/Abhi347/NoobCameraFlash/issues/3 Sementara itu, Anda dapat memodifikasi kode untuk menghapus persyaratan jika Anda mau. Saya mungkin perlu waktu untuk mengerjakannya.
noob
Ya saya melihat itu. Saya telah mengubah lib Anda untuk bekerja dengan Konteks dengan menghapus hal-hal izin. Karena aplikasi saya sudah melakukan validasi izin. Tolong beri tahu saya ketika Anda merilis implementasi yang tepat yang mendukung Konteks. Terima kasih!
Vajira Lasantha
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.
Pratik Butani
Bagaimana jika ada beberapa flash pada perangkat? Beberapa memiliki kamera yang menghadap ke depan ...
Pengembang Android
0

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 :)

Michele La Ferla
sumber
0

Di Marshmallow dan di atasnya, `setTorchMode () 'dari CameraManager tampaknya menjadi jawabannya. Ini bekerja untuk saya:

 final CameraManager mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
 CameraManager.TorchCallback torchCallback = new CameraManager.TorchCallback() {
     @Override
     public void onTorchModeUnavailable(String cameraId) {
         super.onTorchModeUnavailable(cameraId);
     }

     @Override
     public void onTorchModeChanged(String cameraId, boolean enabled) {
         super.onTorchModeChanged(cameraId, enabled);
         boolean currentTorchState = enabled;
         try {
             mCameraManager.setTorchMode(cameraId, !currentTorchState);
         } catch (CameraAccessException e){}



     }
 };

 mCameraManager.registerTorchCallback(torchCallback, null);//fires onTorchModeChanged upon register
 mCameraManager.unregisterTorchCallback(torchCallback);
aecl755
sumber
0

Coba ini.

CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    String cameraId = null; // Usually front camera is at 0 position.
    try {
        cameraId = camManager.getCameraIdList()[0];
        camManager.setTorchMode(cameraId, true);
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
Jaswant Singh
sumber
-3

Anda juga dapat menggunakan kode berikut untuk mematikan lampu kilat.

Camera.Parameters params = mCamera.getParameters()
p.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
belphegor
sumber