2013-01-10 18 views
6

Potrzebuję pomocy z klasą MediaRecorder na Androida.Android getSupportedVideoSizes zawsze zwraca wartość null

Próbuję użyć getSupportedVideoSizes, aby uzyskać listę obsługiwanych rozmiarów wideo, ale zawsze zwraca ona wartość null.

W testach, następujące urządzenia powrotu null gdy getSupportedVideoSizes są odpytywane:

  • Galaxy Nexus (Android 4.2)
  • HTC Jeden mini (Mobile 4.4.2)
  • HTCEVOV4G (Android 4.0.3)
+0

Oto kilka dyskusji na temat http://stackoverflow.com/questions/5934829/how-to-get-supported-video-camera-resolutions-in-android. – harism

+0

Cześć dziękuję za pomoc, ale niestety widziałem ten post. Ale w jaki sposób mogę ustawić osobny podgląd i wyjście wideo? to jest to, czego nie rozumiem ... ponieważ wszyscy używają tej funkcji getSupportedVideoSizes, ale dla mnie ciągle powraca null ... – cataHHH

+0

Czy widziałeś ostatni komentarz pozostawiony przez YShinkareva? Tam wspomniano, że w niektórych przypadkach '' getSupportedVideoSizes'' zwraca null według projektu. – harism

Odpowiedz

33

The documentation for Camera.getSupportedVideoSizes() który czyta,

Powoduje wyświetlenie
listy obiektów Rozmiar, jeśli kamera ma osobne podglądy i wyjście wideo; w przeciwnym razie zwracana jest wartość null.

nie jest do końca jasne. Oznacza to jednak, że jeśli Camera.getSupportedVideoSizes() zwróci wartość NULL, obsługiwane rozmiary obsługiwanego aparatu i rozmiary wideo są takie same; w takim przypadku, aby uzyskać listę obsługiwanych rozmiarów wideo, użyj Camera.getSupportedPreviewSizes().

Przykładowy kod:

public List<Size> getSupportedVideoSizes(Camera camera) { 
    if (camera.getParameters().getSupportedVideoSizes() != null) { 
     return camera.getParameters().getSupportedVideoSizes(); 
    } else { 
     // Video sizes may be null, which indicates that all the supported 
     // preview sizes are supported for video recording. 
     return camera.getParameters().getSupportedPreviewSizes(); 
    } 
} 
+4

Opis w dokumentacji Androida jest wręcz niedorzeczny! –

+0

Dobra odpowiedź i wyjaśnienie ... To jest mały haczyk, który łatwo przeoczyć, szczególnie gdy twoje urządzenia programistyczne zwracają listę dla getSupportedVideoSizes(). Okazuje się, że Samsung i inni zwracają wartość null, więc moja aplikacja musiała jedynie odgadnąć rozmiar obrazu, który był używany, co spowodowało ustawienia, które nie były obsługiwane na wszystkich urządzeniach. Działa teraz solidnie podczas używania getSupportedPreviewSizes() do obsługi przypadków pustych. – Wookie

+0

Ridiculous dokumentacji wymaga tego rodzaju niesamowite kopanie. Dziękuję +1;) –

0

Albo po prostu użyć

mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 

ustawić najlepszą rozdzielczość automatycznie.

Powiązane problemy