Android OS

embedded-android-platform.png

About Android

The Mobile OS

Android is a mobile operating system - it includes features that make it easier to use applications on mobile devices, such as phones and tablets. Mobile devices and applications face a remarkably large and complex set of requirements. Most embedded products face some of these challenges, but mobile devices are perhaps unique in facing so many. They include:

  • Extremely high user expectations

  • High quality and high performance graphics display

  • Touchscreen interface (multi-touch + gesture input is expected)

  • High speed storage Integrated camera - image capture, video capture

  • High quality audio processing

  • High quality video playback with a large range of codec

  • Very high information security risks

  • Frequent Over-the-Air system and application updates

  • Battery powered device

    • Complex power management

    • Integrated battery charging and monitoring

  • Internet connected

  • Digital comms diversity

    • Mobile data, WiFi, Ethernet, USB, Bluetooth, BluetoothLE, NFC

    • Highly variable comms performance and availability

Not Only for Mobile Devices

Most people are familiar with Android on phones and tablets. But a device does not need to be “mobile” to face many of the challenges that Android addresses.

It is worth considering using Android if your product has a high resolution screen and requires direct user input (buttons or touchscreen). The more mobile-like properties your device has, the more likely Android is to be a good choice.

With our experience of Android, embedded Linux and low-level RTOSs we can work with you to choose the most effective platform for your product.

More Than Just an OS

Android is much more than an operating system, it is an entire hardware and software ecosystem. When you choose to develop an Android based product you benefit from:

  • A huge amount of support from component manufacturers, including:

    • Android Board Support Packages for development kits and reference designs

    • Android device drivers and HAL support

    • Android-specific example code and technical support

  • A global community of developers

  • Widely used build systems and test frameworks

  • A vast Open Source software library

  • Frequent security updates and bug fixes

    • Google does the hard work of monitoring changes to all the components that make up recent versions of Android and determines which changes are important

    • Google publishes the latest set of security and bug fix patches every month

AOSP - The Android Open Source Project

AOSP is the foundation of Android. Companies such as Google and Samsung start with AOSP and add their own secret sauce to their Android products.

The Android products that most of us are familiar with are more than AOSP. They all include the Google Mobile Services (GMS) package. GMS includes Google Maps, the Google Play Store, Chrome mobile browser, Integrated Google search and much more. Anyone can use AOSP, but to include GMS there are a number of regulatory, test, certification and licensing hurdles that must be negotiated with Google.

GMS is really a requirement if your product is a mass-market consumer device, where the user expects to have access to those Google services it provides. If the product “Has to be Android”, rather than just Android-like, then you will need GMS.

Typically, the sorts of products we are involved with do not need GMS. AOSP is used because it solves many of the technical issues faced by the product, not because the product “Has to be Android”.


Using Android In Your Product

Many hardware vendors provide a version of Android that runs on a development kit or reference design. This is an essential starting point but it is only the very first step in developing your product.

The Android kernel makes use of the Linux kernel, but Android is very different to a typical Linux based embedded system. It is common for experienced Linux developers, believing the two systems to be similar, to start on an Android project only to find themselves facing a very steep learning-curve.

Rather than spending development time on getting Android working on your hardware, you want to focus your time on making your application work well. We can help with both of these areas.

Android applications are almost always written in Java but use an Android-specific Java Runtime Environment. This is something your developers will need to become familiar with.

You can write application code in C/C++ and other languages, but you will need to use the Android NDK (Native code Development Kit) to integrate this code into a Java application.

Specialist platform services and high performance code are usually written in C/C++ with an NDK Java class interface provided so that Java application code can make use of them. It can be a little tricky to design an NDK interface that makes it easier to write the Java code. A lot of experience is needed to ensure the interface is efficient and correctly manages Java object lifetimes.


Our Android Knowledge

How We Can Help

We can work with you at a level that best suits your company’s immediate and long-term development needs, including:

  • Providing a complete platform and application development service - we can cover all software areas and develop a turn-key product to your specifications.

  • Providing lower-level platform development support - working with your chosen hardware, we can give you a stable operating system and free up your development team to focus on the application.

  • Working alongside and aiding your development team - we can directly assist with any challenging issues while also easing their learning-curve. We can help establish strong development and maintenance practices as a core competency of your team.

Key Android Tech Areas

  • Native code Development Kit (NDK)

  • Compatibility Test Suite (CTS)

  • Board Support Packages (BSP)

  • Hardware Abstraction Layer (HAL)

  • Over-the-Air updating (OTA) - packaging, update scripts (Edify) and recovery

  • Kernel drivers, device tree

  • Boot loader, fastboot

  • SELinux

  • Android init

  • Android build system - porting packages to Android build


Our Experience

Our work with ikeGPS on their IKE 4 product is a great example of how we can help with Android development. We took care of all the hardware integration issues and framework wrangling to ensure IKE developers could focus solely on their application.

Read more about the IKE 4 and how we assisted ikeGPS with their Android development.

 
ike_device-with-overlay.png

Tech Areas

Our Key Areas of Strength


Next Steps

More Software Capabilities

Find out more about our other capabilities and how we can help.

 

Contact

If you are looking for help with a project or product idea, we'd love to talk.