Android Things IoT Developer Preview 2 released

Google has released the Android Things IoT Developer Preview 2. Previous Android Thing Developer Preview 1 was announced in December 2016. The latest OS Preview build brings a number of new features, including support for USB Audio to the Hardware Abstraction Layer for the Intel Edison and Raspberry Pi 3. The build also brings support for Intel’s Joule with the USB Audio.

The Native PIO library is now supported in the Android Native Development Kit (NDK), which will provide access to the peripheral I/O from C/C++ code. This adds on top of a feature that was included in the original Developer Preview, which was the ability to create user drivers. Check out more details below.

New in Android Things Developer Preview 2:

Intel Joule support

Android Things IoT Developer Preview 2 is now supported on the Intel® Joule compute module. Learn more about this device and its capabilities on the developer kits page.

Native peripheral API

Access to peripheral I/O from C/C++ code is now supported using the Native PIO library for the Android NDK. Explore the new Native PIO sample on the samples page to get started.

USB audio support

Devices without onboard analog audio capabilities now support USB microphones and speakers for audio recording and playback. For Preview 2, this includes the following platforms:

  • Intel® Edison
  • Intel® Joule
  • Raspberry Pi

TensorFlow sample

We have created a sample that shows how to use TensorFlow on Android Things devices. This sample demonstrates accessing the camera, performing object recognition and image classification, and speaking out the results using text-to-speech (TTS).

Visit the samples page to learn more.

Peripheral manager reporting

Developers can now inspect the state of active peripheral ports on the device during development and debugging using the dumpsys command:

$ adb shell dumpsys com.google.android.things.pio.IPeripheralManager

Known Issues

  • System power management is currently disabled. Devices will not suspend and wake locks are not necessary.
  • Bluetooth APIs are currently disabled.
  • USB APIs are currently disabled.
  • Dangerous permissions requested by apps are not granted until the next device reboot. This includes new app installs and new <uses-permission>elements in existing apps.
  • Apps using Google Play Services APIs must compile against SDK version 10.0.0 or newer.
  • Google Play Services requires 2-3 minutes on first boot to pre-optimize dex. App installs are blocked until this process is complete.
  • Hardware graphics acceleration (OpenGL) is not currently enabled. APIs dependent on this functionality (such as WebView) are not available.

Peripheral I/O

  • Peripherals do not clear or reset after calling.close() Outputs will retain their state and serial ports may continue to transmit previously buffered data.
  • GPIO pins cannot be used as an output if they were previously enabled as an input with an edge trigger enabled since the last reboot.

User Drivers

  • User sensors cannot currently be unregistered manually. They are unregistered automatically when the app process terminates.
  • User sensors only support continuous and on-change sensors. One-shot and special reporting modes may not function as expected.

Edison

  • RESET: The RESET button on the Arduino breakout board can temporarily leave your board in an inconsistent state where GPIO pins are named GPXX instead of IOXX until power is disconnected. Instead of using the onboard RESET button, disconnect and reconnect power to reboot.

Joule

  • Camera: Camera support is not yet enabled.
  • I/O: Edge triggers are currently only supported on the following GPIO ports: DISPLAY_0_BIAS_EN, DISPLAY_0_BKLT_EN, DISPLAY_0_RST_N,FLASH_RST_N, FLASH_TORCH, FLASH_TRIGGER.
  • I/O: Shared pins initially configured for GPIO cannot be re-used for any other function (SPI, UART, etc.) until after the next reboot.

Pico

  • Network: Ethernet is currently disabled.
  • I/O: Gpio.getValue() always returns false when the pin is configured as an output.

Raspberry Pi

  • Network: Wi-Fi cannot connect to the internet if Ethernet is also connected to a network without internet access.
  • Camera: A new CameraCaptureSession cannot be created with more than one target output surface.
  • Camera: The first request in any CameraCaptureSession always queues two images. This can cause each subsequent CaptureRequest in the same session to return a buffered frame from a previous capture.
  • I/O: Shared pins BCM13/PWM0 and BCM18/PWM1 cannot be used for GPIO if they were previously enabled for PWM since the last reboot.
  • I/O: GPIO pins BCM4, BCM5, and BCM6 are internally pulled up to 3.3V when used as inputs.

Currently, Android Things Developer Preview 2 is available on the Intel Edison, Intel Joule, NXP Pico, and Raspberry Pi 3 development boards.

Download Android Things Developer Preview 2