G5 | Android for Industrial System Control |
Building friendly interfaces for industrial systems with Android
Objectives
|
- Engineers that must develop Android applications to control industrial systems.
- Architects that want to understand the benefit they may obtain from using Android in their products.
- Install Android on an embedded platform
- Interface an Android platform with an external system
- Create a typical Android Embedded application.
- Basic Linux user experience
- Basic C (or C++) programming skills
- Due to the high degree of advanced Java techniques being used, good Java development skills are mandatory
- See our L4G - Java for Android course for quickly learning the necessary Java techniques
- Theoretical course
- PDF course material (in English) supplemented by a printed version.
- The trainer answers trainees' questions during the training and provide technical and pedagogical assistance.
- Practical activities
- Practical activities represent from 40% to 50% of course duration.
- Code examples, exercises and solutions
- One PC (Linux ou Windows) for the practical activities with, if appropriate, a target board.
- One PC for two trainees when there are more than 6 trainees.
- For onsite trainings:
- An installation and test manual is provided to allow preinstallation of the needed software.
- The trainer come with target boards if needed during the practical activities (and bring them back at the end of the course).
- Downloadable preconfigured virtual machine for post-course practical activities
- At the start of each session the trainer will interact with the trainees to ensure the course fits their expectations and correct if needed
- Any embedded systems engineer or technician with the above prerequisites.
- The prerequisites indicated above are assessed before the training by the technical supervision of the traineein his company, or by the trainee himself in the exceptional case of an individual trainee.
- Trainee progress is assessed in two different ways, depending on the course:
- For courses lending themselves to practical exercises, the results of the exercises are checked by the trainer while, if necessary, helping trainees to carry them out by providing additional details.
- Quizzes are offered at the end of sections that do not include practical exercises to verifythat the trainees have assimilated the points presented
- At the end of the training, each trainee receives a certificate attesting that they have successfully completed the course.
- In the event of a problem, discovered during the course, due to a lack of prerequisites by the trainee a different or additional training is offered to them, generally to reinforce their prerequisites,in agreement with their company manager if applicable.
Course Outline
- Linux and Android
- Android licensing
- 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 |
- 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) |
- 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 |
- Activities life cycle
- Activity callbacks
- onCreate
- onStart…
- 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 |
- Layouts
- Layout kinds
- Components properties related to layouts
- Resources
- Strings
- images
- layouts…
- 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 |
- 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...) |
- 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 |
- 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 |
- 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 |
- 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 |
- 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 |
- Connections management
- Sockets
- HTTP requests
- WebView control
- Web Services
Exercise: | Socket communications with a distant management application |
- 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 |