Android for the BeagleBone Black
By Aravind Prakash and Andrew Henderson
()
About this ebook
- Design custom apps that interact with the outside world via BeagleBone Black
- Modify Android to recognize, configure, and communicate with sensors, LEDs, memory, and more
- A step-by-step guide full of practical Android app examples that will help the users to create Android controlled devices that will use BeagleBone as hardware
If you are an Android app developer who wants to experiment with the hardware capabilities of the BeagleBone Black platform, then this book is ideal for you. You are expected to have basic knowledge of developing Android apps but no prior hardware experience is required.
Related to Android for the BeagleBone Black
Related ebooks
Near Field Communication with Android Cookbook Rating: 0 out of 5 stars0 ratingsAndroid Application Programming with OpenCV Rating: 3 out of 5 stars3/5Raspberry Pi 3 Projects for Java Programmers Rating: 0 out of 5 stars0 ratingsBeagleBone By Example Rating: 0 out of 5 stars0 ratingsLearning BeagleBone Python Programming Rating: 0 out of 5 stars0 ratingsInstant MinGW Starter Rating: 0 out of 5 stars0 ratingsRaspberry Pi Super Cluster Rating: 0 out of 5 stars0 ratingsRaspberry Pi Server Essentials Rating: 0 out of 5 stars0 ratingsRaspberry Pi Android Projects Rating: 0 out of 5 stars0 ratingsRaspberry Pi Robotics Essentials Rating: 0 out of 5 stars0 ratingsBeagleBone Essentials Rating: 0 out of 5 stars0 ratingsIntel Galileo Essentials Rating: 0 out of 5 stars0 ratingsXamarin Mobile Application Development for Android - Second Edition Rating: 0 out of 5 stars0 ratingsMastering Android NDK Rating: 0 out of 5 stars0 ratingsMalware Sandbox A Clear and Concise Reference Rating: 0 out of 5 stars0 ratingsAndroid (operating system) A Clear and Concise Reference Rating: 0 out of 5 stars0 ratingsOpenCV Android Programming By Example Rating: 0 out of 5 stars0 ratingsDesigning Your Website to Use Less Energy: Green Energy Websites Rating: 0 out of 5 stars0 ratingsThe Strange Case of Dr. Jekyll and Mr. Hyde (Illustrated) Rating: 4 out of 5 stars4/5Practical Django 2 and Channels 2: Building Projects and Applications with Real-Time Capabilities Rating: 0 out of 5 stars0 ratingsMastering OpenCV 3 - Second Edition Rating: 0 out of 5 stars0 ratingsFlash Development for Android Cookbook Rating: 3 out of 5 stars3/5Internet of Things with Intel Galileo Rating: 0 out of 5 stars0 ratingsLearning Embedded Android N Programming Rating: 0 out of 5 stars0 ratingsBanana Pi Cookbook Rating: 0 out of 5 stars0 ratingsSmart Home Automation with Linux and Raspberry Pi Rating: 3 out of 5 stars3/5Programming the BeagleBone Black: Getting Started with JavaScript and BoneScript Rating: 0 out of 5 stars0 ratingsMastering the Raspberry Pi Rating: 3 out of 5 stars3/5Ubuntu MATE: Upgrading from Windows or OSX Rating: 0 out of 5 stars0 ratingsNW.js Essentials Rating: 0 out of 5 stars0 ratings
Programming For You
Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsPython Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5C# Programming from Zero to Proficiency (Beginner): C# from Zero to Proficiency, #2 Rating: 0 out of 5 stars0 ratingsPython Data Structures and Algorithms Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5SQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5HTML in 30 Pages Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Learning JavaScript Data Structures and Algorithms Rating: 5 out of 5 stars5/5Python QuickStart Guide: The Simplified Beginner's Guide to Python Programming Using Hands-On Projects and Real-World Applications Rating: 0 out of 5 stars0 ratingsThe Most Concise Step-By-Step Guide To ChatGPT Ever Rating: 3 out of 5 stars3/5Linux Command-Line Tips & Tricks Rating: 0 out of 5 stars0 ratingsCoding All-in-One For Dummies Rating: 0 out of 5 stars0 ratings
Reviews for Android for the BeagleBone Black
0 ratings0 reviews
Book preview
Android for the BeagleBone Black - Aravind Prakash
Table of Contents
Android for the BeagleBone Black
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Introduction to Android and the BeagleBone Black
Looking back on Android and BeagleBone Black development
Shopping for the hardware essentials
The FTDI cable
Power supply
Breadboard and the mounting plate
MicroSD cards
Learning about the hardware you'll interface with
General-purpose components
The AdaFruit memory breakout board
The AdaFruit sensor breakout board
Preparing the breakout boards
Installing Android on the BeagleBone Black
Downloading a premade Android image
Creating your Android microSD card using Windows
Creating your Android microSD card using Linux
Summary
2. Interfacing with Android
Understanding the Android HAL
Android managers
The HAL development workflow
Working with PacktHAL
Installing PacktHAL
Preparing PacktHAL under Linux
Preparing PacktHAL under Windows
The PacktHAL directory structure
Preparing Android for PacktHAL
Pushing PacktHAL files under Linux
Pushing PacktHAL files under Windows
Setting up the Android NDK for PacktHAL
Adding the header to the NDK under Linux
Adding the header to the NDK under Windows
Multiplexing the BBB pins
The kernel Device Tree and capemgr
Defining a cape
Summary
3. Handling Inputs and Outputs with GPIOs
Understanding GPIOs
Nuts and bolts of GPIO
GPIO access methods under Android
Pros and cons of the file I/O method
Pros and cons of the memory-mapping method
Preparing Android for GPIO use
Building a GPIO-interfacing circuit
Constructing the circuit
Checking your wiring
Including PacktHAL within your apps
Understanding the Java Native Interface
Creating a new app project that uses PacktHAL
Building PacktHAL under Windows
Building PacktHAL under Linux
Exploring the GPIO example app
Installing the app and source under Windows
Installing the app and source under Linux
The app's user interface
Calling the PacktHAL functions
Using the PacktHAL GPIO functions
Summary
4. Storing and Retrieving Data with I2C
Understanding I2C
Devices that use I2C
Multiplexing for I2C on the BBB
Connecting to I2C via the P9 header
Multiplexing for I2C
Representing I2C devices in the Linux kernel
Preparing Android for FRAM use
Building an I2C-interfacing circuit
Connecting the FRAM
Checking the FRAM connection with I2C tools
Exploring the I2C FRAM example app
The app's user interface
Calling the PacktHAL FRAM functions
Understanding the AsyncTask class
Learning the details of the HardwareTask class
Summary
5. Interfacing with High-speed Sensors Using SPI
Understanding SPI
Multiplexing for SPI on the BBB
Representing SPI devices in the Linux kernel
Preparing Android for SPI sensor use
Building an SPI interface circuit
Connecting the sensor
Exploring the SPI sensor example app
The app's user interface
Calling the PacktHAL sensor functions
Using the HardwareTask class
Summary
6. Creating a Complete Interfacing Solution
Building the complete interface circuit
Exploring the complete example app
The app's user interface
Understanding hardware polling in an app
Using AsyncTask with long-lived threads
Using the HardwareTask class
Summary
7. Where to Go from Here
Integrating your solution with Android
Creating a custom kernel and Device Tree
Adding hardware communication into the kernel
Integrating into existing managers
Creating new managers for custom hardware
Combining your project with other hardware
Constructing your own prototype capes
Commercial capes that interface with Android
Exploring the BBB's other interfaces
Programmable real-time units
Serial communications
Controller area network
The analog-to-digital converter
Pulse width modulation
Summary
Index
Android for the BeagleBone Black
Android for the BeagleBone Black
Copyright © 2015 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: February 2015
Production reference: 1130215
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78439-216-1
www.packtpub.com
Credits
Authors
Andrew Henderson
Aravind Prakash
Reviewers
Nathan Burles
Guy Carpenter
Anuj Deshpande
Commissioning Editor
Amarabha Banerjee
Acquisition Editor
Greg Wild
Content Development Editor
Neetu Ann Mathew
Technical Editor
Tanvi Bhatt
Copy Editors
Deepa Nambiar
Vikrant Phadke
Project Coordinator
Mary Alex
Proofreaders
Simran Bhogal
Bernadette Watkins
Indexer
Hemangini Bari
Graphics
Sheetal Aute
Production Coordinator
Manu Joseph
Cover Work
Manu Joseph
About the Authors
Andrew Henderson has over 15 years of experience developing software for the Linux desktop and embedded Linux and Android systems. He is currently a PhD candidate at Syracuse University, with research interests in the areas of system security and dynamic analysis. He maintains multiple open source projects for the BeagleBoard and BeagleBone platforms.
I want to thank Cheryl, Olivia, and my father for all of their encouragement and support during the time that I spent researching and writing the material for this book. I would also like to thank Dr. Heng Yin, Dr. Wenliang Du, and Dr. Ehat Ercanli of Syracuse University for lending their knowledge and guidance to my Android OS and BeagleBone/BeagleBoard research.
Aravind Prakash is a PhD candidate at Syracuse University. His interests lie in system and mobile security, with emphasis on program analysis. He has published in multiple top-tier computer-security conferences. He brings with him over a decade of programming experience from companies such as Microsoft, McAfee, and FireEye.
About the Reviewers
Nathan Burles is a post-doctoral researcher with a PhD in computer science. He is currently working for the University of York, on subjects as diverse as artificial neural networks and dynamic, adaptive, and automated software engineering.
In his free time, he enjoys tinkering with embedded systems and electronics, ranging from full systems such as the Raspberry Pi and BeagleBone Black to simple microcontrollers such as the Arduino—adding circuitry to communicate using 433MHz RF and infrared.
Nathan blogs about his projects as well as topics including website development, Android, and dancing at http://www.nburles.co.uk.
Guy Carpenter is a software developer and veteran hacker. He has contributed code to the BeagleBone, Raspberry Pi, Arduino, and Chumby Hackers Board communities. He owns Clearwater Software in Brisbane, Australia.
Anuj Deshpande adores the Beaglebone Black and all things embedded with Linux. He is an active part of the local hackerspace, Doo, in Pune, and regularly hosts meet-ups on a variety of topics.
Some of the projects that he has been a part of are Userspace Arduino, PixHawk Fire, and Tah. He was an intern at Beagleboard.org, Oneirix Labs, as well as 3D Robotics for a brief period of time. Anuj completed his bachelor's degree in computer science from PICT, Pune.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
The broad availability of Android-based devices has generated a large amount of interest in developing software applications, or apps, that target Android. Luckily, a powerful and low-cost hardware platform is available that allows you to quickly and easily test your apps on real hardware: the BeagleBone Black. With a focus on small size and a wide variety of expansion and interfacing opportunities, the BeagleBone Black provides a lot of processing power at a very low price. It also provides an opportunity to app developers that once belonged only to those that were expert hardware hackers or owners of expensive hardware development kits: the chance to write Android apps that interact with custom hardware circuits.
Whether you are brand new to hardware interfacing or a seasoned expert, Android for the BeagleBone Black provides you with the tools that you need to begin creating Android apps that communicate directly with your custom hardware. From the very beginning, this book will help you understand Android's unique approach to hardware interfacing. You will install and customize Android, build circuits that interface with your BeagleBone Black platform, and build native code and Android apps that use that hardware to communicate with the outside world. By sequentially working through the examples in each chapter, you will learn how to create multithreaded apps that are capable of interfacing with multiple hardware components simultaneously.
Once you have explored the variety of example circuits and apps in this book, you will be well on your way toward becoming an Android hardware interfacing pro!
What this book covers
Chapter 1, Introduction to Android and the BeagleBone Black, walks you through the process of installing the Android OS to your BeagleBone Black board. It also provides you with a list of hardware components that you will need to perform the activities throughout this book.
Chapter 2, Interfacing with Android, introduces you to several aspects of the BeagleBone Black's hardware and Android's Hardware Abstraction Layer. It describes how to make a few modifications to both your development environment and Android installed on your BeagleBone Black to allow Android apps to access the various hardware features of the BeagleBone Black.
Chapter 3, Handling Inputs and Outputs with GPIOs, guides you through building your very first hardware interfacing circuit and explains the details of a basic Android app that can communicate with it. This is your first step toward building much more complex apps that interact with the world outside your BeagleBone Black.
Chapter 4, Storing and Retrieving Data with I2C, expands on the basics from Chapter 3, Handling Inputs and Outputs with GPIOs, and explains how asynchronous background threads within your apps are used to communicate with hardware. It guides you through building