You Are Here:

Symbian/C++ Code and Examples

Register Today

Register with Forum Nokia now and you'll enjoy the full benefits of the Forum Nokia membership.

Register Login
Community Highlights

Innovation Series Videos highlighting Forum Nokia developers

Wiki article of the week

Java Porting

Champion of the month

Felipe Andrade
Read more about Felipe on the Champions website.


Forum Nokia Events

Ovi Store Publisher Reporting
July 08, 2009
9 a.m. New York, 2 p.m. London, 4 p.m. Helsinki

Ovi Store Publisher Reporting
July 08, 2009
11 a.m. San Francisco, 2 p.m. New York

Nokia World 09
September 02, 2009
Stuttgart, Germany

Adobe MAX 2009
October 04, 2009
Los Angeles

International CTIA WIRELESS I.T. & Entertainment 2009
October 06, 2009
San Diego, California


View all

Areas of interest

Latest

18-Mar-2009

S60 Platform: Camera Example
This 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).

17-Mar-2009

S60 Platform: Localisation Example
This 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. The updated example has been tested to support S60 5th Edition and touch UI.

03-Mar-2009

S60 Platform: FileList Example
This 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.

02-Mar-2009

S60 5th Edition: Solitaire Game Example
This 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.

27-Feb-2009

S60 5th Edition: Mobile Paint Example
This C++ code example demonstrates drawing and other touch UI features of S60 5th Edition with direct manipulation using, for example, CCoeControl::EnableDragEvents(). The application provides a number of drawing options that can be selected from a toolbar. There are two toolbar options, CAknToolbar and a custom floating toolbar. All application graphics have been implemented as Scalable Vector Graphics Tiny (SVGT) icons. In the updated version, the drawing performance has been improved and the functionality of the UI components fine-tuned. The example application has been developed for S60 5th Edition and touch UI. Important classes: CCoeControl, MTouchFeedback, CFbsBitmap, CFbsBitGc, CFbsBitmapDevice, CAknToolbar, CAknToolbarExtension, MAknToolbarObserver.

26-Feb-2009

S60 Platform: HTTP Client Example
This updated C++ application demonstrates simple HTTP GET and POST transactions using the HTTP Client API. Basic HTTP authentication is also supported. The updated v2.2 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. Important classes: RHTTPSession, RHTTPTransaction, RHTTPHeaders, MHTTPDataSupplier, MHTTPAuthenticationCallback, MHTTPTransactionCallback.

18-Feb-2009

S60 Platform: Rich Text Editor Example
This 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 example has been modified to support S60 5th Edition and touch UI. Main classes: CEikRichTextEditor, CFbsBitmap, TPictureHeader, CPicture.

12-Feb-2009

S60 Platform: Descriptor Example
This 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 example has been updated to support S60 5th Edition and touch UI. Important classes: TBuf, HBufC, RBuf.

09-Feb-2009

S60 Platform: Power and Resource Management Example
This 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.

03-Feb-2009

S60 Platform: Audio Streaming Example
This 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.

S60 5th Edition

18-Mar-2009

S60 Platform: Camera Example
This 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).

17-Mar-2009

S60 Platform: Localisation Example
This 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. The updated example has been tested to support S60 5th Edition and touch UI.

03-Mar-2009

S60 Platform: FileList Example
This 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.

02-Mar-2009

S60 5th Edition: Solitaire Game Example
This 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.

27-Feb-2009

S60 5th Edition: Mobile Paint Example
This C++ code example demonstrates drawing and other touch UI features of S60 5th Edition with direct manipulation using, for example, CCoeControl::EnableDragEvents(). The application provides a number of drawing options that can be selected from a toolbar. There are two toolbar options, CAknToolbar and a custom floating toolbar. All application graphics have been implemented as Scalable Vector Graphics Tiny (SVGT) icons. In the updated version, the drawing performance has been improved and the functionality of the UI components fine-tuned. The example application has been developed for S60 5th Edition and touch UI. Important classes: CCoeControl, MTouchFeedback, CFbsBitmap, CFbsBitGc, CFbsBitmapDevice, CAknToolbar, CAknToolbarExtension, MAknToolbarObserver.

26-Feb-2009

S60 Platform: HTTP Client Example
This updated C++ application demonstrates simple HTTP GET and POST transactions using the HTTP Client API. Basic HTTP authentication is also supported. The updated v2.2 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. Important classes: RHTTPSession, RHTTPTransaction, RHTTPHeaders, MHTTPDataSupplier, MHTTPAuthenticationCallback, MHTTPTransactionCallback.

18-Feb-2009

S60 Platform: Rich Text Editor Example
This 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 example has been modified to support S60 5th Edition and touch UI. Main classes: CEikRichTextEditor, CFbsBitmap, TPictureHeader, CPicture.

12-Feb-2009

S60 Platform: Descriptor Example
This 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 example has been updated to support S60 5th Edition and touch UI. Important classes: TBuf, HBufC, RBuf.

09-Feb-2009

S60 Platform: Power and Resource Management Example
This 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.

03-Feb-2009

S60 Platform: Audio Streaming Example
This 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.

03-Feb-2009

S60 Platform: Bluetooth Point-to-Multipoint Example
This 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

02-Feb-2009

S60 Platform: POP/IMAP Example
This 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.

30-Jan-2009

S60 Platform: Audio Output Streaming Example
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.

29-Jan-2009

S60 Platform: MMS Example
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.

27-Jan-2009

S60 Platform: Sound Mixer Example
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

21-Jan-2009

Open C++: Memory Game Example
This 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 the 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.

19-Jan-2009

S60 Platform: Location Example
This 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.

16-Jan-2009

S60 Platform: Time Zone Localiser Example
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.

14-Jan-2009

S60 Platform: Sudoku Game Example
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

21-Oct-2008

S60 Platform: Contacts Model API Example
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.

14-Oct-2008

S60 Platform: DBMS Example
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.

10-Oct-2008

S60 Platform: Image Converter Example
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.

08-Oct-2008

S60 Platform: SMS Example
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.

02-Oct-2008

S60 Platform: Scalable UI Example
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.

02-Oct-2008

S60 Platform: Settings Screen Example
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. Important classes: CAknView, CAknSettingItem, CAknSettingItemList, CAknEnumeratedTextSettingItem, CSelectionItemList.

02-Oct-2008

S60 Platform: Dynamic Setting List Example
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.

02-Oct-2008

S60 Platform: Calendar Interim API Example v1.1
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.

02-Oct-2008

S60 Platform: Thread and Active Objects Example
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 developer. 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).

02-Oct-2008

S60 Platform: Scalable Screen-Drawing Example
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).

29-Sep-2008

S60 Platform: Access Points Example with Roaming Support
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.

Base/System - S60/Symbian C++

12-Feb-2009

S60 Platform: Descriptor Example
This 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 example has been updated to support S60 5th Edition and touch UI. Important classes: TBuf, HBufC, RBuf.

09-Feb-2009

S60 Platform: Power and Resource Management Example
This 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.

16-Jan-2009

S60 Platform: Time Zone Localiser Example
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.

02-Oct-2008

S60 Platform: Thread and Active Objects Example
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 developer. 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).

31-Mar-2008

S60 Platform: Log Example
This C++ application demonstrates the usage of the Log Engine API provided by Symbian. The API is used to record events of interest to the user, of which they may not be immediately aware, or which are of high importance since costs are incurred, such as telephone calls. These events can be retrieved by a viewer application and displayed to the user. The Log Engine API is supported from S60 2nd Edition onwards. In the updated version, the timestamp offset of the log events has been corrected, backup & restore and scalability support has been added, and the application views have been simplified.

06-Feb-2008

S60 Platform: Chinese Display Example
This C++ application demonstrates how to display Chinese characters from resource files. The application supports internationalization and localization. In the updated version also the context-sensitive help has been added. The application supports following languages: English, Taiwan Chinese, Taiwan English, HongKong Chinese, HongKong English, Mainland Chinese, and Mainland English. Main classes: TFontSpec, CCnvCharacterSetConverter

12-Jan-2007

S60 Platform: ECom Plug-In Examples v2.0
This package includes two C++ code examples demonstrating how to create and use an ECom plug-in from a client application. ECom_Shape draws different figures and ECom_ Calculator performs calculation for two numbers using the ECom plug-in component. The examples consist of a custom ECom interface, a DLL plug-in component with actual implementations for the interface, a resolver (either a default or custom resolver), and a simple GUI client that uses the interface. Main classes: REComSession, TEComResolverParams, CEikLabel, CEikEdwin, TResourceReader, CResolver, TImplementationProxy.

22-Dec-2006

S60 Platform: Document Handler Example
This C++ example demonstrates how to use the Document Handler and the Recognizer to open and handle certain file types in a dedicated application. The example consists of three components: a caller application trying to open a specific file, a recognizer (a dll component implemented as an ECom plugin from S60 3rd Edition onwards) detecting the file extension, and a document handler opening the file. Note that for the recognizer, a developer certificate is needed due to its ProtServ capability requirement. Usage of the document handler is described in the S60 Platform: Document Handler API Developer's Guide document, available at www.forum.nokia.com. Main classes: CDocumentHandler, CApaDataRecognizerType.

31-Oct-2006

S60 Platform: FEP Example v2.0
This C++ code example demonstrates how to create and install a custom Front End Processor (FEP). It consists of two components: FepSetup, which can be used to install/switch the active FEP, and FepExample, which contains the actual FEP implementation. FepExample contains a sample multi-tap input engine, which modifies the behavior of the mobile phone's numeric keys. Note that because the active FEP is actually loaded by all applications, platform security (introduced in S60 3rd Edition) requires ALL-TCB capabilities, and thus the FepExample component has to be signed using the Manufacturer Approved Developer Certificate. Note also that FEP might not be compatible with all S60 applications. The known issues are described in the release notes in the example package. The example includes an AknEditStateIndicator.h header that is needed to define MAknEditingStateIndicator. The header was not available in the S60 SDKs until S60 3rd Edition, Feature Pack 1. Main classes: CCoeFep, CCoeFepPlugIn, CFepGenericGlobalSettings, MAknEditingStateIndicator.

20-Sep-2006

S60 Platform: System Information Example v2.0
This C++ code example demonstrates how to retrieve system information such as software and language versions, running applications, active profile, and battery and network status information. For some of these tasks, the APIs are different for S60 2nd and 3rd Edition. Main classes: HAL, CRepository, CTelephony, CSettingInfo, RSystemAgent.

25-Nov-2005

S60 Platform: Multiple Threads Example v1.1
This package includes a C++ Thread example program that demonstrates thread usage and synchronization. A document explaining the use of threads in Symbian OS is included in the package.

UI - S60/Symbian C++

02-Mar-2009

S60 5th Edition: Solitaire Game Example
This 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.

27-Feb-2009

S60 5th Edition: Mobile Paint Example
This C++ code example demonstrates drawing and other touch UI features of S60 5th Edition with direct manipulation using, for example, CCoeControl::EnableDragEvents(). The application provides a number of drawing options that can be selected from a toolbar. There are two toolbar options, CAknToolbar and a custom floating toolbar. All application graphics have been implemented as Scalable Vector Graphics Tiny (SVGT) icons. In the updated version, the drawing performance has been improved and the functionality of the UI components fine-tuned. The example application has been developed for S60 5th Edition and touch UI. Important classes: CCoeControl, MTouchFeedback, CFbsBitmap, CFbsBitGc, CFbsBitmapDevice, CAknToolbar, CAknToolbarExtension, MAknToolbarObserver.

18-Feb-2009

S60 Platform: Rich Text Editor Example
This 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 example has been modified to support S60 5th Edition and touch UI. Main classes: CEikRichTextEditor, CFbsBitmap, TPictureHeader, CPicture.

21-Jan-2009

Open C++: Memory Game Example
This 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 the 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.

14-Jan-2009

S60 Platform: Sudoku Game Example
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

10-Oct-2008

S60 Platform: Image Converter Example
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.

02-Oct-2008

S60 Platform: Scalable UI Example
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.

02-Oct-2008

S60 Platform: Settings Screen Example
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. Important classes: CAknView, CAknSettingItem, CAknSettingItemList, CAknEnumeratedTextSettingItem, CSelectionItemList.

02-Oct-2008

S60 Platform: Dynamic Setting List Example
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.

02-Oct-2008

S60 Platform: Scalable Screen-Drawing Example
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).

06-Feb-2008

S60 Platform: Chinese Display Example
This C++ application demonstrates how to display Chinese characters from resource files. The application supports internationalization and localization. In the updated version also the context-sensitive help has been added. The application supports following languages: English, Taiwan Chinese, Taiwan English, HongKong Chinese, HongKong English, Mainland Chinese, and Mainland English. Main classes: TFontSpec, CCnvCharacterSetConverter

06-Jul-2007

Open C: SMS Crypto Example (with Python UI) v1.1
This Open C code example demonstrates usage of Python for S60 to provide a GUI for functionality implemented in standard C code. The use case of the example is encrypting/decrypting and sending/receiving of SMS messages. The example contains a simple C library for encryption that is ported to Symbian using Open C and called from the GUI. The package also contains a version with Symbian C++ GUI. The comparison and architectures of the Python and Symbian C++ implementations are provided in the Implementation Notes document available in the example package. Version 1.1 of the package includes updates to the document only.

11-Jun-2007

S60 Platform: Custom UI and Screen Rotation Example
Use this C++ example application to learn the key functionalities of the screen rotation, custom component handling, status pane handling, and picture scaling on the S60 UI layer. Main classes CAknViewAppUi, CAknView, CCoeControl.

09-Sep-2005

Series 60 Platform 2nd Edition: Screen Saver Example
This example demonstrates the usage of the ScreensaverPlugin API to implement a customized utility screen saver on top of the default Series 60 screen saver.

Localisation - S60/Symbian C++

17-Mar-2009

S60 Platform: Localisation Example
This 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. The updated example has been tested to support S60 5th Edition and touch UI.

06-Feb-2008

S60 Platform: Chinese Display Example
This C++ application demonstrates how to display Chinese characters from resource files. The application supports internationalization and localization. In the updated version also the context-sensitive help has been added. The application supports following languages: English, Taiwan Chinese, Taiwan English, HongKong Chinese, HongKong English, Mainland Chinese, and Mainland English. Main classes: TFontSpec, CCnvCharacterSetConverter

Graphics - S60/Symbian C++

02-Mar-2009

S60 5th Edition: Solitaire Game Example
This 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.

27-Feb-2009

S60 5th Edition: Mobile Paint Example
This C++ code example demonstrates drawing and other touch UI features of S60 5th Edition with direct manipulation using, for example, CCoeControl::EnableDragEvents(). The application provides a number of drawing options that can be selected from a toolbar. There are two toolbar options, CAknToolbar and a custom floating toolbar. All application graphics have been implemented as Scalable Vector Graphics Tiny (SVGT) icons. In the updated version, the drawing performance has been improved and the functionality of the UI components fine-tuned. The example application has been developed for S60 5th Edition and touch UI. Important classes: CCoeControl, MTouchFeedback, CFbsBitmap, CFbsBitGc, CFbsBitmapDevice, CAknToolbar, CAknToolbarExtension, MAknToolbarObserver.

14-Jan-2009

S60 Platform: Sudoku Game Example
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

02-Oct-2008

S60 Platform: Scalable UI Example
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.

02-Oct-2008

S60 Platform: Scalable Screen-Drawing Example
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).

13-Jun-2008

S60 Platform: 3D Game Engine Example with Sensor Support
This C++ example application demonstrates a simple 3D engine. The engine produces a simple car game where you can drive a car around a wide parking lot. Everything seen on the screen is rendered in 3D. The example utilizes OpenGL ES and the application dynamically scales on all screen sizes of S60 devices.

10-May-2007

S60 Platform: 2D Game Engine Example
This C++ code example demonstrates an application with custom 2D graphics. The application is designed to support various S60 devices with different amounts of colors and various screen resolutions and orientations. The application implements a simple 2D game with some basic game features (audio on/off, on-screen menu). The code example is based on an earlier published Symbian OS: 2D Game Engine Example, which supports, for example, S60 2nd Edition and Series 80 2nd Edition. Main classes: CFbsBitmap, RBackedupWindow.

23-Mar-2007

Symbian OS: 3D Game Engine Example v1.2
This C++ code example demonstrates a simple 3D engine. The engine produces a simple game where you can drive a car around a wide parking lot. Everything seen on the screen is rendered in 3D. The example utilizes OpenGL ES (supported from S60 2nd Edition, Feature Pack 2 onwards) and an own rendering implementation for platforms not supporting OpenGL ES. This example supports S60 2nd Edition and Series 80 2nd Edition devices. A separate example is available for S60 3rd Edition at www.forum.nokia.com. Main classes: OpenGL ES (API), CIdle, Math, CImageDecoder, CAknKeySoundSystem.

31-Jan-2007

S60 Platform: Isometric Adventure Game Example
This C++ code example demonstrates isometric content creation and usage of standard C/C++ libraries. The example also shows how to structure memory usage and how game state and resources can be freed / restored during run time. The key audience is considered to be C++ game developers who have developed games for desktop computers and also want to expand to S60 devices. The generic game architecture design considerations for mobile platforms are applicable to all game developers, or those interested in becoming (mobile) game developers. The package includes a game design document. General isometric game development issues are described in the Designing Isometric Adventure Games document that is available at www.forum.nokia.com.

Multimedia - S60/Symbian C++

18-Mar-2009

S60 Platform: Camera Example
This 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).

03-Feb-2009

S60 Platform: Audio Streaming Example
This 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.

30-Jan-2009

S60 Platform: Audio Output Streaming Example
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.

27-Jan-2009

S60 Platform: Sound Mixer Example
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

10-Oct-2008

S60 Platform: Image Converter Example
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.

16-Mar-2007

S60 Platform: Full-Duplex Audio Example v2.0
This C++ example application plays and records audio simultaneously, reading from the microphone and writing to the earpiece/speaker, creating a local audio feedback loop. Audio is processed in encoded format, using real-time encoding/decoding support from audio hardware. This example can also be used for creating VoIP applications on S60 2nd Edition, S60 2nd Edition FP2 and FP3. Main classes: CMMFDevSound, MDevSoundObserver.

06-Nov-2006

S60 Platform: Video Example v2.0
This C++ code example demonstrates how to play and record video files. CVideoRecorderUtility and CCamera classes are used to record a video clip, and the CVideoPlayerUtility class is used to play, stop, and pause video clips and show the video clip information. In addition, playing a video clip in an external viewer using a document handler method is demonstrated in this example. Video APIs are part of the Multimedia Framework (MMF) that is supported from Symbian OS v7.0s (S60 2nd Edition) onwards (on the Nokia 6600 it is only possible to play video). Main classes: CVideoRecorderUtility, CVideoPlayerUtility, CCamera, CFeatureDiscovery.

24-May-2005

Series 60 Platform 1st/2nd Edition: Call Recorder Example
This example shows how to record phone calls (from a telephony uplink and a microphone) into wav files. In addition, the example demonstrates how to play audio files, show a progress bar, and use active objects to listen to the phone line.

Messaging - S60/Symbian C++

02-Feb-2009

S60 Platform: POP/IMAP Example
This 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.

29-Jan-2009

S60 Platform: MMS Example
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.

19-Jan-2009

S60 Platform: Location Example
This 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.

08-Oct-2008

S60 Platform: SMS Example
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.

27-Jun-2008

S60 3rd Edition: Creating Custom Message Type Modules (with Example)
Download this C++ document and code example to learn how to create Message Type Modules (MTMs) for S60 3rd Edition and later releases. The target audience is e-mail developers implementing their own e-mail protocol (for example, Push e-mail service), where preinstalled S60 platform e-mail MTMs (POP3, IMAP4) cannot be used. The package demonstrates how to develop and install an MTM, how to create an account (mailbox), how to create a simple viewer/editor implemented as a server application, how to provide support to send from other applications, and how to receive notifications of new messages. Message sending and receiving are echoed locally. Note that Symbian platform security imposes heavy capability requirements for MTMs (up to ALL -TCB capabilities) and thus the application has to be signed using the Manufacturer Approved Developer Certificate.

06-Jul-2007

Open C: SMS Crypto Example (with Python UI) v1.1
This Open C code example demonstrates usage of Python for S60 to provide a GUI for functionality implemented in standard C code. The use case of the example is encrypting/decrypting and sending/receiving of SMS messages. The example contains a simple C library for encryption that is ported to Symbian using Open C and called from the GUI. The package also contains a version with Symbian C++ GUI. The comparison and architectures of the Python and Symbian C++ implementations are provided in the Implementation Notes document available in the example package. Version 1.1 of the package includes updates to the document only.

Networking - S60/Symbian C++

26-Feb-2009

S60 Platform: HTTP Client Example
This updated C++ application demonstrates simple HTTP GET and POST transactions using the HTTP Client API. Basic HTTP authentication is also supported. The updated v2.2 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. Important classes: RHTTPSession, RHTTPTransaction, RHTTPHeaders, MHTTPDataSupplier, MHTTPAuthenticationCallback, MHTTPTransactionCallback.

03-Feb-2009

S60 Platform: Bluetooth Point-to-Multipoint Example
This 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

29-Sep-2008

S60 Platform: Access Points Example with Roaming Support
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.

13-Feb-2008

S60 Platform: End-to-End Device Management Example
This example adds device management features to the earlier published Symbian OS: End-to-End HTTP API Example. It demonstrates how to implement a simple DM adapter in the S60 2nd and 3rd Edition devices that interact with a device management server, how to set up and use a custom DM server, how to store and update the data received from the DM server and to make the data available to another application. The example has been implemented using freely available back-end components (Apache, Funambol, and JBoss servers; MySQL database). The package consists of S60 client applications, WebUI components for JSP and PHP, and user account scripts for MySQL. Documentation for configuring the system is included in the package.

20-Dec-2007

Open C: IRC Example
Examine this code example to learn how to use an open source IRC library and Open C to create a functional IRC client application. The example contains a simple open source C library CIRC for communicating with IRC servers that is ported to Symbian OS using Open C and called from a GUI that is implemented using Symbian C++. The use case of the example is to communicate with other IRC users on the chosen IRC server. This example also supports sending "raw" IRC commands and is therefore a fully functional client application. A document about porting experiences and example architecture is also included in the package. Important libraries/structs/functions: libc, sockaddr_in, socket, gethostbyname, connect, nonblocking.

26-Jun-2007

Open C: FTP Client Example
This C/C++ code example demonstrates porting standard C software to the S60 platform. In this example, an open source FTP library (ftplib and qftp; released under GNU General Public License) written in C has been ported to Open C. In addition, a simple UI has been written in Symbian C++ to provide a GUI application. A document about porting experiences and example architecture is also included in the package. The updated version adds support for the GCCE compiler and Carbide.c++ v1.2 IDE. Main Symbian C++/S60 classes: CAknSingleNumberStyleListBox, CAknSearchField, CAknTextQueryDialog, CFileMan, StringLoader. C/Open C classes: connect, socket, setsockopt.

16-Mar-2007

S60 Platform: Full-Duplex Audio Example v2.0
This C++ example application plays and records audio simultaneously, reading from the microphone and writing to the earpiece/speaker, creating a local audio feedback loop. Audio is processed in encoded format, using real-time encoding/decoding support from audio hardware. This example can also be used for creating VoIP applications on S60 2nd Edition, S60 2nd Edition FP2 and FP3. Main classes: CMMFDevSound, MDevSoundObserver.

21-Feb-2007

Symbian OS: End-to-End HTTP API Example v1.3
This updated example is an HTTP reference implementation of an enterprise system that includes mobile clients for the S60 and Series 80 platforms (in Symbian C++), a server-based database, and Web portals (PHP and JSP implementations). Documentation is included in the package. In the updated version, the previously incomplete PHP Web UI functionality has been improved.

21-Feb-2007

Symbian OS: End-to-End Sockets API Example v1.3
This updated example is a Sockets reference implementation of an enterprise system that includes mobile clients for the S60 and Series 80 platforms (in Symbian C++), a server-based database, and Web portals (PHP and JSP implementations). Documentation is included in the package. In the updated version, the previously incomplete PHP Web UI functionality has been improved.

22-Dec-2006

S60 Platform: Bluetooth OBEX Example
This C++ code example provides a method for transferring objects or chunks of data from one device to another via Bluetooth. These chunks are typically files or other blocks of binary data. This example demonstrates how to run OBEX on top of the Bluetooth RFCOMM protocol, but OBEX can also be used with other transport media, such as IrDA and USB. In addition, the usage of a high-level messaging API, SendUI, is demonstrated. Main classes: TObexBluetoothProtocolInfo, TObexBaseObject, MObexServerNotify, CObexClient, CObexServer, CDocumentHandler, KPowerModeSettingNotifierUid, CSendUi, CSendAppUi.

03-Nov-2005

S60 2nd Edition: FTP Example
This C++ example demonstrates the usage of the FTP (File Transfer Protocol) Service API that allows connecting to and disconnecting from a remote FTP server. The FTP library package provided within the example is required in order to use FTP. It is supported in S60 2nd Edition FP1, FP2, and FP3 devices.

24-May-2005

Series 60 Platform 1st/2nd Edition: Call Recorder Example
This example shows how to record phone calls (from a telephony uplink and a microphone) into wav files. In addition, the example demonstrates how to play audio files, show a progress bar, and use active objects to listen to the phone line.

Device Management - S60/Symbian C++

13-Feb-2008

S60 Platform: End-to-End Device Management Example
This example adds device management features to the earlier published Symbian OS: End-to-End HTTP API Example. It demonstrates how to implement a simple DM adapter in the S60 2nd and 3rd Edition devices that interact with a device management server, how to set up and use a custom DM server, how to store and update the data received from the DM server and to make the data available to another application. The example has been implemented using freely available back-end components (Apache, Funambol, and JBoss servers; MySQL database). The package consists of S60 client applications, WebUI components for JSP and PHP, and user account scripts for MySQL. Documentation for configuring the system is included in the package.

PIM & Files/Data - S60/Symbian C++

03-Mar-2009

S60 Platform: FileList Example
This 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.

18-Feb-2009

S60 Platform: Rich Text Editor Example
This 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 example has been modified to support S60 5th Edition and touch UI. Main classes: CEikRichTextEditor, CFbsBitmap, TPictureHeader, CPicture.

12-Feb-2009

S60 Platform: Descriptor Example
This 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 example has been updated to support S60 5th Edition and touch UI. Important classes: TBuf, HBufC, RBuf.

03-Feb-2009

S60 Platform: Audio Streaming Example
This 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.

16-Jan-2009

S60 Platform: Time Zone Localiser Example
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.

21-Oct-2008

S60 Platform: Contacts Model API Example
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.

14-Oct-2008

S60 Platform: DBMS Example
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.

10-Oct-2008

S60 Platform: Image Converter Example
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.

02-Oct-2008

S60 Platform: Calendar Interim API Example
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.

26-Jun-2007

Open C: FTP Client Example
This C/C++ code example demonstrates porting standard C software to the S60 platform. In this example, an open source FTP library (ftplib and qftp; released under GNU General Public License) written in C has been ported to Open C. In addition, a simple UI has been written in Symbian C++ to provide a GUI application. A document about porting experiences and example architecture is also included in the package. The updated version adds support for the GCCE compiler and Carbide.c++ v1.2 IDE. Main Symbian C++/S60 classes: CAknSingleNumberStyleListBox, CAknSearchField, CAknTextQueryDialog, CFileMan, StringLoader. C/Open C classes: connect, socket, setsockopt.

22-Dec-2006

S60 Platform: Bluetooth OBEX Example
This C++ code example provides a method for transferring objects or chunks of data from one device to another via Bluetooth. These chunks are typically files or other blocks of binary data. This example demonstrates how to run OBEX on top of the Bluetooth RFCOMM protocol, but OBEX can also be used with other transport media, such as IrDA and USB. In addition, the usage of a high-level messaging API, SendUI, is demonstrated. Main classes: TObexBluetoothProtocolInfo, TObexBaseObject, MObexServerNotify, CObexClient, CObexServer, CDocumentHandler, KPowerModeSettingNotifierUid, CSendUi, CSendAppUi.

22-Dec-2006

S60 Platform: Document Handler Example
This C++ example demonstrates how to use the Document Handler and the Recognizer to open and handle certain file types in a dedicated application. The example consists of three components: a caller application trying to open a specific file, a recognizer (a dll component implemented as an ECom plugin from S60 3rd Edition onwards) detecting the file extension, and a document handler opening the file. Note that for the recognizer, a developer certificate is needed due to its ProtServ capability requirement. Usage of the document handler is described in the S60 Platform: Document Handler API Developer's Guide document, available at www.forum.nokia.com. Main classes: CDocumentHandler, CApaDataRecognizerType.

03-Jan-2006

S60 Platform: World Server Example
This C++ example demonstrates the usage of the Symbian World Server. The example has methods for retrieving city/country-related information from the world server, writing new information to it, deleting information from it, performing basic calculations supported by the world server, and resetting the world server database to the original (ROM memory) state. The World Server API is supported until Symbian OS v9.1 (S60 3rd Edition) where it is deprecated and replaced by the Time Zone Localizer API (not covered in this example).

03-Nov-2005

S60 2nd Edition: FTP Example
This C++ example demonstrates the usage of the FTP (File Transfer Protocol) Service API that allows connecting to and disconnecting from a remote FTP server. The FTP library package provided within the example is required in order to use FTP. It is supported in S60 2nd Edition FP1, FP2, and FP3 devices.

24-May-2005

S60 Platform 1st/2nd Edition: Agenda Model API Example
This C++ example demonstrates how to add and modify anniversary entries using the Agenda Model API . The Agenda Model API is supported in S60 1st and 2nd Edition. It was replaced in Symbian OS v9.1 (S60 3rd Edition) with the Calendar Interim API. Important classes: CAgnAnniv, TAgnWhichInstances, MAgnProgressCallBack. Revision on August 31, 2006: Example renamed and minor editorial changes.

Location - S60/Symbian C++

19-Jan-2009

S60 Platform: Location Example
This 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.

16-Nov-2007

S60 Platform: Positioning Simulation Tool
This package contains an updated simulationpsy tool that simulates positioning technology on the device, thus responding to applications' requests for position information. An accompanying simpsyconfiguration tool provides a configuration UI for developers to select a simulation data file for the simulation PSY. The tools can be installed on S60 3rd Edition or newer devices from Nokia.

Games - S60/Symbian C++

02-Mar-2009

S60 5th Edition: Solitaire Game Example
This 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.

21-Jan-2009

Open C++: Memory Game Example
This 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 the 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.

14-Jan-2009

S60 Platform: Sudoku Game Example
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

13-Jun-2008

S60 Platform: 3D Game Engine Example with Sensor Support
This C++ example application demonstrates a simple 3D engine. The engine produces a simple car game where you can drive a car around a wide parking lot. Everything seen on the screen is rendered in 3D. The example utilizes OpenGL ES and the application dynamically scales on all screen sizes of S60 devices.

10-May-2007

S60 Platform: 2D Game Engine Example
This C++ code example demonstrates an application with custom 2D graphics. The application is designed to support various S60 devices with different amounts of colors and various screen resolutions and orientations. The application implements a simple 2D game with some basic game features (audio on/off, on-screen menu). The code example is based on an earlier published Symbian OS: 2D Game Engine Example, which supports, for example, S60 2nd Edition and Series 80 2nd Edition. Main classes: CFbsBitmap, RBackedupWindow.

23-Mar-2007

Symbian OS: 3D Game Engine Example v1.2
This C++ code example demonstrates a simple 3D engine. The engine produces a simple game where you can drive a car around a wide parking lot. Everything seen on the screen is rendered in 3D. The example utilizes OpenGL ES (supported from S60 2nd Edition, Feature Pack 2 onwards) and an own rendering implementation for platforms not supporting OpenGL ES. This example supports S60 2nd Edition and Series 80 2nd Edition devices. A separate example is available for S60 3rd Edition at www.forum.nokia.com. Main classes: OpenGL ES (API), CIdle, Math, CImageDecoder, CAknKeySoundSystem.

31-Jan-2007

S60 Platform: Isometric Adventure Game Example
This C++ code example demonstrates isometric content creation and usage of standard C/C++ libraries. The example also shows how to structure memory usage and how game state and resources can be freed / restored during run time. The key audience is considered to be C++ game developers who have developed games for desktop computers and also want to expand to S60 devices. The generic game architecture design considerations for mobile platforms are applicable to all game developers, or those interested in becoming (mobile) game developers. The package includes a game design document. General isometric game development issues are described in the Designing Isometric Adventure Games document that is available at www.forum.nokia.com.

Enterprise - S60/Symbian C++

27-Jun-2008

S60 3rd Edition: Creating Custom Message Type Modules (with Example)
Download this C++ document and code example to learn how to create Message Type Modules (MTMs) for S60 3rd Edition and later releases. The target audience is e-mail developers implementing their own e-mail protocol (for example, Push e-mail service), where preinstalled S60 platform e-mail MTMs (POP3, IMAP4) cannot be used. The package demonstrates how to develop and install an MTM, how to create an account (mailbox), how to create a simple viewer/editor implemented as a server application, how to provide support to send from other applications, and how to receive notifications of new messages. Message sending and receiving are echoed locally. Note that Symbian platform security imposes heavy capability requirements for MTMs (up to ALL -TCB capabilities) and thus the application has to be signed using the Manufacturer Approved Developer Certificate.

13-Feb-2008

S60 Platform: End-to-End Device Management Example
This example adds device management features to the earlier published Symbian OS: End-to-End HTTP API Example. It demonstrates how to implement a simple DM adapter in the S60 2nd and 3rd Edition devices that interact with a device management server, how to set up and use a custom DM server, how to store and update the data received from the DM server and to make the data available to another application. The example has been implemented using freely available back-end components (Apache, Funambol, and JBoss servers; MySQL database). The package consists of S60 client applications, WebUI components for JSP and PHP, and user account scripts for MySQL. Documentation for configuring the system is included in the package.

21-Feb-2007

Symbian OS: End-to-End HTTP API Example v1.3
This updated example is an HTTP reference implementation of an enterprise system that includes mobile clients for the S60 and Series 80 platforms (in Symbian C++), a server-based database, and Web portals (PHP and JSP implementations). Documentation is included in the package. In the updated version, the previously incomplete PHP Web UI functionality has been improved.

21-Feb-2007

Symbian OS: End-to-End Sockets API Example v1.3
This updated example is a Sockets reference implementation of an enterprise system that includes mobile clients for the S60 and Series 80 platforms (in Symbian C++), a server-based database, and Web portals (PHP and JSP implementations). Documentation is included in the package. In the updated version, the previously incomplete PHP Web UI functionality has been improved.

03-Nov-2005

S60 2nd Edition: FTP Example
This C++ example demonstrates the usage of the FTP (File Transfer Protocol) Service API that allows connecting to and disconnecting from a remote FTP server. The FTP library package provided within the example is required in order to use FTP. It is supported in S60 2nd Edition FP1, FP2, and FP3 devices.

Rate This

Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditFurlTechnocratiMagnoliaTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
User Rating: qfnZuserE5FratingQNx5E2E0000X
RDF Facets: qdcZtypeQUqfnZE45E78cludedFromGeneralE4CistingsQ qdcZtypeQUqfnTypeZE52esourceQ qdcZtypeQUqfnTypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqrdfsZE52esourceQ qfnZdistributionQUxhttpE3AE2FE2FforumE2EnokiaE2EcomE2FX qfnZtypeQUqfnTypeZE52esourceQ qfnZtypeQUqfnTypeZWebpageQ qmarsZlanguageQUxhttpE3AE2FE2FswE2EnokiaE2EcomE2FlanguageE2D1E2FenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4CistingsQ qrdfZtypeQUqfnTypeZE52esourceQ qrdfZtypeQUqfnTypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ