Jak programowo włączyć przednią lampę błyskową w systemie Android?

233

Chcę programowo włączyć przednią lampę błyskową (nie z podglądem aparatu) w systemie Android. Poszukałem go, ale pomoc, którą znalazłem, odniosła mnie do tej strony

Czy ktoś ma jakieś linki lub przykładowy kod?

Saiket
źródło

Odpowiedzi:

401

W przypadku tego problemu należy:

  1. Sprawdź, czy latarka jest dostępna, czy nie?

  2. Jeśli tak, to wyłącz / włącz

  3. Jeśli nie, możesz zrobić cokolwiek, zgodnie z potrzebami aplikacji.

Aby sprawdzić dostępność lampy błyskowej w urządzeniu:

Możesz użyć następujących opcji:

 context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

która zwróci true, jeśli flash jest dostępny, false jeśli nie.

Zobacz:
http://developer.android.com/reference/android/content/pm/PackageManager.html, aby uzyskać więcej informacji.

Aby włączyć / wyłączyć latarkę:

Wylogowałem się i dowiedziałem się o android.permission.FLASHLIGHT. Pozwolenie na manifesty Androida wygląda obiecująco:

 <!-- 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" />

Następnie skorzystaj z Camera i ustaw Camera.Parameters . Głównym zastosowanym tutaj parametrem jest FLASH_MODE_TORCH .

na przykład.

Fragment kodu, aby włączyć latarkę aparatu.

Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();

Fragment kodu, aby wyłączyć światło LED kamery.

  cam.stopPreview();
  cam.release();

Właśnie znalazłem projekt, który korzysta z tego uprawnienia. Sprawdź kod src szybkich ustawień. tutaj http://code.google.com/p/quick-settings/ (Uwaga: ten link jest teraz uszkodzony)

W przypadku Flashlight bezpośrednio spójrz http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/#quick-settings/src/com/bwx/bequick/flashlight (Uwaga: ten link jest teraz zepsuty)

Update6 Możesz również spróbować dodać SurfaceView zgodnie z opisem w tej odpowiedzi Latarka LED na Galaxy Nexus sterowanym przez jaki interfejs API? To wydaje się być rozwiązaniem, które działa na wielu telefonach.

Aktualizacja 5 Ważna aktualizacja

Znalazłem alternatywny link (dla powyższych zepsutych linków): http://www.java2s.com/Open-Source/Android/Tools/quick-settings/com.bwx.bequick.flashlight.htm Możesz teraz użyć tego połączyć. [Aktualizacja: 14/9/2012 Ten link jest teraz uszkodzony]

Aktualizacja 1

Kolejny kod OpenSource: http://code.google.com/p/torch/source/browse/

Aktualizacja 2

Przykład pokazujący, jak włączyć diodę LED w telefonie Motorola Droid: http://code.google.com/p/droidled/

Kolejny kod Open Source:

http://code.google.com/p/covedesigndev/
http://code.google.com/p/search-light/

Aktualizacja 3 (Widget do włączania / wyłączania diody LED kamery)

Jeśli chcesz opracować widget, który włącza / wyłącza diodę kamery , musisz odesłać moją odpowiedź Widget do włączania / wyłączania latarki aparatu w Androidzie ..

Aktualizacja 4

Jeśli chcesz ustawić intensywność światła wychodzącego z kamery LED, możesz odnieść się do tego. Czy mogę zmienić intensywność LED urządzenia z Androidem? pełny post. Pamiętaj, że tylko zrootowane urządzenia HTC obsługują tę funkcję.

** Zagadnienia:**

Istnieją również pewne problemy podczas włączania / wyłączania latarki. na przykład. dla urządzeń, które nie mają, FLASH_MODE_TORCHa nawet jeśli tak, to latarka się nie włącza itp.

Zazwyczaj Samsung stwarza wiele problemów.

Możesz odnieść się do problemów z poniższej listy:

Użyj latarki aparatu w systemie Android

Włączanie / wyłączanie diody LED / lampy błyskowej aparatu w Samsung Galaxy Ace 2.2.1 i Galaxy Tab

Kartik Domadiya
źródło
2
Dzięki za pomoc, to działa dla mnie! - Właśnie skopiowałem interfejs Flashlight i klasę HtcLedFlashlight, a następnie wywołałem metodę setOn z true / false HtcLedFlashlight i to wszystko. --- Interfejs latarki code.google.com/p/quick-settings/source/browse/trunk/… - Class-HtcLedFlashlight code.google.com/p/quick-settings/source/browse/trunk/…
saiket
1
@saiket: witamy .. jeśli problem został rozwiązany, zaznacz tę odpowiedź jako rozwiązaną. aby był użyteczny dla innych ...
Kartik Domadiya
1
@PolamReddyRajaReddy: Myślę, że testujesz na urządzeniu Samsung. Mam rację ?
Kartik Domadiya
7
dla uprawnień poprawny kod w pliku manifestu to: `<uses-permission android: name =" android.permission.CAMERA "/> <uses-permission android: name =" android.permission.FLASHLIGHT "/>`
ixeft
1
Użyj także: - camera.release ();
Chetan
35

Z mojego doświadczenia wynika, że ​​jeśli twoja aplikacja jest przeznaczona do pracy zarówno w orientacji pionowej, jak i poziomej, musisz zadeklarować zmienną camjako statyczną. W przeciwnym razie, onDestroy()zwany przełączaniem orientacji, niszczy go, ale nie zwalnia aparatu, więc nie można go ponownie otworzyć.

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();
    }
}
}

aby się zamanifestować, musiałem umieścić tę linię

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

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

sugerowane linie powyżej nie działały dla mnie.

Ján Lazár
źródło
Nie musisz sprawdzać funkcji systemu, jeśli aparat jest wyłączony. Jeśli cam! = Zero, zostało włączone
Greg Ennis
1
Najbardziej pomocną częścią dla mnie byłyou need to declare the variable cam as static
Alex Jolig
Przy imporcie Cameraklasy należy AndroidStudio zwrócić uwagę na android.hardwareklasę ...
AN
32

W API 23 lub nowszym (Android M, 6.0)

Włącz kod

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();
    }
}

Wyłącz kod

camManager.setTorchMode(cameraId, false);

I uprawnienia

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

DODATKOWA EDYCJA

Ludzie wciąż oceniają moją odpowiedź, więc postanowiłem opublikować dodatkowy kod. Oto moje rozwiązanie problemu w przeszłości:

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();
    }
}
}
Kuba Rozpruwacz
źródło
2
Co rozumiesz przez „Zwykle przedni aparat jest w pozycji 0”? Jak mogę sprawdzić, który jest z przodu, a który nie? BTW, przedni aparat jest skierowany do bieżącego użytkownika. Tylny aparat to ten, który prawdopodobnie zawsze ma lampę błyskową. Jak mogę sprawdzić, czy lampa błyskowa jest włączona, czy wyłączona?
programista Androida
13

Mam lampę AutoFlash z poniżej prostymi trzema krokami.

  • Właśnie dodałem uprawnienia do aparatu i lampy błyskowej w pliku 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" />
  • Zrób to w kodzie aparatu.

    //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();
  • Buduj + Uruchom -> Teraz przejdź do Przyciemnij obszar światła i Zrób zdjęcie, powinieneś dostać automatyczne światło lampy błyskowej, jeśli urządzenie obsługuje.

swiftBoy
źródło
9

Android Lollipop wprowadził interfejs API camera2 i wycofał poprzedni interfejs API aparatu. Jednak użycie przestarzałego interfejsu API do włączenia pamięci flash nadal działa i jest znacznie prostsze niż użycie nowego interfejsu API.

Wygląda na to, że nowy interfejs API jest przeznaczony do użytku w dedykowanych aplikacjach z pełnymi funkcjami aparatu, a jego architekci tak naprawdę nie brali pod uwagę prostszych przypadków użycia, takich jak włączenie latarki. Aby to zrobić teraz, należy pobrać CameraManager, utworzyć CaptureSession z atrapą Surface, a na koniec utworzyć i uruchomić CaptureRequest. Uwzględniono obsługę wyjątków, czyszczenie zasobów i długie połączenia zwrotne!

Aby zobaczyć, jak włączyć latarkę w Lollipop i nowszych, spójrz na FlashlightController w projekcie AOSP (spróbuj znaleźć najnowsze, ponieważ starsze używają zmodyfikowanych interfejsów API). Nie zapomnij ustawić wymaganych uprawnień.


Android Marshmallow wreszcie wprowadził prosty sposób na włączenie flasha za pomocą setTorchMode .

LukaCiko
źródło
1
Stary interfejs API android.hardware.Camera nadal działa dokładnie tak jak poprzednio, więc nie ma podstawowego powodu, dla którego trzeba używać android.hardware.camera2 do latarki. Możliwe jest jednak zmniejszenie zużycia energii i obciążenia procesora za pomocą kamery2, ponieważ nie trzeba mieć aktywnego podglądu, aby włączyć latarkę.
Eddy Talvala
Wypróbowałem jedną z prostszych implementacji na dwóch urządzeniach Lollipop i nie włączyła ona lampy błyskowej, mimo że działała na wszystkich kilku urządzeniach Lollipop, na których wcześniej wypróbowałem. Być może to tylko błąd w Lollipop. Jeśli stare metody nadal działają dla Ciebie i jeśli nie jesteś purystą Java, kontynuuj używanie starego interfejsu API, ponieważ jest to o wiele prostsze :)
LukaCiko
Obecnie mam Nexusa 5 z Lollipopem i działa idealnie. Posiadam również stworzoną przeze mnie aplikację, która jest wdrażana tymi metodami. Na wypadek, gdyby ktoś chciał tego spróbować. Umieszczam link do sklepu Play: play.google.com/store/apps/details?id=com.fadad.linterna Ważne jest przede wszystkim upewnienie się, że aparat jest włączony lub wyłączony przed uruchomieniem lampy błyskowej i uprawnień.
ferdiado
Przepraszam, mój błąd. Inna aplikacja prawdopodobnie używała aparatu, gdy próbowałem włączyć lampę błyskową za pomocą starego interfejsu API. Zaktualizowałem odpowiedź.
LukaCiko,
7

Kompletny kod dla aplikacji Android Flashlight

Oczywisty

  <?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;
          }
      }

  }
KUKS
źródło
jeśli lampa błyskowa jest już włączona przed rozpoczęciem przykładu, to próba wyłączenia lampy błyskowej nie zadziała ... czy masz rozwiązanie tego problemu?
Taifun,
7

Istnieją różne sposoby uzyskiwania dostępu do lampy błyskowej w różnych wersjach Androida. Kilka interfejsów API przestało działać w Lollipop, a następnie zostało ponownie zmienione w Marshmallow. Aby temu zaradzić, stworzyłem prostą bibliotekę, z której korzystałem w kilku moich projektach i daje dobre wyniki. Nadal jest niekompletny, ale możesz spróbować sprawdzić kod i znaleźć brakujące elementy. Oto link - NoobCameraFlash .

Jeśli chcesz po prostu zintegrować swój kod, możesz użyć do tego gradle. Oto instrukcje (zaczerpnięte bezpośrednio z Readme) -

Krok 1. Dodaj repozytorium JitPack do pliku kompilacji. Dodaj go do swojego root build.gradle na końcu repozytoriów:

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

Krok 2. Dodaj zależność

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

Stosowanie

Zainicjuj NoobCameraManagersingletona.

NoobCameraManager.getInstance().init(this);

Opcjonalnie można ustawić poziom dziennika do rejestrowania debugowania. Rejestrowanie korzysta z biblioteki LumberJack . Domyślny LogLevel toLogLevel.None

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

Następnie wystarczy zadzwonić do singletona, aby włączyć lub wyłączyć lampę błyskową aparatu.

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

Przed zainicjowaniem NoobCameraManager musisz zadbać o uprawnienia środowiska wykonawczego, aby uzyskać dostęp do kamery. W wersji 0.1.2 lub wcześniejszej zapewnialiśmy obsługę uprawnień bezpośrednio z biblioteki, ale ze względu na zależność od obiektu Activity musimy go usunąć.

Łatwo też przełączyć Flash

if(NoobCameraManager.getInstance().isFlashOn()){
    NoobCameraManager.getInstance().turnOffFlash();
}else{
    NoobCameraManager.getInstance().turnOnFlash();
}
Nowicjusz
źródło
Dodaj obsługę używania kontekstu zamiast działania. Dzięki!
Vajira Lasantha
@VajiraLasantha Obiekt Activity jest wymagany do uzyskania pozwolenia. Planowałem całkowicie usunąć to wymaganie, jakoś oddzielając uprawnienia. Śledzono go tutaj - github.com/Abhi347/NoobCameraFlash/issues/3 W międzyczasie możesz zmodyfikować kod, aby usunąć wymaganie, jeśli chcesz. Może potrzebuję trochę czasu, aby nad tym popracować.
noob
Tak, widziałem to. Już zmieniłem twoją bibliotekę lib do pracy z Kontekstem, usuwając elementy dotyczące uprawnień. Ponieważ moja aplikacja już sprawdza poprawność uprawnień. Daj mi znać, kiedy wydałeś odpowiednią implementację, która obsługuje kontekst. Dzięki!
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
Co zrobić, jeśli na urządzeniu jest wiele błysków? Niektóre mają przedni aparat ...
programista Androida
0

Zaimplementowałem tę funkcję w mojej aplikacji poprzez fragmenty korzystające z SurfaceView. Link do tego pytania dotyczącego przepełnienia stosu i jego odpowiedź można znaleźć tutaj

Mam nadzieję że to pomoże :)

Michele La Ferla
źródło
0

W Marshmallow i nowszych wydaje się, że `setTorchMode () 'CameraManager jest odpowiedzią. To działa dla mnie:

 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
źródło
0

Spróbuj tego.

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
źródło
-3

Możesz również użyć następującego kodu, aby wyłączyć lampę błyskową.

Camera.Parameters params = mCamera.getParameters()
p.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
belphegor
źródło