Cóż, jak mogę sprawdzić, czy urządzenie z Androidem ma funkcje api Camera2, czy nie? Jest wiele nowych funkcji w api camera2, takich jak sterowanie ręczne. Jak więc sprawdzić programowo, jakie funkcje Api Camera2 są zaimplementowane?Android: Jak mogę sprawdzić, czy urządzenie ma funkcje Api Camera2 zaimplementowane czy nie?
Odpowiedz
W rzeczywistości sprawdzanie wersji API 21+ będzie działało. Interfejs API kamery2, w tym CameraManager
, jest częścią systemu, niezaleŜnie od obecnego sprzętu. Zawsze możesz więc poprosić o numer CameraManager
listę CameraDevice
s, którą możesz następnie przesłać pojedynczo.
Jednak myślę, że masz na myśli "jak mogę stwierdzić, czy mogę ręcznie ustawić parametry fotograficzne za pomocą interfejsu API aparatu?", Które jest w zależności od posiadanego urządzenia numerem . To zależy od tego, jakiej kontroli potrzebujesz, ale informacje, których potrzebujesz, można zebrać, uzyskując REQUEST_AVAILABLE_CAPABILITIES
metadata field. Podpowiedź: poszukaj MANUAL_SENSOR
.
Chodziło mi o to, aby sprawdzić, czy urządzenie Lollipop obsługuje Api Camera2, czy nie, ponieważ istnieją urządzenia Lollipop bez api Camera2. Zatem wywoływanie "CameraManager" na takim urządzeniu z api Camera2 nie zaimplementowane może spowodować awarie. Nie mówię o obsłudze sprzętu, chodzi o to, czy urządzenie ma api Camera2, czy też nie. Myślę, że moje pytanie przekierowuje cię do części sprzętowej, więc edytuję ją. Przepraszam za błąd. – Vivek
W takim przypadku pierwsze zdanie z mojej odpowiedzi jest wszystkim, czego powinieneś potrzebować. – rcsumner
Ale czy CameraManager jest częścią apikacji Camera2?Więc jak mogę go użyć na urządzeniu, które nie ma zaimplementowanego API? – Vivek
Rzeczywiście, api camera2 jest obsługiwane tylko z poziomu interfejsu API 21. Ale tylko ta kontrola nie wystarczy. Istnieją urządzenia z poziomem interfejsu API 21, ale obsługują one kamerę 2 tylko częściowo. Aby to sprawdzić, sprawdź wartość CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL. Może być FULL, LEGACY lub LIMITED. Sprawdź tutaj szczegóły: https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html
Oto jak je zdobyć:
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
for (String cameraId : manager.getCameraIdList()) {
CameraCharacteristics characteristics
= manager.getCameraCharacteristics(cameraId);
Log.d("Img", "INFO_SUPPORTED_HARDWARE_LEVEL " + characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
}
Używając powyższego kodu, otrzymujemy pewną wartość liczbową. W związku z tym wartości liczbowe dla LEGACY, LIMITED, FULL i LEVEL_3 wynoszą odpowiednio 2, 0, 1 i 3. –
Instalowanie aplikacji: Instrukcja Zgodność aparatu. Sprawdza ostrość ręczną, balans bieli, czułość ISO, szybkość migawki i obsługę RAW. Wszystkie odsłonięte za pośrednictwem sterownika kamery HAL camera2. Zainstalowałem powyższe w sklepie AT & T, aby sprawdzić telefony przed zakupem. Świetny sposób, aby dowiedzieć się, czy kupujesz wczorajszy model.
https://play.google.com/store/apps/details?id=pl.vipek.camera2_compatibility_test&hl=en
Ta aplikacja nie wydaje się naprawdę sprawdzać każdej wyświetlanej dostępności funkcji. Na moim S5 Neo nie pokazuje on żadnej ręcznej kontroli, ale jestem w stanie ustawić stałą ostrość i balans bieli za pomocą api camera2. – TobiasWeis
Istnieje wiele innych recenzji narzekających na ten sam problem z tą aplikacją. Wydaje się niegodny zaufania. – Scampbell
W przypadkach, jeśli ktoś potrzebuje pełnej fragment jak sprawdzić, która kamera w urządzeniu ma Camera2 wsparcie API (przynajmniej ograniczone wsparcie):
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean allowCamera2Support(int cameraId) {
CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
try {
String cameraIdS = manager.getCameraIdList()[cameraId];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraIdS);
int support = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)
Log.d(TAG, "Camera " + cameraId + " has LEGACY Camera2 support");
else if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED)
Log.d(TAG, "Camera " + cameraId + " has LIMITED Camera2 support");
else if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
Log.d(TAG, "Camera " + cameraId + " has FULL Camera2 support");
else
Log.d(TAG, "Camera " + cameraId + " has unknown Camera2 support?!");
return support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED || support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL;
}
catch (CameraAccessException e) {
e.printStackTrace();
}
return false;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void checkCamera2Support() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int numberOfCameras = 0;
CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
try {
numberOfCameras = manager.getCameraIdList().length;
} catch (CameraAccessException e) {
e.printStackTrace();
} catch(AssertionError e) {
e.printStackTrace();
}
if(numberOfCameras == 0) {
Log.d(TAG, "0 cameras");
}else {
for (int i = 0; i < numberOfCameras; i++) {
if (!allowCamera2Support(i)) {
Log.d(TAG, "camera " + i + " doesn't have limited or full support for Camera2 API");
}else{
// here you can get ids of cameras that have limited or full support for Camera2 API
}
}
}
}
}
Musiałem także to dla innego projektu , więc napisałem małą aplikację, która bada wszystkie funkcje kamery2 i pokazuje, które z nich są dostępne na telefonie: https://play.google.com/store/apps/details?id=de.weis.camera2probe
Możesz wysłać ten raport pocztą e-mail z poziomu aplikacji. Wyświetlam wszystkie raporty, które tu otrzymałem: https://github.com/TobiasWeis/android-camera2probe/wiki (Kod aplikacji jest tam również dostępny, na wypadek gdyby ktoś musiał zintegrować się z własnym projektem).
Zainstaluj aplikację A Better Camera. Będziesz mógł sprawdzić, czy jest to kibic, który jest pełny, starszy, ograniczony lub mot. Tak właśnie znalazłem Samsung Galaxy Tab 3 SMT820 iscamera2 api full.
- 1. Jak mogę sprawdzić, czy urządzenie IOS ma funkcje telefoniczne?
- 2. Jak mogę sprawdzić, czy okno ma fokus? (Win32 API)
- 3. Czy urządzenie ma "oddzwanianie"?
- 4. Jak mogę sprawdzić, czy urządzenie peryferyjne jest podłączone do GPIO?
- 5. Jak sprawdzić, czy urządzenie z Androidem ma twarde klucze?
- 6. iPhone itp: jak sprawdzić, czy urządzenie ma kamerę?
- 7. Android - Jak sprawdzić, czy urządzenie obsługuje tylko Wi-Fi?
- 8. Jak sprawdzić, czy urządzenie jest Ipad mini
- 9. Android Camera2 Rozmiary wyjściowe
- 10. Jak sprawdzić, czy SQLDataReader nie ma wierszy
- 11. Jak sprawdzić, czy urządzenie iOS jest podłączone?
- 12. Jak mogę sprawdzić, czy wszystkie moje funkcje init zostały wywołane?
- 13. Jak możemy sprawdzić, czy tabela ma indeks, czy nie?
- 14. Jak sprawdzić, czy EditText w Androidzie ma emotikon, czy nie?
- 15. Jak bezpiecznie sprawdzić, czy obiekt dynamiczny ma pole, czy nie?
- 16. Ustal, czy urządzenie ma ekran dotykowy czy nie.
- 17. Jak sprawdzić, czy iPhone ma podwójny aparat?
- 18. iOS8 sprawdź, czy urządzenie ma Touch ID
- 19. Interfejs API Instagram: czy mogę sprawdzić, czy użytkownik jest zweryfikowany?
- 20. jak sprawdzić, czy div ma id, czy nie?
- 21. Jak mogę sprawdzić, czy mój identyfikator elementu ma fokus?
- 22. Jak mogę sprawdzić, czy łańcuch ma w Pythonie wartość liczbową?
- 23. Jak mogę sprawdzić, czy liczba całkowita Java ma wartość NULL?
- 24. getUserMedia - jak wykryć, czy urządzenie rzeczywiście ma kamerę
- 25. Jak mogę sprawdzić, czy podwójne ma część ułamkową?
- 26. Jak sprawdzić, czy obiekt ma funkcję? (Dojo)
- 27. Szyny: Jak sprawdzić, czy kolumna ma wartość?
- 28. Jak sprawdzić, czy selektor ma qtip?
- 29. Jak sprawdzić, czy dane urządzenie USB jest podłączone?
- 30. Jak sprawdzić, czy urządzenie z Androidem znajduje się w pobliżu adresu google maps api
Czy próbowałeś 'code'mManager = (CameraManager) getSystemService (Context.CAMERA_SERVICE); mCameraIds = mManager.getCameraIdList(); 'kod'? – thuongle