This updated Symbian C++ code example demonstrates how to easily use the onboard camera with zoom and autofocus, utilising an accompanying CameraWrapper made by Forum Nokia. The Camera Wrapper supports all Nokia's S60 devices based on S60 3rd Edition and newer, providing a unified interface for various Symbian and S60 camera APIs some of which have previously been Feature Pack specific or only available via an SDK plug-in. The example application supports the use of both the keypad and touch UI. The application can be self-signed, but it also provides an option to use the dedicated camera key (Symbian signing required). The example application replaces the separate examples published for S60 3rd Edition, FP1 (S60 Platform: Camera Example with AutoFocus Support v2.2) and FP2 (S60 Camera Example AutoFocus 3rd Ed FP2).
This updated C++ code example demonstrates how to localise an application to adapt to the selected phone language. The example application has two sets of localised strings (English and German) for the application name, labels, text, and image. The application also includes number, currency, date, and time localisation, in which the TLocale method is used for localisation even if the selected phone language is neither one of the two application languages. This updated example has been tested to support S60 5th Edition and touch UI.
This updated C++ code example demonstrates how to list files in a specific directory. It helps developers in creating user-friendly applications that allow users to choose files from a list of specific file types. Middle softkey labelling is supported (introduced in S60 3rd Edition, Feature Pack 2). The updated version has been tested to support S60 5th Edition and touch UI. Important classes: PathInfo, CDocumentHandler.
This updated C++ example application demonstrates a fully touch-optimised application using various touch UI features of S60 5th Edition with direct manipulation. Besides tapping the cards, the user can drag and drop them using a finger or the stylus. The application demonstrates handling pointer events of custom made UI controls. Also, tactile feedback using the Touch Feedback API is received. Double buffering is used to draw on the screen to avoid flickering. By default, the cards are implemented as Scalable Vector Graphics (SVG) icons, but the example also provides an option to draw them using methods of the graphics context class CWindowGc. In the updated version, major drawing optimisation has been done. The example application was developed for S60 5th Edition and touch UI. Important classes: CCoeControl, MTouchFeedback, CFbsBitmap, CWindowGc.
This updated C++ application demonstrates simple HTTP GET and POST transactions using the HTTP Client API. Basic HTTP authentication is also supported. The updated example uses application-level roaming (introduced in S60 3rd Edition, Feature Pack 2 onwards). The updated example has been tested to support S60 5th Edition and touch UI. Note that this version supports S60 3rd Edition, Feature Pack 2 and S60 5th Edition. Important classes: RHTTPSession, RHTTPTransaction, RHTTPHeaders, MHTTPDataSupplier, MHTTPAuthenticationCallback, MHTTPTransactionCallback.
This updated C++ code example demonstrates the usage of Rich Text Editor. Most of the features are handled automatically when the dialog framework creates the editor. However, some steps, such as inserting an image, setting the text input type, and showing the scroll bar, require the use of methods or classes. The updated example has been modified to support S60 5th Edition and touch UI. Main classes: CEikRichTextEditor, CFbsBitmap, TPictureHeader, CPicture.
This updated C++ code example demonstrates how to use descriptors (Symbian OS strings) and related APIs. The example is an S60 application that is used to run one example method or all of them. The methods write a log on the screen or into a file that demonstrates the results of different statements. The updated example has been updated to support S60 5th Edition and touch UI. Important classes: TBuf, HBufC, RBuf.
This updated C++ code example demonstrates the APIs that are available for figuring out battery, charger, and network status. It also demonstrates how to implement some of the power and resource management principles that have been discussed in the document S60 Platform: Effective Power and Resource Management. The updated example has been tested to support S60 5th Edition and touch UI. Main classes: CTelephony, CIdle, CActive.
This updated C++ example application demonstrates the use of Audio Streaming API, which provides functionality for recording audio stream into a buffer, and for playback of the audio buffer. Besides playing, recording, and stopping the audio stream, the recorded audio stream can be saved into a file, to be played again later. The package includes PCM and AMR-NB encoded sample files. Audio Streaming API is part of the Symbian Multimedia Framework (MMF). The updated example has been tested to support S60 5th Edition and touch UI. Important classes: CMdaAudioInputStream, CMdaAudioOutputStream, MMdaAudioInputStreamCallback, MMdaAudioOutputStreamCallback.
This updated C++ example application demonstrates the use of Bluetooth technology: device and service discovery, connection establishment to one or more devices, communication between devices, and disconnection. The Bluetooth RFCOMM protocol (RS-232 serial port emulation) is used as the transport protocol. For device discovery, the example provides two implementations, based on Generic Inquiry and the considerably faster Limited Inquiry (LIAC). Note that LIAC requires signing with a developer certificate. The updated example has been modified to support S60 5th Edition and touch UI. Important classes: RSocketServ, RHostResolver, CSdpAgent, SdpSearchPattern, RSdp.
This updated C++ application shows how to retrieve e-mail from a remote mailbox to an S60 device using IMAP and POP protocols. The usual e-mail features such as sending, editing, and deleting e-mail messages are demonstrated. The updated example has been modified to support S60 5th Edition and touch UI. Important classes: CMsvSession, CClientMtmRegistry, CMtmUiRegistry, CMsvOperation, CMsvEntrySelection, CMsvEntry, CBaseMtm.
This updated C++ example application demonstrates the key functionalities of the Audio Streaming API by playing generated waveforms and Pulse-Code Modulation (PCM) sound data from a file. The updated example has been tested to support S60 5th Edition and touch UI. Important classes: CStreamAudioEngine, CMdaAudioOutputStream, MMdaAudioOutputStreamCallback.
This updated C++ example demonstrates how to create multimedia messages using the CMmsClientMtm API. The updated example has been tested to support S60 5th Edition and touch UI. Important classes: CMsvEntry, CMmsClientMtm.
This C++ example demonstrates how to play (a maximum of 16) simultaneous voices. The example has eight blocks moving on the screen and playing sounds when they collide with a wall or with each other. The updated example has been tested to support S60 5th Edition and touch UI. Important classes: CMdaAudioOutputStream, TMdaAudioDataSettings, MMdaAudioOutputStreamCallback, RThread, RSemaphore, RMutex
This updated Open C++ example application demonstrates a simple memory game. The game engine part was written in Open C++ and the UI part was written in Symbian C++. The application supports S60 3rd Edition and S60 5th Edition devices. Keypad and touch UI are supported depending on the device. In this updated version, the UIDs of the help files and the package file have been changed for improved compatibility. Important classes: RTimer, CMdaAudioPlayerUtility, CAknQueryDialog, CAknMessageQueryDialog, CAknRadioButtonSettingPage, CEikTextListBox, CFbsBitmap, CAknIndicatorContainer, MTouchFeedback.
This updated C++ code example implements a practical use case of location-based services. The example demonstrates a use case of requesting the global positioning system (GPS) location of another device via short message service (SMS) and displaying the distance to the device as well as its location. The updated example has been tested to support S60 5th Edition and touch UI. A self-signed version can be installed on S60 3rd Edition, Feature Pack 2 and newer devices.
This C++ code example demonstrates how to convert UTC time to local time using the time zone server (RTz) and how to add, remove, or find a city in the database using the TZLocalizer API, introduced in Symbian OS v.9.1 (S60 3rd Edition). The updated example has been tested to support S60 5th Edition and touch UI. Main classes: RTz, CTzLocalizer.
This C++ example demonstrates how to implement a simple custom UI game that handles different layouts and multiple screen resolutions, and supports several input methods (keyboard and touch UI). Classes: CCoeControl, CFont, AknUtils, CFbsBitmap, CFbsBitGc, CFbsBitmapDevice
This C++ example is a simple application demonstrating the use of the Contacts Model API. It allows viewing contact items from the default contacts database. Each contact is shown using a custom text definition. New contacts can be imported from files that contain vCard items. A contact item can also be selected and exported to a file in the vCards format. The example has been tested to support S60 5th Edition and touch UI. Important classes: CContactTextDef, CContactIdArray.
The DBMS (Database Management System) example application demonstrates the usage of DBMS APIs. The example includes a bookstore database engine and a simple Avkon GUI for testing the engine. The example has been tested to support S60 5th Edition and touch UI. Main classes: RDbStoreDatabase, RFs.
This example demonstrates how to use the image conversion APIs available in the S60 platform (Image Conversion Library, ICL). These APIs include important classes, such as CBitmapRotator and CBitmapScaler to be used for rotating and scaling images, respectively. CImageEncoder and CImageDecoder classes are used to access image encoders and decoders available in the ICL. Images can be opened, rotated, scaled, and saved in the same or a different format. The UI of the updated application has been optimised for touch using, for example, long taps and tactile feedback. The example project supports building for both S60 5th Edition with touch UI and S60 3rd Edition with a traditional keypad. Important classes: CAknLongTapDetector, MTouchFeedback, CBitmapRotator, CBitmapScaler, CImageEncoder, CImageDecoder, CFbsBitmap, CAknQueryDialog.
This updated C++ example demonstrates programmatical handling of SMS messages. Messages can be sent from the application and they can be received directly into the application (that is, catching incoming messages before the user gets any notification). In addition, messages can be deleted, copied, or moved to other folders of the message store (inbox, outbox, drafts). The example has been updated to be compatible with S60 5th Edition and touch UI. Important classes: CMsvSession, CMsvEntry, CMmsClientMtm, CSmsClientMtm, CClientMtmRegistry, KMsvMessagePartBody, ESmsMtmCommandScheduleCopy, CSmsSettings, CSmsHeader.
This C++ example application (Noughts and Crosses) demonstrates the scalable UI and SVG-T icons. The example has been updated to support touch UI. It has been designed to work on all devices from S60 3rd Edition onwards and it supports different screen sizes, orientations, and both the touch UI and a traditional keypad. Important classes: AknLayoutUtils::LayoutMetricsRect() method (UI Metrics API).
This C++ code example explains the basic construction of settings screens, including setting item lists, setting items, and setting pages. The application consists of a single view - a Setting List that has a variety of different types of settings that can be manipulated. The application has been updated to be compatible with S60 5th Edition and touch UI. The usage of settings screens is discussed in the document S60 Platform: Implementing Settings Screens published at www.forum.nokia.com. Important classes: CAknView, CAknSettingItem, CAknSettingItemList, CAknEnumeratedTextSettingItem, CSelectionItemList.
This example demonstrates how to load CAknSettingItemList dynamically at run time instead of defining the list structure into a resource file. In the example, the lists are loaded during application startup. The example can be used as the basis for many different applications where a list has to be loaded dynamically (for instance, based on external feed from a server). Note that CAknSettingItemList itself is not ideal for dynamic loading, but it is possible by using dummy resource IDs and defining all the required list item types in the source code. At run time it is then possible to load multiple instances of each list item type (with any label and value). The application has been updated to be compatible with S60 5th Edition and touch UI. Important classes: CAknSettingItemList.
This C++ application demonstrates how to add and modify anniversary entries using the Calendar Interim API (also known as CalInterim API). The Calendar Interim API replaced the Agenda Model API in Symbian OS v9.1 (S60 3rd Edition). The application has been updated to be compatible with S60 5th Edition and touch UI. Important classes: CCalEntry, CCalEntryView, CCalInstance, CCalInstanceView, CCalAlarm, CCalSession, MCalProgressCallBack.
The example demonstrates how to create an active scheduler and how to use active objects inside a new thread. Inside the main thread (main program) the framework creates the active scheduler automatically, but inside a new thread the active scheduler must be created by the programmer. One active object is a Bluetooth device discoverer that searches Bluetooth devices in the vicinity and displays them in the listbox. The example has been tested to be compatible with S60 5th Edition and touch UI. Important classes and headers: RThread, RSocketServer, Btnotifier.h (Bluetooth notifier API).
This C++ application demonstrates scalable screen drawing with Direct Screen Access and custom drawing routines using SVG-T icons and bitmaps. The application scales to multiple display resolutions in portrait and landscape orientations supported by the S60 platform. This example is targeted especially at games and multimedia developers who prefer developing a custom UI instead of using an automatically scaling UI, such as S60 Avkon components. Labeling for the middle softkey has been added in the updated version. The application supports middle-softkey labeling and it has been updated to be compatible with S60 5th Edition and touch UI. Important classes: CIconFileProvider, MDirectScreenAccess, MAknIconFileProvider, CCoeControl (HandleResourceChange() method and KEikDynamicLayoutVariantSwitch), CEikAppUi (ApplicationRect(), Orientation(), and SetOrientationL() methods), AknLayoutUtils (PenEnabled() method).
This C++ code example demonstrates how an application can open an Internet connection and manage access points. The application opens a connection to a predefined Internet access point (IAP). From S60 3rd Edition, FP2 onwards, a predefined service network access point (SNAP) is used, which enables application-level roaming. Note that access point management features implemented as an option in the example require WriteDeviceData and NetworkControl capabilities. This application has been tested to support S60 5th Edition and touch UI. The example package contains a video demonstrating how to use the application. Documentation about application-level roaming and service network access points is provided in the C++ Developer's Library Extension for S60 3rd Edition FP2 MR/Communication section. Important classes: MMobilityProtocolResp, TAccessPointInfo, CActiveCommsMobilityApiExt, CCmApplicationSettingsUi, TCmSettingSelection, TBearerFilterArray.