Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Things - The IoT platform for everyone.

Android Things - The IoT platform for everyone.

Presented at Devconf South Africa.

In this presentation, Rebecca will cover the new platform recently announced by Google, called Android Things. She will cover an introduction to Android Things, basics of getting started with the platform and how any developer without electronics experience can build IoT apps with Android Things. A few use cases and examples will be shown in this session, along with how you can use the existing android libraries with your next IoT project.

Rebecca is the Android Engineering Lead at DVT based in Johannesburg, South Africa. She loves working with new technology and has a passion for making great user friendly products. In her spare time, she manages her open source app, Book Dash, which contains free African story books. She speaks at conferences and local meetups mainly about Android. When not coding, she can be found baking and travelling the world. Previous talks : https://riggaroo.co.za/talks/

Rebecca Franks

March 09, 2017

More Decks by Rebecca Franks

Other Decks in Programming


  1. Hello Rebecca Franks Android Engineering Lead at Dynamic Visual Technologies

    Google Developer Expert for Android riggaroo.co.za @riggaroo
  2. Cameras Gateways HVAC Control Smart Meters Point of Sale Inventory

    Control Interactive Ads Vending Machines Security Systems Smart Doorbells Routers Energy Monitors Asset Tracking Fleet Management Driver Assist Predictive Service Ideal for powerful, intelligent devices that need to be secure.
  3. How is Android Things different? Android Studio Android SDKs &

    Developer Tools Firebase Libraries Google Cloud Platform SDKs Any other compatible Android/Java libraries...
  4. Cons • Only Dev Preview • Weave not yet available

    for Android Things • Very new - Not many examples online - mostly Python • Some APIs not supported - ie hardwareAcceleration • Closed Source
  5. Components Breadboard - Construction base for prototyping electronics Jumper Wire

    - Used to interconnect the components of a breadboard
  6. LEDs - Emits visible light when an electric current passes

    through it Push Switches - Allows electricity to flow between its two contacts Components
  7. Ohm’s Law The current through a conductor between two points

    is directly proportional to the voltage across the two points. V = I * R V is Voltage (volts) I is Current (amps) R is Resistance (ohms) I = 0.023A V = 5V R = 5V / 0.023A R = ± 217 ohms
  8. Integrating with Hardware GPIO PWM I2C SPI UART Input Sensors

    GPS Peripheral Driver Library Peripheral I/O User Drivers
  9. • A Raspberry Pi 3 or alternative - Running Android

    Things • Create standard project in Android Studio • Add to app level build.gradle: provided 'com.google.android.things:androidthings:...' Getting Started
  10. <application ...> <uses-library android:name="com.google.android.things"/> <activity ...> ... <!-- Launch activity

    automatically on boot --> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.IOT_LAUNCHER"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application> AndroidManifest.xml
  11. Button button = new Button("BCM6",Button.LogicState.PRESSED_WHEN_LOW); button.setOnButtonEventListener(new Button.OnButtonEventListener() { @Override public

    void onButtonEvent(final Button button,final boolean pressed) { //... Log.i(TAG, "Button value changed:" + pressed); ledGpio.setValue(pressed); } }); Button Press compile 'com.google.android.things.contrib:driver-button:0.2'
  12. //get access to the pin PeripheralManagerService service = new PeripheralManagerService();

    ledGpio = service.openGpio("BCM6"); ledGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); ledGpio.setValue(true); //remember to close the peripheral ledGpio.close(); Turn on an LED
  13. Turn it on or off using Firebase Realtime DB FirebaseDatabase.getInstance().getReference("ledKitchen")

    .addValueEventListener(new ValueEventListener() { @Override public void onDataChange(final DataSnapshot dataSnapshot) { Boolean value = (Boolean) dataSnapshot.getValue(); ledGpio.setValue(value); //.. handle exceptions } //.. });
  14. final DatabaseReference onlineRef = firebaseDatabase.child(".info/connected"); final DatabaseReference isPowerOnRef = firebaseDatabase.child("/online");

    onlineRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(final DataSnapshot dataSnapshot) { if (dataSnapshot.getValue(Boolean.class)) { isPowerOnRef.setValue(true); isPowerOnRef.onDisconnect().setValue(false); } } //.. }); Electricity Monitor - Firebase
  15. Rebecca Franks riggaroo.co.za @riggaroo Google's IoT Developers Community https://g.co/iotdev Google's

    IoT Solutions https://iot.google.com Android Things SDK https://developer.android.com/things
  16. • https://www.myelectronicslab.com/tutorial/raspberry-pi-3-gpio-model-b- block-pinout/ • https://developers.google.com/weave/ • https://techcrunch.com/2015/10/24/why-iot-security-is-so-critical/ • https://github.com/androidthings/sample-simplepio/ •

    https://developer.android.com/things/index.html • https://github.com/riggaroo/android-things-electricity-monitor • https://github.com/riggaroo/android-things-distributed-piano • https://github.com/riggaroo/android-things-button-examples Links & References