Google officially announced Android O on May 17 at its developer conference, Google I/O. Android O is now available to ordinary users. As in the past, Google had initially released a developer preview version, to give them an overview of the next generation of Android[1]. Let’s take a look at what Android O means for Bluetooth® developers.

First of all, I’d like to tell you how Android versions are named. Google uses letters of the alphabet, allocated at each new release in alphabetical order. Those letters tend to be associated with a dessert name or type of confectionary (presumably just for fun!) but also have a more traditional version number too. For example:

  • Android 4.3, elly Bean
  • Android 4.4, itKat
  • Android 5.0, ollipop
  • Android 6.0, arshmallow
  • Android 7.0, ougat
  • Android 8.0, (rumored to be short for “Oreo” )

Although Android’s version naming is interesting, it may surprise you to learn that the aim of this article is not to discuss the names of desserts, biscuits and so on. In fact, my aim is for everyone to understand the next generation of the Android operating system and its APIs and what the new Bluetooth features are that it contains.

From the latest Android developer reference guide, we can see that there are two major sets of changes relating to Bluetooth. Support for aspects of Bluetooth 5 and some changes relating to Bluetooth audio.

Bluetooth 5 Support

Bluetooth® 5 was released last December and consists of three major features: 4x longer range, 2x higher speed and 8x ADV packet length. The Android O APIs include changes relating to Bluetooth 5 For example:

a. setPreferredPhy method

void setPreferredPhy(int txPhy,     int rxPhy,      int phyOptions)

With the setPreferredPhy method, you can configure the Bluetooth low energy PHY layer for your Android device. The physical layer of Bluetooth 5 low energy includes three options: 1M PHY, 2M PHY, and Coded PHY.

The parameters to setPreferredPhy, txPhy and rxPhy, are defined as follows:

The parameter for setPreferredPhy, phyOptions, accepts the following values:

setPreferredPhy allows, therefore, the selection and configuration of Bluetooth 5 long range,  Bluetooth 5 high speed or the LE1M PHY which is compatible with both Bluetooth 4.x and Bluetooth 5 devices.





Compatible with 4.0, 4.1, 4.2, 5.0

High speed


Long range (x2)


Long range (4x)

But one thing to emphasize here: the long range and high speed features are supported only if the Android device hardware supports Bluetooth 5.

For more detail about the long range and high speed Bluetooth APIs in Android O, please refer to

b. ADV Extension

In Android O there are also some changes to the ScanRecord.getBytes()[2] method relating to record length. When an Android application starts a Bluetooth low energy scan, it calls startScan(ScanCallback) in code. ScanCallback is an object which implements a callback function and it is invoked as advertising packets are received. The call to the callback function passes a ScanRecord object as a parameter and the ScanRecord.getBytes() method returns the raw bytes of the scan record i.e. of the advertising packet.

Android O makes the following changes to the length of the data that ScanRecord.getBytes() method returns: the method makes no assumptions as to the number of bytes in the advertising packet. Therefore, applications should not rely on there being any particular minimum or maximum number of bytes returned. Instead, they should evaluate the length of the resulting array. Bluetooth 5 devices may return a data length exceeding the previous maximum of ~60 bytes. Note that if a remote device does not provide a scan response, fewer than 60 bytes may be returned.

Meanwhile, Bluetooth 5 support in Android O includes other features relating to the ADV extension, like below method, startAdvertisingSet:

void startAdvertisingSet (AdvertisingSetParameters parameters,                AdvertiseData advertiseData,               AdvertiseData scanResponse,                PeriodicAdvertisingParameters periodicParameters,               AdvertiseData periodicData,                   int duration,                   int maxExtendedAdvertisingEvents,               AdvertisingSetCallback callback)

“Advertising Sets” are a feature of Bluetooth 5 which allows multiple, distinct sets of advertising configuration parameters, including the advertising data payload and timing parameters, to be set up and the Bluetooth controller informed of them.

From the startAdvertisingSet method, you can see that we also have support for the new Bluetooth 5 periodic advertising capability as well as the extended advertising feature. You’ll find more information in the Android developer reference guide:

Bluetooth Audio

Android O also released additional support for Sony LDAC[3]. LDAC is an audio coding technology developed by Sony that enables the transmission of High-Resolution (Hi-Res) Audio content, even over a Bluetooth® connection. This technology can improve the transmission throughput of Bluetooth audio signals at a maximum of 990kbps. With LDAC support, LDAC-enabled headsets and speakers would be able to connect with Android O devices and have a high-quality audio experience.

LDAC has 3 options for transmission rate:

  • 990kbps, Quality priority mode
  • 660kbps, Normal mode
  • 330kbps, Connection priority mode

It looks like Android O also supports Qualcomm’s aptX and aptX-HD as well, giving developers plenty of options for using audio over Bluetooth.

Device Deployment

Currently, Android O developer preview is still in Beta and is available to test on some Nexus and Pixel devices, such as Nexus 5X, 6P, and Player, as well as Pixel, Pixel XL, or Pixel C device.

It’s Time for Bluetooth 5

Developers, don’t hesitate! It’s time for you to start developing applications which exploit the power of Bluetooth 5!

[1] O-MG, the Developer Preview of Android O is here!
[2] Android O behavior changes – Bluetooth,
[3] LDAC introduction,

How to Do Stuff with Bluetooth® Technology

Got a robot dog you want to remote control? You came to the right…

An Introduction to the Bluetooth LE Security Study Guide

My house has locking doors and windows, an alarm system, and several security cameras.…

Why Bluetooth Technology is the Developer’s Swiss Army Knife

Members of the Bluetooth® community are continuously innovating. Over the last two decades, members have…

Updates to the Bluetooth Internet Gateway Study Guide

According to the ABI report Installed Base of IoT Devices by Connectivity Technology, published…

In Case You Missed It: What’s New With Blue This Summer

The Bluetooth® developer community is always pushing the technology forward, and this summer has…

New Core Specification v5.3 Feature Enhancements

One of the key reasons why Bluetooth® technology has emerged as the global wireless…

Bluetooth® Core Specification Version 5.3 Feature Enhancements

Bluetooth® Core Specification version 5.3 includes several feature enhancements with the potential to improve…

Connect: Car Access Demo

In this demo, Texas Instruments will discuss and demonstrate Bluetooth 5.1 and its cutting…

Wireless Connectivity Options for IoT Applications - Commercial Lighting

Industry 4.0 is no longer a thing of the future. The term describes the…

Designing and Developing Bluetooth® Internet Gateways

Learn about Bluetooth internet gateways, how to make them secure and scalable, and design and implement your own working prototype gateway and web application for use with either Bluetooth LE Peripherals or with Bluetooth mesh networks.

An Introduction to Bluetooth Low Energy for Swift Developers

All smartphones support Bluetooth® Low Energy (LE) and it is used in all manner…

Building a Sensor-Driven Lighting Control System Based on Bluetooth® Mesh

A technical examination of which Bluetooth mesh models to use in different types of…

How Bluetooth Low Energy Works: 21 Interesting Facts

Whether you’re a beginner or an expert in Bluetooth Low Energy development, it’s always…

How to Deploy BlueZ on a Raspberry Pi Board as a Bluetooth Mesh Provisioner

This step-by-step study guide will teach you: How to rebuild the kernel on a…

The Bluetooth LE Security Study Guide

Learn about fundamental security concepts, the security features of Bluetooth Low Energy, and gain some hands-on experience using those features in device code.

How Bluetooth 5 Increases the Achievable Range of a Bluetooth Low Energy Connection

Texas Instruments offers their theory on how to achieve long range with a Bluetooth…

Testing Long Range (Coded PHY) with Nordic Solution (It Simply Works)

There has been a lot of discussion and confusion about testing the long range…

 Get Help