2015-02-22 9 views
6
Camera cam = Camera.open();  
Parameters p = cam.getParameters(); 
p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
cam.setParameters(p); 
cam.startPreview(); 

Die obige Dosis funktioniert nicht auf Lollipop, da Kamera in Lollipop veraltet ist. Ich kann keine andere Möglichkeit finden, flash programmgesteuert in Lollipop zu aktivieren. Wie kann ich das erreichen? Danke im Voraus.So aktivieren Sie FlashLight in Lollipop programmgesteuert Android

Antwort

4
mCam = Camera.open(); 
Camera.Parameters p = mCam.getParameters(); 
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
mCam.setParameters(p); 
mPreviewTexture = new SurfaceTexture(0); 
try { 
    mCam.setPreviewTexture(mPreviewTexture); 
} catch (IOException ex) { 
    // Ignore 
} 
mCam.startPreview(); 

Es funktioniert für mich auf Android 5.0.x. Und vergessen Sie nicht, im Manifest eine Berechtigung für die Verwendung der Kamera hinzuzufügen.

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

danke. hat für mich gearbeitet :) –

+3

Kamera-Klasse ist jetzt veraltet. Wissen Sie irgendeine Alternative, um dasselbe zu tun? –

+2

Veraltet, wenn SDK> 21 – Yehonatan

1

Ihr Code sollte tatsächlich funktionieren. Bitte überprüfen Sie, ob Sie die Erlaubnis für die Verwendung der Kamera richtig hinzugefügt:

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

dies zu Ihrer AndroidManifest über Ihre andere Spezifikationen hinzugefügt werden soll.

Zusätzlich gibt es eine interessante Diskussion über verschiedene Geräte und ein Beispiel, das hier auf jedem Gerät funktionieren sollte: Flashlight in Android

Wenn Sie nicht wollen, die veraltete API verwenden, können Sie Check-out:

Package Summary of Camera2

Camera device specification on the new api

Leider kann ich Ihnen nicht ein Beispiel geben, die neue API für die Verwendung, weil ich es nicht selbst hätte verwenden noch.

4

Kameraklasse ist jetzt veraltet.

Lollipop über Sie camera2 Api verwenden

so nickkadrov Lösung doesent Arbeit für 6,0 & oben Gerät, beste Weg, um Ein/Aus Blitzlicht benötigen, ist Code unten versuchen

public static void toggleFlashLight(){ 
    toggle=!toggle; 
       try { 
      CameraManager cameraManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       for (String id : cameraManager.getCameraIdList()) { 

        // Turn on the flash if camera has one 
        if (cameraManager.getCameraCharacteristics(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) { 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
          cameraManager.setTorchMode(id, true); 
         } 
        } 
       } 
      } 
     } catch (Exception e2) { 
      Toast.makeText(getApplicationContext(), "Torch Failed: " + e2.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 


} 

wobei toggle auf Klassenebene statisch ist Boolesche Variable, deren Standardwert falsch ist

static boolean toggle=false; 
+1

Ist die Berechtigung wirklich erforderlich? Auf meinem Gerät funktioniert es auch ohne. –

+1

Ihr Code erfordert API23, die eigentlich Android 6.0 ist. – Roman

Verwandte Themen