Uwagi dotyczące projektowania aplikacji na urządzenia przenośne

Sposób działania i cechy fizyczne urządzeń przenośnych wymagają dokładnego tworzenia kodu oraz projektowania. Na przykład niezwykle istotne jest optymalizowanie kodu, aby był on wykonywany jak najszybciej. Optymalizacja kodu ma oczywiście swoje granice — inteligentnie opracowany projekt działający w ramach ograniczeń narzucanych przez dane urządzenie może również pomóc w uniknięciu zbytniego obciążenia systemu realizującego renderowanie.

Kod

O ile przyspieszenie działania kodu jest zawsze korzystne, o tyle niższa szybkość procesora na większości urządzeń przenośnych oznacza, że korzyści wynikające z poświęcenia czasu na napisanie optymalnego kodu są znaczące. Ponadto urządzenia przenośne działają prawie zawsze przy zasilaniu akumulatorowym. Osiągnięcie tego samego wyniku mniejszym nakładem pracy oznacza mniejsze zużycie baterii.

Projekt

Podczas projektowania sposobu działania aplikacji należy wziąć pod uwagę takie czynniki jak niewielki rozmiar ekranu, tryb współpracy z ekranem dotykowym, czy stale zmieniające się środowisko użytkownika urządzenia przenośnego.

Połączenie kodu i projektu

Jeśli w aplikacji są używane animacje, bardzo ważna jest optymalizacja renderowania. Jednak optymalizacja samego kodu często nie wystarcza. Należy zaprojektować wizualne aspekty aplikacji tak, aby mogły one być skutecznie renderowane przy użyciu kodu.

Ważne techniki optymalizacji zostały omówione w przewodniku Optymalizowanie materiałów dla platformy Flash . Techniki omówione w tym przewodniku odnoszą się do wszystkich materiałów Flash i AIR, ale są kluczowe podczas opracowywania aplikacji działających dobrze na urządzeniach przenośnych.

Cykl życia aplikacji

Gdy aplikacja przestaje być aktywna (przekazuje punkt skupienia do innej aplikacji), środowisko AIR obniża szybkość odtwarzania do 4 klatek na sekundę i zatrzymuje renderowanie grafiki. Poniżej tej szybkości odtwarzania łatwo dochodzi do przerywania przesyłania strumieniowego za pośrednictwem połączeń sieciowych i gniazd. Jeśli aplikacja nie korzysta z takich połączeń, można jeszcze bardziej obniżyć szybkość odtwarzania.

W stosownych przypadkach należy zatrzymać odtwarzanie dźwięku oraz usunąć detektory czujników przyspieszeniomierza i lokalizacji geograficznej. Obiekt NativeApplication środowiska AIR wywołuje zdarzenia aktywacji i dezaktywacji. Za pomocą tych zdarzeń można kontrolować przechodzenie między stanem aktywnym i stanem działania w tle.

Większość systemów operacyjnych urządzeń przenośnych bez ostrzeżenia kończy działanie aplikacji działających w tle. Dzięki częstemu zapisywaniu stanu aplikacji aplikacja powinna być w stanie prawidłowo przywracać swój stan zarówno podczas powracania do stanu aktywnego po działaniu w tle, jak i w przypadku ponownego uruchamiania.

Gęstość informacji

Fizyczna wielkość ekranu urządzeń przenośnych jest dużo mniejsza niż w przypadku komputerów stacjonarnych, ale gęstość pikseli na ich ekranach (ilość pikseli na cal) jest wyższa. Ten sam rozmiar czcionki zaowocuje fizycznie mniejszymi literami na ekranie urządzenia przenośnego niż na komputerze stacjonarnym. W celu zapewnienia czytelności należy używać większej czcionki. Najmniejsza czcionka, która jest dobrze czytelna, ma zazwyczaj rozmiar 14 punktów.

Urządzenia przenośne są często używane w ruchu, a także przy nieodpowiednim oświetleniu. Należy więc zastanowić się, jak wiele informacji można wyświetlić w sposób czytelny na ekranie takiego urządzenia. Może być to mniej niż w przypadku monitora komputera stacjonarnego o tych samych wymiarach w pikselach.

Należy również wziąć pod uwagę to, że gdy użytkownik dotyka ekranu, palec i ręka zasłaniają część wyświetlacza. Gdy użytkownik ma korzystać z elementów interaktywnych dłużej niż przez czas krótkiego dotknięcia, należy umieszczać je po bokach i u dołu ekranu.

Wprowadzanie tekstu

Na wielu urządzeniach tekst jest wprowadzany za pomocą klawiatury wirtualnej. Klawiatury wirtualne zasłaniają część ekranu i często są kłopotliwe w użytkowaniu. Należy unikać polegania na zdarzeniach klawiatury (poza przyciskami programowymi).

Należy rozważyć zastosowanie opcji alternatywnych w stosunku do używania pól tekstu wejściowego. Na przykład do wprowadzenia wartości numerycznej nie jest potrzebne pole tekstowe. Ten sam efekt można osiągnąć za pomocą dwu przycisków, jednego do zwiększania, zaś drugiego do zmniejszania wartości.

Przyciski programowe

Urządzenia przenośne oferują różną liczbę przycisków programowych. Przyciski programowe to przyciski, dla których można zaprogramować różne funkcje. W aplikacji należy przestrzegać konwencji platformy dla tych przycisków.

Zmiany orientacji ekranu

Zawartość wyświetlaną na urządzeniach przenośnych można oglądać w orientacji pionowej lub poziomej. Należy więc rozważyć sposób obsługi zmian orientacji ekranu przez tworzoną aplikację. Więcej informacji zawiera artykuł Orientacja stołu montażowego .

Przyciemnianie ekranu

Środowisko AIR nie zapobiega automatycznie przyciemnianiu ekranu podczas odtwarzania wideo. Do kontrolowania przechodzenia urządzenia do trybu oszczędzania energii można używać właściwości systemIdleMode obiektu NativeApplication środowiska AIR. (Na niektórych platformach prawidłowe działanie tej funkcji wymaga zażądania odpowiednich uprawnień).

Połączenia przychodzące

Środowisko wykonawcze AIR automatycznie wycisza dźwięki, gdy użytkownik nawiązuje lub odbiera połączenie telefoniczne. Jeśli w systemie Android aplikacja odtwarza dźwięk podczas działania w tle, należy ustawić w deskryptorze aplikacji uprawnienie READ_PHONE_STATE systemu Android. W przeciwnym razie system Android uniemożliwi środowisku wykonawczemu wykrywanie połączeń telefonicznych i automatyczne wyciszanie dźwięków. Zobacz Uprawnienia w systemie Android .

Cele dotknięć i kliknięć

Projektując przyciski oraz inne elementy interfejsu użytkownika przeznaczone do stukania przez użytkownika, należy przemyśleć ich rozmiar. Elementy te powinny być odpowiednio duże, tak aby ich aktywacja możliwa była w wygodny sposób za pomocą palca na ekranie dotykowym. Należy również upewnić się, że między miejscami docelowymi jest odpowiednia ilość miejsca. W przypadku typowego ekranu telefonu o dużej rozdzielczości bok obszaru docelowego dotknięcia lub kliknięcia powinien mieć długość od 44 do 57 pikseli.

Rozmiar instalacji pakietu aplikacji

Urządzenia przenośne mają zazwyczaj dużo mniej przestrzeni dyskowej przeznaczonej do instalowania aplikacji i przechowywania danych niż komputery stacjonarne. Rozmiar pakietu należy zminimalizować, usuwając nieużywane zasoby i biblioteki.

W systemie Android pakiet aplikacji nie jest rozpakowywany do oddzielnych plików podczas instalowania aplikacji. Zamiast tego w momencie uzyskiwania dostępu do zasobów są one rozpakowywane do magazynu tymczasowego. Aby zmniejszyć pozostałości wynikające z takiego przechowywania rozpakowywanych zasobów, po całkowitym wczytaniu zasobów należy zamknąć strumienie adresu URL i pliku.

Dostęp do systemu plików

Różne systemy operacyjne dla urządzeń przenośnych nakładają na system plików różne ograniczenia, które zazwyczaj są inne niż ograniczenia nakładane przez komputerowe systemy operacyjne. Odpowiednie miejsce do zapisywania plików i danych może więc różnić się w zależności od platformy.

Jedną z konsekwencji różnic między systemami plików jest to, że skróty do typowych katalogów podawanych przez klasę File środowiska AIR nie zawsze są dostępne. Poniższa tabela pokazuje, których skrótów można używać w systemach Android i iOS:

Android

iOS

File.applicationDirectory

Tylko do odczytu za pomocą adresu URL (nie ścieżki natywnej)

Tylko do odczytu

File.applicationStorageDirectory

Dostępny

Dostępny

File.cacheDirectory

Dostępny

Dostępny

File.desktopDirectory

Katalog główny karty SD

Niedostępny

File.documentsDirectory

Katalog główny karty SD

Dostępny

File.userDirectory

Katalog główny karty SD

Niedostępny

File.createTempDirectory()

Dostępny

Dostępny

File.createTempFile()

Dostępny

Dostępny

Firma Apple opracowała szczegółowe reguły dotyczące umieszczania plików w lokalizacjach magazynu przez aplikacje dla systemu iOS w zależności od sytuacji. Zalecane jest na przykład przechowywanie w katalogu objętym zdalną kopią zapasową tylko tych plików, które zawierają dane wprowadzone przez użytkownika lub z innego powodu są niemożliwe do wygenerowania ani ponownego pobrania. Informacje na temat uzyskiwania zgodności ze wskazówkami firmy Apple dotyczącymi kopii zapasowych i buforowania można znaleźć w rozdziale Sterowanie kopiami zapasowymi i buforowaniem plików .

Elementy interfejsu użytkownika

Firma Adobe opracowała wersję środowiska Flex zoptymalizowaną dla urządzeń przenośnych. Więcej informacji znajduje się w dokumencie Tworzenie aplikacji przenośnych przy użyciu programów Flex i Flash Builder .

Są również dostępne społecznościowe projekty obejmujące składniki przeznaczone dla aplikacji na urządzenia przenośne. Przykłady:

Renderowanie grafiki na stole montażowym z przyspieszaniem 3D

Począwszy od wersji AIR 3.2, środowisko AIR dla urządzeń przenośnych obsługuje renderowanie grafiki na stole montażowym z przyspieszaniem 3D. Interfejsy API Stage3D języka ActionScript to zestaw interfejsów API niskiego poziomu, które korzystają z przyspieszania GPU i oferują zaawansowane funkcje 2D i 3D. Za pomocą tych interfejsów API niskiego poziomu programiści mogą elastycznie korzystać z przyspieszania sprzętowego GPU w celu znacznego zwiększenia wydajności. Można również korzystać z mechanizmów gier, które obsługują interfejsy API Stage3D języka ActionScript.

Więcej informacji można znaleźć na stronie Mechanizmy gier, grafika 3D i stół montażowy 3D .

Wygładzanie wideo

W celu zwiększenia wydajności w środowisku AIR jest wyłączona funkcja wygładzania wideo.

Funkcje natywne

Wiele platform dla urządzeń przenośnych oferuje funkcje, które nie są jeszcze dostępne w standardowym interfejsie API środowiska AIR. Od wersji AIR 3 można rozszerzać środowisko AIR przy użyciu własnych, natywnych bibliotek kodu. Natywne biblioteki rozszerzeń mogą używać funkcji dostępnych z poziomu systemu operacyjnego, a nawet specyficznych dla urządzenia. Rozszerzenia natywne można pisać w języku C dla systemu iOS oraz w językach Java i C dla systemu Android. Informacje na temat programowania rozszerzeń natywnych zawiera rozdział Wprowadzanie rozszerzeń natywnych dla środowiska Adobe AIR .