Wie schalte ich das vordere Blitzlicht programmgesteuert in Android ein?


233

Ich möchte das vordere Blitzlicht (nicht mit Kameravorschau) programmgesteuert in Android einschalten. Ich habe danach gegoogelt, aber die Hilfe, die ich gefunden habe, hat mich auf diese Seite verwiesen

Hat jemand Links oder Beispielcode?

Antworten:


401

Für dieses Problem sollten Sie:

  1. Überprüfen Sie, ob die Taschenlampe verfügbar ist oder nicht?

  2. Wenn ja, dann aus- / einschalten

  3. Wenn nicht, können Sie alles tun, was Ihren App-Anforderungen entspricht.

So überprüfen Sie die Verfügbarkeit von Flash im Gerät:

Sie können Folgendes verwenden:

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

Dies gibt true zurück, wenn ein Flash verfügbar ist, false, wenn nicht.

Weitere Informationen finden Sie unter:
http://developer.android.com/reference/android/content/pm/PackageManager.html .

Zum Ein- und Ausschalten der Taschenlampe:

Ich googelte und bekam dies über android.permission.FLASHLIGHT. Die Erlaubnis für Android-Manifeste sieht vielversprechend aus:

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

Verwenden Sie dann Camera und stellen Sie Camera.Parameters ein . Der hier verwendete Hauptparameter ist FLASH_MODE_TORCH .

z.B.

Code-Snippet zum Einschalten der Taschenlampe der Kamera.

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

Code-Snippet zum Ausschalten des LED-Lichts der Kamera.

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

Ich habe gerade ein Projekt gefunden, das diese Berechtigung verwendet. Überprüfen Sie den Quellcode der Schnelleinstellungen. hier http://code.google.com/p/quick-settings/ (Hinweis: Dieser Link ist jetzt defekt)

Informationen zur Taschenlampe finden Sie direkt unter http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/#quick-settings/src/com/bwx/bequick/flashlight (Hinweis: Dieser Link ist jetzt kaputt)

Update6 Sie können auch versuchen, eine SurfaceView hinzuzufügen, wie in dieser Antwort beschrieben. LED-Taschenlampe auf dem Galaxy Nexus, die mit welcher API gesteuert werden kann? Dies scheint eine Lösung zu sein, die auf vielen Telefonen funktioniert.

Update 5 Hauptupdate

Ich habe einen alternativen Link gefunden (für die defekten Links oben): http://www.java2s.com/Open-Source/Android/Tools/quick-settings/com.bwx.bequick.flashlight.htm Sie können diesen jetzt verwenden Verknüpfung. [Update: 14.9.2012 Dieser Link ist jetzt defekt]

Update 1

Ein weiterer OpenSource-Code: http://code.google.com/p/torch/source/browse/

Update 2

Beispiel für die Aktivierung der LED auf einem Motorola Droid: http://code.google.com/p/droidled/

Ein weiterer Open Source Code:

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

Update 3 (Widget zum Ein- und Ausschalten der Kamera-LED)

Wenn Sie ein Widget entwickeln möchten, das Ihre Kamera-LED ein- und ausschaltet , müssen Sie meine Antwort Widget zum Ein- und Ausschalten der Taschenlampe in Android verwenden .

Update 4

Wenn Sie die Intensität des von der Kamera-LED austretenden Lichts einstellen möchten, können Sie sich darauf beziehen. Kann ich die LED-Intensität eines Android-Geräts ändern? vollständiger Beitrag. Beachten Sie, dass nur gerootete HTC-Geräte diese Funktion unterstützen.

** Probleme:**

Es gibt auch einige Probleme beim Ein- und Ausschalten der Taschenlampe. z.B. Für Geräte, die keine haben FLASH_MODE_TORCHoder auch wenn dies der Fall ist, schaltet sich die Taschenlampe nicht ein usw.

Normalerweise verursacht Samsung viele Probleme.

Sie können auf Probleme in der folgenden Liste verweisen:

Verwenden Sie die Taschenlampe der Kamera in Android

Schalten Sie die Kamera-LED / das Blitzlicht in Samsung Galaxy Ace 2.2.1 und Galaxy Tab ein / aus


2
Danke für deine Hilfe, es funktioniert bei mir! - Ich habe gerade die Schnittstelle Flashlight und die Klasse HtcLedFlashlight kopiert, dann rufe ich einfach die setOn-Methode mit true / false HtcLedFlashlight auf und das es. --- 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: Willkommen .. Wenn Ihr Problem gelöst ist, markieren Sie diese Antwort als gelöst. damit es für andere nützlich sein kann ..
Kartik Domadiya

1
@PolamReddyRajaReddy: Ich denke, Sie testen in Samsung Device. Hab ich recht ?
Kartik Domadiya

7
Für Berechtigungen lautet der korrekte Code in der Manifestdatei: `<Verwendungsberechtigung android: name =" android.permission.CAMERA "/> <Verwendungsberechtigung android: name =" android.permission.FLASHLIGHT "/>`
ixeft

1
Verwenden Sie auch: - camera.release ();
Chetan

35

Nach meiner Erfahrung müssen Sie die Variable camals statisch deklarieren, wenn Ihre Anwendung sowohl im Hoch- als auch im Querformat arbeiten soll. Andernfalls onDestroy()wird es beim Umschalten der Ausrichtung zerstört, die Kamera wird jedoch nicht freigegeben, sodass es nicht möglich ist, sie erneut zu öffnen.

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

Um mich zu manifestieren, musste ich diese Linie setzen

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

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

Die oben vorgeschlagenen Zeilen funktionierten bei mir nicht.


Sie müssen nicht nach der Systemfunktion suchen, wenn die Kamera ausgeschaltet ist. Wenn cam! = Null, wurde es eingeschaltet
Greg Ennis

1
Der hilfreichste Teil für mich waryou need to declare the variable cam as static
Alex Jolig

Achten Sie beim Importieren der CameraKlasse AndroidStudio darauf, android.hardwareKlasse zu sein ...
AN

32

In API 23 oder höher (Android M, 6.0)

Code einschalten

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

Code ausschalten

camManager.setTorchMode(cameraId, false);

Und Berechtigungen

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

ZUSÄTZLICHE BEARBEITUNG

Die Leute haben meine Antwort immer noch positiv bewertet, also habe ich beschlossen, zusätzlichen Code zu veröffentlichen. Dies war früher meine Lösung für das Problem:

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

2
Was meinst du mit "Normalerweise befindet sich die Frontkamera auf 0"? Wie kann ich überprüfen, welche vorne ist und welche nicht? Übrigens ist die nach vorne gerichtete Kamera diejenige, die an den aktuellen Benutzer gerichtet ist. Die nach hinten gerichtete Kamera hat wahrscheinlich immer einen Blitz. Und wie kann ich überprüfen, ob der Blitz ein- oder ausgeschaltet ist?
Android-Entwickler

13

Ich habe AutoFlash Licht mit unten einfachen drei Schritten.

  • Ich habe gerade die Kamera- und Blitzberechtigung in der Datei Manifest.xml hinzugefügt
<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" />
  • Gehen Sie in Ihrem Kameracode so vor.

    //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();
    
  • Erstellen + Ausführen -> Gehen Sie jetzt zu Bereich für schwaches Licht und Foto aufnehmen. Wenn das Gerät dies unterstützt, sollten Sie ein automatisches Blitzlicht erhalten.


9

Android Lollipop führte die camera2- API ein und veraltete die vorherige Kamera-API. Die Verwendung der veralteten API zum Einschalten des Flashs funktioniert jedoch weiterhin und ist viel einfacher als die Verwendung der neuen API.

Es scheint, dass die neue API für die Verwendung in dedizierten Kamera-Apps mit vollem Funktionsumfang vorgesehen ist und dass die Architekten einfachere Anwendungsfälle wie das Einschalten der Taschenlampe nicht wirklich in Betracht gezogen haben. Dazu muss man sich jetzt einen CameraManager besorgen, eine CaptureSession mit einer Dummy-Oberfläche erstellen und schließlich eine CaptureRequest erstellen und starten. Ausnahmebehandlung, Ressourcenbereinigung und lange Rückrufe inklusive!

Schauen Sie sich den FlashlightController im AOSP-Projekt an, um zu sehen, wie Sie die Taschenlampe auf Lollipop und neueren Versionen einschalten können (versuchen Sie, die neuesten APIs für ältere Anwendungen zu finden, die geändert wurden). Vergessen Sie nicht, die erforderlichen Berechtigungen festzulegen.


Android Marshmallow hat endlich eine einfache Möglichkeit eingeführt, den Blitz mit setTorchMode einzuschalten .


1
Die alte android.hardware.Camera-API funktioniert weiterhin genau wie zuvor. Es gibt also keinen grundsätzlichen Grund, warum Sie android.hardware.camera2 für Taschenlampen verwenden müssen. Es ist jedoch möglich, dass Sie mit camera2 den Stromverbrauch und die CPU-Auslastung reduzieren können, da Sie keine aktive Vorschau benötigen, um die Taschenlampe zu aktivieren.
Eddy Talvala

Ich habe eine der einfacheren Implementierungen auf zwei Lollipop-Geräten ausprobiert und sie hat den Flash nicht eingeschaltet, obwohl sie auf allen mehreren Pre-Lollipop-Geräten funktioniert hat, auf denen ich sie ausprobiert habe. Vielleicht ist das nur ein Fehler in Lollipop. Wenn die alten Methoden immer noch für Sie funktionieren und Sie kein Java-Purist sind, verwenden Sie die alte API weiter, da sie viel einfacher ist :)
LukaCiko

Ich habe derzeit ein Nexus 5 mit Lollipop und es funktioniert perfekt. Ich besitze auch eine selbst erstellte Anwendung, die mit diesen Methoden implementiert wird. Für den Fall, dass jemand es versuchen möchte. Ich habe einen Link zum Play Store eingefügt : play.google.com/store/apps/details?id=com.fadad.linterna Wichtig ist vor allem, dass die Kamera aktiv ist oder deaktiviert wird, bevor der Blitz und die Berechtigungen ausgeführt werden.
Ferdiado

Entschuldigung, mein Fehler. Eine andere App verwendete wahrscheinlich die Kamera, als ich versuchte, den Blitz mit der alten API einzuschalten. Ich habe die Antwort aktualisiert.
LukaCiko

7

Vollständiger Code für Android Flashlight App

Manifest

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

  }

Wenn der Blitz bereits eingeschaltet ist, bevor Sie mit Ihrem Beispiel beginnen, funktioniert der Versuch, den Blitz auszuschalten, nicht. Haben Sie eine Lösung für dieses Problem?
Taifun

7

Es gibt verschiedene Möglichkeiten, auf Camera Flash in verschiedenen Android-Versionen zuzugreifen. Nur wenige APIs funktionierten in Lollipop nicht mehr und wurden dann in Marshmallow erneut geändert. Um dies zu überwinden, habe ich eine einfache Bibliothek erstellt, die ich in einigen meiner Projekte verwendet habe und die gute Ergebnisse liefert. Es ist immer noch unvollständig, aber Sie können versuchen, den Code zu überprüfen und die fehlenden Teile zu finden. Hier ist der Link - NoobCameraFlash .

Wenn Sie nur in Ihren Code integrieren möchten, können Sie dafür gradle verwenden. Hier ist die Anleitung (direkt aus der Readme-Datei entnommen) -

Schritt 1. Fügen Sie das JitPack-Repository zu Ihrer Build-Datei hinzu. Fügen Sie es am Ende der Repositorys zu Ihrem root build.gradle hinzu:

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

Schritt 2. Fügen Sie die Abhängigkeit hinzu

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

Verwendung

Initialisieren Sie den NoobCameraManagerSingleton.

NoobCameraManager.getInstance().init(this);

Sie können optional die Protokollebene für die Debug-Protokollierung festlegen. Die Protokollierung verwendet die LumberJack- Bibliothek. Die Standard-LogLevel istLogLevel.None

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

Danach müssen Sie nur noch den Singleton anrufen, um den Kamerablitz ein- oder auszuschalten.

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

Sie müssen sich um die Laufzeitberechtigungen kümmern, um selbst auf die Kamera zugreifen zu können, bevor Sie den NoobCameraManager initialisieren. In Version 0.1.2 oder früher haben wir früher Berechtigungen direkt aus der Bibliothek unterstützt, aber aufgrund der Abhängigkeit vom Activity-Objekt müssen wir sie entfernen.

Es ist auch einfach, Flash umzuschalten

if(NoobCameraManager.getInstance().isFlashOn()){
    NoobCameraManager.getInstance().turnOffFlash();
}else{
    NoobCameraManager.getInstance().turnOnFlash();
}

Bitte fügen Sie Unterstützung für die Verwendung von Kontext anstelle von Aktivität hinzu. Vielen Dank!
Vajira Lasantha

@VajiraLasantha Das Activity-Objekt ist erforderlich, um die Berechtigung zu erhalten. Ich hatte vor, die Anforderung vollständig zu entfernen, indem ich die Berechtigungen irgendwie trennte. Es wurde hier verfolgt - github.com/Abhi347/NoobCameraFlash/issues/3 In der Zwischenzeit können Sie den Code ändern, um die Anforderung zu entfernen, wenn Sie möchten. Ich brauche vielleicht etwas Zeit, um daran zu arbeiten.
Noob

Ja, das habe ich gesehen. Ich habe Ihre Bibliothek bereits geändert, um mit Context zu arbeiten, indem ich Berechtigungsmaterial entfernt habe. Weil meine App bereits Berechtigungsüberprüfungen durchführt. Bitte lassen Sie mich wissen, wann Sie eine ordnungsgemäße Implementierung veröffentlicht haben, die Context unterstützt. Vielen Dank!
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

Was ist, wenn das Gerät mehrere Blitze aufweist? Einige haben auf der Vorderseite Kamera ...
Android-Entwickler

0

Ich habe diese Funktion in meiner Anwendung durch Fragmente mit SurfaceView implementiert. Den Link zu dieser Stackoverflow-Frage und deren Antwort finden Sie hier

Hoffe das hilft :)


0

In Marshmallow und höher scheint CameraManagers "setTorchMode ()" die Antwort zu sein. Das funktioniert bei mir:

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

0

Versuche dies.

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

-3

Sie können auch den folgenden Code verwenden, um den Blitz auszuschalten.

Camera.Parameters params = mCamera.getParameters()
p.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.