USERNAME PASSWORD LOST PASSWORD? REGISTER
"A Complete Mobile Application Development Environment"
Advertisement

Downloads
Documentation
Forums
Blog
Press
Bug Tracking
Creator IDs
Contact Us




Programming Guide

1 Introducing ACCESS Linux Platform

Principal Features of ACCESS Linux Platform Devices

Powerful, Flexible OS

Supported Application Types

Small Screen

Input Methods

Power

Storage

PC Connectivity

Options for Application Development

Native Linux

Garnet VM

Java

2 Inside ACCESS Linux Platform

Linux

Linux Kernel

Other Linux Components

X Server

NetFront™ Web Browser

Synchronization

Telephony Framework

Messaging Framework

Data Storage

Application Server and Framework

Application Packaging

Key Platform Components

Bundle Manager

Bundle Manager Architecture
The ACCESS Linux Platform Native Format
The Java Format
The Garnet VM Format

Notification Manager

Receiving Notifications
Handling Notifications
Sending Notifications

Exchange Manager

Handlers
Transports
Parameters
APIs

Garnet VM

Key Open-Source Components

GTK+

User Interface Widgets

libglade

GStreamer

OpenSSL

SQLite

BlueZ

Hiker Application Framework

3 Creating a Simple ACCESS Linux Platform Application

The Development Environment

SDK

Scratchbox

Rootstraps

Eclipse

Glade

Simulator and Emulator

Creating a Simple Project

Classic "Hello World"

The Manifest File
The Application Icon
Building the Application

A Proper "Hello World"

Creating the Eclipse Project
Building the User Interface
Writing the Source Code
Creating an Icon
Creating the Manifest
Writing the Makefile
Building the Application
Running the Application
Debugging the Application

4 Designing ACCESS Linux Platform Applications

Basic Design Principles

Pocket Size

Applications Should Limit Data Entry
Menus Are Hidden
No Button Toolbars
Less Is More

Fast and Simple

Perceived Speed Is Important
Minimize Required Steps
Minimize "Taps"
Be Consistent
Optimize Frequent Tasks

Low Cost, Long Battery Life, and High Value

Keep User Costs Down

Seamless Connection with Desktops

The Design Process

The Usual Approach

The Recommended Approach

Decide on Design Goals

Know Your Users

Develop User Scenarios

Propose an Implementation

Develop the Initial Design Concept

Complete the Design

ACCESS Linux Platform User Interface Elements

UI Widgets

GTK+
ACCESS Linux Platform User Interface Toolkit

Attention Manager

Attentions, Alarms and Notifications
When the Attention Manager Isn't Appropriate
Attention Manager Design
The Attention Manager Dialogs

Categories

Launching and Launch Codes

The Launch Sequence

Launch Codes

How Launch Codes are Passed

Notifications

Notification Manager

How Notifications Work

Broadcast Queues
Broadcast Priorities
Notification Names
Key Notifications
User-Created Notifications

Playing System Sounds

Playing a System Sound by Name

High-Performance Sounds

Playing a System Sound File

High-Performance Sounds

5 Constructing the User Interface

Form Objects

GTK+ Widgets

ACCESS Widgets

ACCESS Menu Bar
ACCESS Title Bar
ACCESS Progress Dialog
ACCESS Date Selector
ACCESS Time Selector
ACCESS Repeat Button
ACCESS Spin Button

Status Bar Manager and Status Gadgets

Dialogs

6 Coding for the User Interface

The ACCESS Linux Platform Application Model

Application Architecture

What is an ACCESS Linux Platform Application?
Model
Application State
Concurrent Access
Updates
Notification
Data References

Application Startup

Application Execution

Application Shutdown

Application Server

Application Launch

Handling Launch Codes

Relaunch Handlers

Registering a Relaunch Handler
An Example of Launching and Relaunching

Handling and Broadcasting Notifications

Registering for Notifications

Notification Type Strings
Registration Priorities
Application Installation Notifications
Global Settings Notifications
System Boot and Notification Persistence
When to Register for Various Notifications

Unregistering for Notifications

Receiving Notifications

Notification Callback Functions
Notifications Passed Through Launch Codes
Verifying the Notification Type

Handling Notifications

Sending Notifications

Notification-Specific Data
Broadcast Priority

The Main Event Loop

Supporting the Clipboard

Handling Hardware Keys

7 Activity Model

Activities and the Activity Model

Application Execution Modes

Transient Mode

Exchange Manager

The Role of the Exchange Manager

Services

Basic Procedures

Requesting a Service
Providing a Service

8 Data Storage

File I/O

Locating Application Data

Working Directory, and Home

SQL Abstraction Layer

PIM APIs

Design Philosophy

Query Model
Locking

Calendar

Inserting an Event
Locating an Event

Contacts

Contacts Database Structure
Locating a Person
Adding a Person
Deleting a Person

Memo

The Memo Database

Tasks

The Tasks Database

Launcher

Interacting with PIM Applications

Adding a Calendar Appointment

Viewing a Specified Date

Viewing a Specified Appointment

9 Communications Options

Exchange

Definitions

Service
Application Requesting a Service (Client Application)
Application Executing a Service (Handler)

The Role of the Exchange Manager

Basic Procedures

Requesting a Service
Providing a Service

Sending an Object as an Attachment

10 Improving Usability

Supporting Find

Registering with the Find Manager

Responding to a Find Request

Reporting Progress
Allowing the User to Cancel the Search

Alerts and Alarms

Setting an Alarm

Responding to an Alarm

Clearing an Alarm

Getting the User's Attention

The Alert Item Dialog Title
Icons and Images
The Text Areas
The Button Bar
Alert Sounds
Further Alert Item Dialog Customization
Posting the Alert
Handling a "Go To" Request
Exploring the Attention Manager

Preferences and Global Settings

Keys

Key Naming Conventions
Global Settings Keys and Access Rights

Values

Default Values

Data Security

Change Notification

System Preferences

Application Preferences

Writing Application Preferences
Reading Application Preferences
Setting Ownership and Permissions

Initial Key Installation

Default Settings XML File
Specifying UID, GID, and Mode

Data Backup

Transaction Support

Preference Panels

Preferences Framework
Panel List
Panel Combo Box
Initialization and Termination
Preference Panel Launching
Glade Support
Preference Panels as Applications
Packaging
Customization

Preferences Launcher

Power Management

Power Manager

Flight Mode

Interacting with the Power Manager

Device-Specific Information

Examples

11 Testing and Debugging

Using the Simulator

Command-Line Options for Starting the Simulator

Environment Variables

Networking

Debugging Drawing

Operating the Simulator

Entering Unicode Characters
Restricting the Cursor to the Simulator Window
Exiting an Application

Connecting to the Simulator

Using the Debugger

GDB

gdbserver

Debugging ACCESS Linux Platform Applications

TUI Mode

Debugging Executables

Starting gdbserver on the Remote Target
Starting GDB

Tracing

Using Traces

Tracing APIs

Setup

Filtering

Command Line Operations

Application Launching and Debugging

Exploring and Manipulating Global Settings

12 Adding HotSync Support

Making an Application "Sync-Aware"

1.LUIDs

2. Model categories as sync-able items

3. Track Changes

4. Register with Change Manager/ HotSync

5. Implement Data Store

13 Security

Security Policies

Signing Your Application

The Signing Process

Sign Tool

The Sign Tool Command Line Interface

Signing With the Test Certificate and Key

Sign Tool Usage Example

Bundle Installation

SPF and POSIX Group File Permissions

14 Background Processing

Specifying the Basic Behavior

Altering the Behavior Programmatically

Background Applications and the Launcher

Executing in the Background

Handling the Background to Foreground Transition

Launching Another Application

Multithreading

Inter-Process Communication (IPC)

ALP Abstract IPC

Using the Abstract IPC Mechanism
Advance Techniques

15 Volume Services

Overview

Notifications

Functionality Exposed by Volume Services

Manipulating Volumes

File System Info Blocks

The slot Field
AlpVolumeSvcsFSinfo Field Combinations

16 Improving Performance

Performance Tips

GTK/Glade UI

Notifications

Global Settings

SQL

XML

Libraries

Miscellaneous

Use of SQLite

Data Window

17 Where to go From Here

Third-Party Books

Additional SDK Documentation

Open Source Documentation

A Manifest File Reference

Manifest File Structure

The <manifest> Element

Resource File Paths

Applications and Preference Panels

The <application> Element

The <about> Element

The <notifications> Element

The <extractor> Element

The <export> Element

The <reference> Element

Phone Drivers

Connection Manager Plug-Ins

Postal Kit Plug-Ins

Exchange Manager Plug-Ins

Status Gadgets

Multimedia Extractors

Telephony Multiplexers

Telephony UI

Components

Add-Ons

B Exchange Verbs

Audio Application

Calendar Application

Camera Application

CAT Browser

Contacts Application

Document Viewer

Download Manager

Email Application

File Manager

Instant Messaging Application

Web Browser

Memo Application

Messaging Application

Mobile Telephony Server

Telephone Dialer

Picture Editor

Picture Manager

Garnet VM Preferences Panel

Security Preferences Panel

Tasks Application

Video Telephony Application

Video Player

Voice Recorder

Garnet VM Application Launcher

Mobile Server

Java Exchange Server

Java Application Launcher

OMA DM Server

WAP Push Library

Bundle Exchange Server

IMPS WAP Push Postal Plugin

MMS WAP Push Postal Plugin

SMS WAP Push Postal Plugin

C Using C++

Libraries

Standard C++ Libraries

Disallowed C++ Features

Virtual Methods

Constructors

Destructors

Assignment

Abstract Classes

Friends

Public or Private Data Members

Limit Default Arguments

Pass By Reference, Not Value

Pass Collections When Possible

Avoid Returning References As Function Results

Lifetime Of An Object

An Acceptable Case

Use of Const

Enums

Avoid Macros

Avoid Casts

Hide Storage Allocation

Avoid Allocating Dynamic Memory

Hide Allocation Inside a Class

Use a Pointer Class Wherever Possible

Use Global Names Only For Classes

Design Guidelines

Composition Versus Inheritance

Read-Only Vs. Semantic Const

 
 


© 2008 ACCESS Developer Network    |    Joomla! is Free Software released under the GNU/GPL License.    |    ACCESS Global Website
Events Support Community Platforms Home