pod zadanie 3.
zlecenie wykonania (i następnie wyświetlenie otrzymanego) zdjęcia aparatem fotograficznym
UWAGA: w ramach tego ćwiczenia można się ograniczyć do pobrania i wyświetlenia zdjęcia o małej rozdzielczości (Get the thumbnail). Uzyskanie zdjęcia o dużej rozdzielczości wymaga dodatkowo uzyskania uprawnień (permission) oraz przygotowania pliku zdjęcia.
Zadaniem do wykonania jest napisanie aplikacji demonstrującej możliwości wykorzystywania "Intencji" do uruchamiania innych Aktywności (wbudowanych w system telefonu, lub z innych zainstalowanych aplikacji, lub będących częścią tej samej aplikacji) za pomocą poleceń:
startActivity(…) oraz startActivityForResult(…) Wykonana aplikacja powinna demonstrować wykorzystanie wybranych 3 istniejących aktywności (build-in):
wyświetlenie okna ustawień systemowych dla wyświetlacza ( ACTION_DISPLAY_SETTINGS )
wyświetlenie wskazanego miejsca na mapie geograficznej (Google Map) (ACTION_VIEW + schemat "geo" )
zlecenie wykonania (i następnie wyświetlenie otrzymanego) zdjęcia aparatem fotograficznymUWAGA: w ramach tego ćwiczenia można się ograniczyć do pobrania i wyświetlenia zdjęcia o małej rozdzielczości (Get the thumbnail). Uzyskanie zdjęcia o dużej rozdzielczości wymaga dodatkowo uzyskania uprawnień (permission) oraz przygotowania pliku zdjęcia. Przykład:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 111) {
// BitMap is data structure of image file which store the image in memory
val photo = data?.extras?.get("data") as Bitmap
// Set the image in imageview for display
myImage.setImageBitmap(photo)
}
}
**OPCJONALNE_ROZSZERZENIE:**Dodanie dodatkowego projektu layoutu XML dla poziomej orientacji ekranu.Np. w wersji "portrait" wszystkie pola edycyjne, przyciski i zdjęcia są umieszczone wertykalnie jedno pod drugim, a w wersji "landscape" interfejs mógłby się składać z dwóch kolumn (podgląd zdjęcia po lewej, a przyciski po prawej).
UWAGA:
Poczynając od wersji Android 11 wprowadzono zmiany w "package visibility":
Aby chronić prywatność użytkowników, wykorzystanie funkcji: resolveActivity(...) lub resolveActivityInfo(...), wymaga teraz dodawania dodatkowych deklaracji <queries> w pliku manifestu aplikacji.
Alternatywnym rozwiązaniem jest pominięcie sprawdzania (czy istnieje chociaż jedna aplikacja obsługująca wykonywany Intent) a zamiast tego obudowanie instrukcji StartActivity tradycyjną konstrukcją try-catch.