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?
quelle
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?
Für dieses Problem sollten Sie:
Überprüfen Sie, ob die Taschenlampe verfügbar ist oder nicht?
Wenn ja, dann aus- / einschalten
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_TORCH
oder 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
Nach meiner Erfahrung müssen Sie die Variable
cam
als statisch deklarieren, wenn Ihre Anwendung sowohl im Hoch- als auch im Querformat arbeiten soll. AndernfallsonDestroy()
wird es beim Umschalten der Ausrichtung zerstört, die Kamera wird jedoch nicht freigegeben, sodass es nicht möglich ist, sie erneut zu öffnen.Um mich zu manifestieren, musste ich diese Linie setzen
von http://developer.android.com/reference/android/hardware/Camera.html
Die oben vorgeschlagenen Zeilen funktionierten bei mir nicht.
quelle
you need to declare the variable cam as static
Camera
KlasseAndroidStudio
darauf,android.hardware
Klasse zu sein ...In API 23 oder höher (Android M, 6.0)
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:
quelle
Ich habe AutoFlash Licht mit unten einfachen drei Schritten.
Gehen Sie in Ihrem Kameracode so vor.
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.
quelle
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 .
quelle
Vollständiger Code für Android Flashlight App
Manifest
XML
MainActivity.java
quelle
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:
Schritt 2. Fügen Sie die Abhängigkeit hinzu
Verwendung
Initialisieren Sie den
NoobCameraManager
Singleton.Sie können optional die Protokollebene für die Debug-Protokollierung festlegen. Die Protokollierung verwendet die LumberJack- Bibliothek. Die Standard-LogLevel ist
LogLevel.None
Danach müssen Sie nur noch den Singleton anrufen, um den Kamerablitz ein- oder auszuschalten.
Es ist auch einfach, Flash umzuschalten
quelle
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.
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 :)
quelle
In Marshmallow und höher scheint CameraManagers "setTorchMode ()" die Antwort zu sein. Das funktioniert bei mir:
quelle
Versuche dies.
quelle
Sie können auch den folgenden Code verwenden, um den Blitz auszuschalten.
quelle