Czy istnieje standardowy sposób wywoływania okna dialogowego, w którym można wybrać obraz z kamery lub z galerii (np. W książce telefonicznej lub Skype)?
Rzuciłem okiem na to, ale kod otwiera galerię bez sugerowania wybrania go z aparatu.
Urządzenie: Samsung Galaxy Tab
Android: 2.3.3
Odpowiedzi:
Poniższy kod można wykorzystać do zrobienia zdjęcia i wybrania zdjęcia. Po prostu pokaż okno dialogowe z dwiema opcjami i po dokonaniu wyboru użyj odpowiedniego kodu.
Aby zrobić zdjęcie z aparatu:
Aby wybrać zdjęcie z galerii:
onActivityResult
kod:Na koniec dodaj to uprawnienie w pliku manifestu:
źródło
Intent
jako rezerwy powoduje zgłoszenie SecurityException. Więcej informacji: plus.google.com/+AndroidDevelopers/posts/e9kyM7VXajzPołączyłem niektóre rozwiązania, aby w pełni wykorzystać do wybierania obrazu z Galerii lub Aparatu. Oto cechy narzędzia ImagePicker (również w bibliotece Github ):
Zrzut ekranu:
Edycja : Oto fragment kodu, aby uzyskać połączone intencje dla aplikacji Galeria i Aparat. Możesz zobaczyć pełny kod w materiale użytkowym ImagePicker (również w bibliotece Github ):
źródło
boolean isCamera = (imageReturnedIntent == null || imageReturnedIntent.getData() == null);
getTempFile
i jak korzystać z tej funkcji? zaktualizuj odpowiedźFileProvider
dla API> = 23 iUri
za mniej.Ta biblioteka ułatwia to.
Zadzwoń:
Następnie spraw, aby Twoje działanie zaimplementowało IPickResult i zastąp tę poniższą metodę.
źródło
Możesz zaimplementować ten kod, aby wybrać obraz z galerii lub aparatu: -
Teraz w przypadku kliknięcia przycisku możesz wywołać swoją metodę wyboru obrazu. To jest wewnętrzna aktywność onCreate.
Poza twoją aktywnością.
Atlast, na koniec dodaj kamerę i zapisz uprawnienia do zewnętrznej pamięci masowej do AndroidManifest.xml
U mnie to działa, mam nadzieję, że zadziała również u ciebie.
źródło
Myślę, że to od ciebie zależy, czy pokażesz to okno dialogowe do wyboru. W przypadku Galerii użyjesz tego kodu, a dla Aparatu spróbuj tego .
źródło
Jeśli chcesz pobrać obraz z galerii lub przechwycić obraz i ustawić go na widok obrazu w trybie portretowym, pomoże Ci poniższy kod.
W onCreate ()
Mam nadzieję, że to ci pomoże .... !!!
Jeśli wartość targetSdkVersion jest wyższa niż 24, do udzielenia dostępu używany jest FileProvider.
Utwórz plik xml (ścieżka: res \ xml) provider_paths.xml
Dodaj dostawcę w AndroidManifest.xml
i wymień
Do
źródło