
Każdy, kto choć trochę interesuje się najnowszymi rozwiązaniami stosowanymi w telefonach komórkowych, z pewnością nieraz spotkał się z systemem operacyjnym Symbian oraz z S60 - najszybciej rozwijającą się platformą działającą na bazie tego środowiska. Dzieło firmy Nokia zdecydowanie opanowuje rynek urządzeń mobilnych, znajdując zastosowanie nie tylko w oferowanych przez nią smartfonach, lecz również produktach noszących znaki przedsiębiorstw takich jak Samsung, Panasonic, Lenovo czy LG Electronics. I nie ma w tym nic dziwnego, bowiem S60 uchodzi za jeden z prostszych, wydajniejszych i bardziej niezawodnych interfejsów użytkownika spośród rozwiązań wykorzystywanych w zaawansowanych komórkach.
Wraz ze wzrostem popularności i możliwości smartfonów rosną też oczekiwania wobec oprogramowania, które można na nich instalować. Temu z kolei towarzyszy coraz większa potrzeba wiedzy niezbędnej do tworzenia ciekawych aplikacji "komórkowych". Umiejętności tego typu uważane są przez wielu programistów niemal za magię, a samo programowanie w systemie Symbian ma opinię niezwykle skomplikowanego.
O tym, że wcale tak być nie musi, przekonasz się dzięki lekturze książki "Symbian S60. Programowanie urządzeń mobilnych". Podręcznik ten bezboleśnie wprowadzi Cię w świat Symbiana, dostarczając praktycznych informacji na temat budowy sprzętu oraz zasad działania systemu operacyjnego i interfejsu użytkownika. Pozwoli też poznać szerokie spektrum zagadnień związanych z programowaniem urządzeń mobilnych, począwszy od wiadomości zupełnie podstawowych, a skończywszy na tematyce zaawansowanej, w tym opisie najważniejszych klas, mechanizmu obsługi wyjątków oraz sposobu kontrolowania wątków i procesów.
- Budowa urządzeń mobilnych i systemu operacyjnego Symbian
- Instalacja i używanie narzędzi niezbędnych programiście
- Architektura GUI i bezpieczeństwo oprogramowania
- Korzystanie z emulatora systemu
- Tworzenie i używanie klas, tablic i obiektów aktywnych
- Korzystanie z wyjątków i deskryptorów
- Zarządzanie procesami i wątkami
- Stosowanie architektury klient-serwer
- Przegląd właściwości i repozytoriów
- Korzystanie z bibliotek DLL i makr
Dołącz do grupy najbardziej poszukiwanych programistów urządzeń mobilnych.
Wstęp (11)Rozdział 1. System operacyjny Symbian (13)
- Budowa urządzenia mobilnego (14)
- Procesor (15)
- Pamięć (17)
- Układ DMA (18)
- Układy audio (18)
- Wyświetlacze LCD (19)
- Systemy plików (19)
- Pliki wykonywalne (21)
- Wybór pakietu SDK (23)
- Przygotowanie warsztatu (24)
- Wymagania sprzętowe (25)
- Wymagane oprogramowanie (25)
- Pakiet SDK (26)
- Struktura katalogów (28)
- Środowisko programistyczne Carbide.c++ (30)
- Wygląd interfejsu użytkownika aplikacji GUI (43)
- Klasy tworzące aplikację GUI (44)
- Klasa aplikacji (46)
- Klasa dokumentu (47)
- Klasa AppUi (49)
- Klasa widoku (54)
- Sekwencja startu aplikacji GUI (57)
- Otoczenie interfejsu użytkownika (58)
- Zasoby aplikacji (59)
- Plik lokalizacyjny (60)
- Główny plik zasobów (61)
- Plik rejestracyjny (67)
- Plik konfiguracyjny projektu (73)
- Plik definicji komponentów projektu (79)
- Pakiet instalacyjny (80)
- Drzewo katalogów (83)
- Proces budowania (85)
- Platformy (85)
- Postkonsolidator (86)
- Budowanie aplikacji (86)
- Podpisywanie pakietu instalacyjnego (87)
- Jednostka zaufania (90)
- Warstwy zaufania (91)
- TCB (Trusted Computing Base) (91)
- TCE (Trusted Computing Environment) (92)
- Zaufane oprogramowanie od dostawców zewnętrznych (92)
- Oprogramowanie niezaufane (93)
- Uprawnienia (94)
- Ochrona plików (97)
- Katalog sys (97)
- Katalog esource (98)
- Katalog private (98)
- Reguły ładowania bibliotek (99)
- Identyfikatory plików wykonywalnych (101)
- Identyfikator UID1 (102)
- Identyfikator UID2 (102)
- Identyfikator UID3 (102)
- Identyfikator SID (102)
- Identyfikator VID (104)
- Podpisywanie aplikacji w Symbian Signed (104)
- Open Signed Online (106)
- Open Signed Offline (106)
- Express Signed (109)
- Certified Signed (112)
- Uzyskiwanie zgody na posiadanie uprawnień producenta urządzeń (113)
- System plików emulatora (119)
- Okno emulatora (119)
- Okno preferencji (121)
- Zakładka "C++ Debug" (123)
- Zakładka "General Settings" (124)
- Zakładka "PAN" (125)
- Zakładka "Network" (125)
- Zakładka "MIDP Security" (125)
- Zakładka "Platform Security" (126)
- Generowanie zdarzeń (126)
- Karty pamięci (127)
- Zdarzenia podstawowe (127)
- Zdarzenia dodatkowe (128)
- Alarm (128)
- Wysyłanie wiadomości (129)
- Diagnostyka (129)
- Monitorowanie transakcji HTTP (130)
- Podgląd komunikatów diagnostycznych (130)
- Menedżer zadań (132)
- Diagnozowanie urządzenia mobilnego (133)
- Plik konfiguracyjny emulatora (134)
- Rozmiar oraz pozycja wyświetlacza (135)
- Mapowanie klawiszy (136)
- Opcje debug (137)
- Pamięć RAM (137)
- Platforma Bezpieczeństwa (138)
- Karty pamięci (138)
- Typy podstawowe (141)
- Typy całkowite (142)
- Typy rzeczywiste (142)
- Typ logiczny (143)
- Typ pusty (144)
- Klasy T (145)
- Klasy C (146)
- Klasy R (148)
- Klasy M (150)
- Klasy statyczne (151)
- Wyjątki w nazewnictwie klas (152)
- Nazewnictwo składowych klasy (152)
- Wyjścia (155)
- Klasa CleanupStack (157)
- Przechwytywanie wyjść (162)
- Dwufazowy konstruktor (164)
- Zagadnienia zaawansowane (168)
- Wyjścia jako wyjątki (168)
- Klasa CleanupStack pod lupą (171)
- Paniki (174)
- Kategorie panik (174)
- Definiowanie panik (175)
- Wątki i procesy krytyczne (177)
- Plik ErrRd - pomoc programisty (177)
- Klasy deskryptorów (181)
- Deskryptory niemodyfikowalne (182)
- Deskryptory modyfikowalne (183)
- Deskryptory wskaźnikowe (185)
- Klasa TPtrC (186)
- Klasa TPtr (189)
- Deskryptory buforowe (191)
- Klasa TBufC (192)
- Klasa TBuf (194)
- Klasa HBufC (196)
- Klasa RBuf (203)
- Literały (205)
- Prawidłowe używanie deskryptorów (207)
- Deskryptory jako parametry funkcji (207)
- Deskryptory jako typy zwracane (209)
- Deskryptoryzacja (212)
- Konwersja danych (217)
- Najczęstsze nadużycia (219)
- Rodzina klas CArray (223)
- Klasy RArray i RPointerArray (229)
- Tablice o stałym rozmiarze (235)
- Klasa CActive (239)
- Klasa CActiveScheduler (244)
- Aktywne obiekty w praktyce (250)
- Asynchroniczne odmierzanie czasu (250)
- Asynchroniczny zapis danych do pliku (254)
- Synchroniczne wykonywanie operacji asynchronicznych (258)
- Wykorzystanie klasy User (259)
- Zagnieżdżanie pętli Zarządcy Aktywności (260)
- Najczęściej popełniane błędy (269)
- Klasa RThread (272)
- Klasa RProcess (285)
- Priorytety (291)
- Priorytety procesów (291)
- Priorytety wątków (292)
- Synchronizacja (294)
- Semafory (295)
- Muteksy (300)
- Sekcje krytyczne (304)
- Spotkanie w ustalonych punktach wykonania (306)
- Klasa RUndertaker (311)
- Sesje i podsesje (319)
- Klasy RSessionBase (320)
- Klasa RSubSessionBase (325)
- Klasa CSession2 (326)
- Komunikaty (328)
- Serwery (337)
- Typy serwerów (337)
- Klasa CServer2 (338)
- Polityka bezpieczeństwa (341)
- Klient - serwer w praktyce (348)
- Plik definicji komponentów projektu (349)
- Współdzielone definicje stałych (350)
- API klienta (351)
- Serwer (355)
- Właściwości (371)
- Klasa RProperty (372)
- Kwestie bezpieczeństwa (383)
- Właściwości systemowe (383)
- Repozytoria (386)
- Klasa CRepository (387)
- Repozytoria systemowe (396)
- Wielowidokowa aplikacja GUI (400)
- Pliki konfiguracyjne (403)
- Pliki zasobów (406)
- Klasa aplikacji (410)
- Klasa dokumentu (411)
- Klasa AppUi (412)
- Klasy widoków (415)
- Skrypt instalacyjny (423)
- Aplikacja bez interfejsu użytkownika (424)
- Pliki konfiguracyjne (424)
- Główny plik źródłowy (425)
- Skrypt instalacyjny (431)
- Globalne okna dialogowe (431)
- Klasa CAknGlobalConfirmationQuery (436)
- Klasa CAknGlobalListQuery (439)
- Klasa CAknGlobalMsgQuery (442)
- Klasa CAknGlobalNote (445)
- Klasa CAknGlobalProgressDialog (448)
- Uruchamianie aplikacji podczas startu systemu (452)
- Informacje ogólne (455)
- Biblioteki w praktyce (458)
- Przykład biblioteki ładowanej statycznie (458)
- Przykład biblioteki ładowanej dynamicznie (467)
- Budowanie bibliotek (475)
- Makra kompilatora platformy WINSCW (477)
- Makro _DEBUG (478)
- Makro EKA2 (478)
- Makra wspomagające logowanie (479)
- Zapobieganie wyciekom pamięci (481)
- Asercje (483)
Skorowidz (487)