Używam AVCaptureDevice.setTorchModeOn(level)
metody, aby włączyć latarkę przy zmiennej jasności.
Na moim starym iPhone SE to działa poprawnie - można wyraźnie zobaczyć 4 różne poziomy jasności jak zmienić level
od 0
celu 1
.
Ale w iPhonie 11 Pro latarka włącza się tylko wtedy, gdy poziom jest ustawiony 1.0
! Jego jasność jest daleka od maksymalnego poziomu (w porównaniu do latarki z Control Center).
Próbowałem użyć maxAvailableTorchLevel
stałej, ale wyniki są takie same jak przy użyciu 1.0
.
Próbowałem też wartości więcej niż 1.0
- powoduje to wyjątek (zgodnie z oczekiwaniami).
Czy ktoś też miał ten problem? Może są jakieś obejścia?
ios
iphone
flashlight
avcapturedevice
avcapture
Pavel Alexeev
źródło
źródło
Odpowiedzi:
Pamiętałem, że w czasach iOS 3.x nie mieliśmy prostego API LED. Musieliśmy rozpocząć pełną sesję przechwytywania wideo. Okazuje się, że w przypadku iPhone'a 11 wydaje się to jedynym rozwiązaniem. Chciałbym usłyszeć o innych, którzy tego nie wymagają.
To jest moje przetestowane obejście. Używam tutaj Celu C, nie Szybkiego, ponieważ tego właśnie używałem w tej starej aplikacji z 2009 roku! Możesz łatwo znaleźć kod Swift, aby rozpocząć przechwytywanie wideo (i zignorować wyjście, powinno działać tak samo.
A potem po prostu uruchom LED jak zwykle:
To uzyskuje maksymalną jasność na moim iPhonie 11 Pro. Teraz szukam tego samego rozwiązania bez konieczności korzystania z przechwytywania wideo (który oczywiście wykorzystuje baterię ORAZ wymaga pozwolenia, którego użytkownicy mogą nie lubić. Należy to dobrze wyjaśnić).
źródło
Zgodnie z dokumentacją dla maxAvailableTorchLevel
Jeśli ta stała zawsze reprezentuje maksymalny dostępny poziom pochodni, nie tylko wyodrębniamy, że różne urządzenia mają różne maksymalne dostępne poziomy, ale także, że wspomniane urządzenie nie może przekroczyć 1,0.
Najlepsze, co możesz teraz zrobić, to skontaktować się ze wsparciem programisty Apple .
źródło