First Day
Android Architecture Overview
- Linux and Android
- Android licensing
The Android Build System
- The Android code base
- Building Android
- The Android build environment
- The Android build system
- The Android.mk files
- Adding new components to the build system
- Java components
- Native components
- Applications
Exercise: |
Compiling the Android platform |
Android Application Structure
- Structure of an Android Application
- Android application components
- Activity
- Service
- Broadcast receiver
- Content provider
- Manifest file
- Application components declaration
- Permissions
Exercise: |
Hello world application |
- User interface configuration
- Depending on the language
- Depending on screen characteristics (dimensions, orientation…)
Exercise: |
Multilingual Hello world (Deutsch-English-Français) |
The Android System Initialization
- Android properties
- The Android initialization
- Structure of the init process
- The Android initialization language
- The Dalvik Java virtual machine
- The Dalvik machine structure
- The Dalvik bytecodes
- The Dalvik “zygote” process
Exercise: |
Tailoring Android initialization to start additional system daemons |
Second Day
Activities and user interface
- Activities life cycle
- Activity callbacks
- Intents and Intents filter
- The Intent class Intent
- Declaring Intent filters in manifest files
- Activity invocation with and without results
- startActivity
- startActivityForResult
- Tasks (activities stack) and navigation between activities
Exercise: |
Writing a simplified parameter entry application |
Defining user interface layout
- Layouts
- Layout kinds
- Components properties related to layouts
- Resources
- Views
- Buttons, labels and edition fields
- View instantiation from a resource
- Specialized views
- ListView
- Data binding (Adapter class and subclasses)
- User Input
- Touch screen and keyboard
- Software keyboard management
- Dialogs and User notifications
- Dialog box
- Status Bar
- Toast
Exercise: |
Writing a simple Command and Control application |
The Android Sensors
- Sensors in Android
- The sensor types
- The Sensor Manager
- Accessing Sensors
|
- Framework Architecture
- Sensor discovery
- Sensor Calibration
Exercise: |
Getting and displaying a sensor value (temperature...) |
Third day
Android as a Distributed System
- The Android Binder architecture
- Binder implementation
- The AIDL language
- The AIDL tool
- Binder Java classes
- Writing Application Services
- System services
- What is a system service
- Static and context-dependent services
- Structure of a system service
- Adding a new system service
- The system ServiceManager process
Exercise: |
Coding a service to control an external device |
Android Native Interface
- The Android NDK
- Defining Java methods in C++
- JNI for Android
- Integrating native code in a package
- Using the NDK from Eclipse
- Debugging native code
Exercise: |
Displaying data fetched from an external device |
Advanced User Interface
- User interface and multithreading
- Accessing views from another thread
Exercise: |
Multi-threaded user interface with buttons and progress bars |
- Custom control creation
- By deriving directly the View class
- By deriving an existing view
- 2D Drawing
- Canvas and Shapes
- Drawing from the main thread
- Drawing from another thread
Exercise: |
Displaying a graph of sensor values |
Data management
- Storage
- Shared preferences
- Internal storage
- External storage
- SQLite
- Content provider
- Communication with a content provider
- Implementing a content provider
Exercise: |
Logging data fetched from the external device and displaying historical data |
Fourth Day
Broadcast Receivers
- Installing a Broadcast Receiver
- Static creation of broadcast receivers
- Dynamic instantiation and registration
- Broadcasting intents
- Normal broadcast
- Ordered broadcast
- Using PendingIntent in broadcast receivers
- System broadcasted events
Exercise: |
Handling process alarms in a custom broadcast receiver |
Networking
- Connections management
- Sockets
- HTTP requests
- WebView control
- Web Services
Exercise: |
Socket communications with a distant management application |
The Hardware Abstraction Layer
- Why a HAL?
- HAL Component Structure
- Defining HAL components
- Loading and using HAL component
- The standard HAL components
- Graphics
- Audio
- Camera
- Bluetooth
- GPS
- Sensors
Exercise: |
Create a simple HAL component |
|