100% found this document useful (18 votes)
80 views

Developing Android on Android Automate Your Device with Scripts and Tasks 1st Edition Mike Riley 2024 Scribd Download

Developing

Uploaded by

buntyanjarr
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (18 votes)
80 views

Developing Android on Android Automate Your Device with Scripts and Tasks 1st Edition Mike Riley 2024 Scribd Download

Developing

Uploaded by

buntyanjarr
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

Download the full version of the ebook at

https://ebookultra.com

Developing Android on Android Automate Your


Device with Scripts and Tasks 1st Edition
Mike Riley

https://ebookultra.com/download/developing-
android-on-android-automate-your-device-with-
scripts-and-tasks-1st-edition-mike-riley/

Explore and download more ebook at https://ebookultra.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Learning Embedded Android N Programming Create the


perfectly customized system by unleashing the power of
Android OS on your embedded device 1st Edition Ivan
Morgillo
https://ebookultra.com/download/learning-embedded-android-n-
programming-create-the-perfectly-customized-system-by-unleashing-the-
power-of-android-os-on-your-embedded-device-1st-edition-ivan-morgillo/
ebookultra.com

Developing Android Applications with Adobe AIR 1st Edition


Véronique Brossier

https://ebookultra.com/download/developing-android-applications-with-
adobe-air-1st-edition-veronique-brossier/

ebookultra.com

Automate Everyday Tasks with ChatGPT Plus MEAP V03


Natassha Selvaraj

https://ebookultra.com/download/automate-everyday-tasks-with-chatgpt-
plus-meap-v03-natassha-selvaraj/

ebookultra.com

Android Development with Kotlin 1st ed Edition Moskala

https://ebookultra.com/download/android-development-with-kotlin-1st-
ed-edition-moskala/

ebookultra.com
Android Development with Flash 1st Edition Julian Dolce

https://ebookultra.com/download/android-development-with-flash-1st-
edition-julian-dolce/

ebookultra.com

Decompiling Android Discover how Android Apps are Compiled


and Built to Secure Your Data and Build Better Apps 1st
ed. Edition Godfrey Nolan
https://ebookultra.com/download/decompiling-android-discover-how-
android-apps-are-compiled-and-built-to-secure-your-data-and-build-
better-apps-1st-ed-edition-godfrey-nolan/
ebookultra.com

Android Forensics Investigation Analysis and Mobile


Security for Google Android 1st Edition Andrew Hoog

https://ebookultra.com/download/android-forensics-investigation-
analysis-and-mobile-security-for-google-android-1st-edition-andrew-
hoog/
ebookultra.com

Efficient Android Threading Asynchronous Processing


Techniques for Android Applications 1st Edition Anders
Goransson
https://ebookultra.com/download/efficient-android-threading-
asynchronous-processing-techniques-for-android-applications-1st-
edition-anders-goransson/
ebookultra.com

Unboxing Android USB A hands on approach with real world


examples 1st ed. Edition Regupathy

https://ebookultra.com/download/unboxing-android-usb-a-hands-on-
approach-with-real-world-examples-1st-ed-edition-regupathy/

ebookultra.com
Developing Android on Android Automate Your Device
with Scripts and Tasks 1st Edition Mike Riley Digital
Instant Download
Author(s): Mike Riley
ISBN(s): 9781937785543, 1937785548
Edition: 1
File Details: PDF, 25.31 MB
Year: 2013
Language: english
V413HAV
V413HAV
Developing Android on Android
Automate Your Device with Scripts and Tasks

Mike Riley

The Pragmatic Bookshelf


Dallas, Texas • Raleigh, North Carolina

V413HAV
V413HAV
Many of the designations used by manufacturers and sellers to distinguish their products
are claimed as trademarks. Where those designations appear in this book, and The Pragmatic
Programmers, LLC was aware of a trademark claim, the designations have been printed in
initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer,
Pragmatic Programming, Pragmatic Bookshelf, PragProg and the linking g device are trade-
marks of The Pragmatic Programmers, LLC.
Every precaution was taken in the preparation of this book. However, the publisher assumes
no responsibility for errors or omissions, or for damages that may result from the use of
information (including program listings) contained herein.
Our Pragmatic courses, workshops, and other products can help you and your team create
better software and have more fun. For more information, as well as the latest Pragmatic
titles, please visit us at http://pragprog.com.

The Android robot is reproduced or modified from work created and shared by Google and
used according to terms described in the Creative Commons 3.0 Attribution License.

The team that produced this book includes:


Jacquelyn Carter (editor)
Potomac Indexing, LLC (indexer)
Molly McBeath (copyeditor)
David J Kelly (typesetter)
Janet Furlow (producer)
Juliet Benda (rights)
Ellie Callahan (support)

Copyright © 2013 The Pragmatic Programmers, LLC.


All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system, or


transmitted, in any form, or by any means, electronic, mechanical, photocopying,
recording, or otherwise, without the prior consent of the publisher.

Printed in the United States of America.


ISBN-13: 978-1-937785-54-3
Encoded using the finest acid-free high-entropy binary digits.
Book version: P1.0—November 2013

V413HAV
This book is dedicated to my three favorite
M’s: Marinette, Marielle, and Mitchell.

V413HAV
Contents
Acknowledgments . . . . . . . . . . . ix

Introduction . . . . . . . . . . . . . xi

Part I — Customize
1. Getting Started . . . . . . . . . . . . 3
1.1 Analyzing Your Mobile Lifestyle 3
1.2 Mobile Personalization 6
1.3 Next Steps 8

2. Personalizing Your Home Screen . . . . . . . . 9


2.1 Launchers 10
2.2 Widgets 14
2.3 Floaters 19
2.4 Home Screen Customization 22
2.5 Next Steps 25

3. Listening to Your Android . . . . . . . . . 27


3.1 Wearable Computing 27
3.2 The Sound of Data 29
3.3 Button Control 33
3.4 Next Steps 37

Part II — Explore
4. Automating with Tasker . . . . . . . . . . 41
4.1 Introducing Tasker 41
4.2 Talking Clock 43
4.3 Train Station Alarm 53

V413HAV
Contents • vi

4.4 Tasker App Factory 57


4.5 Next Steps 61

5. Scripting with SL4A . . . . . . . . . . . 63


5.1 SL4A: Scripting Layer for Android 63
5.2 Programming with SL4A 67
5.3 Scheduling the SL4A Script 69
5.4 Other Android-Ported Languages 71
5.5 Next Steps 72

6. Programming with AIDE . . . . . . . . . . 75


6.1 Getting Started 76
6.2 Programming the Clock 78
6.3 The Clock Is Running 84
6.4 Talking Clock Automation 86
6.5 Next Steps 88

Part III — Build


7. Tasker Pomodoro Widget . . . . . . . . . 93
7.1 Rapid Tasker Prototyping 93
7.2 Pomodoro Widget Redux 98
7.3 Testing the Revised Widget 107
7.4 Addressing the Limitations 111
7.5 Next Steps 113

8. Messaging Projects . . . . . . . . . . . 115


8.1 Check Email 115
8.2 Speak ’n’ Tweet 126
8.3 Jabber Tracker 136
8.4 Next Steps 143

9. Notification Projects . . . . . . . . . . 145


9.1 Talking Notifications 145
9.2 Forecast.io 151
9.3 AutoNotification 158
9.4 Next Steps 163

10. Graphics Projects . . . . . . . . . . . 165


10.1 Application Launcher 165
10.2 Twitch.tv Widget 172
10.3 Next Steps 183

V413HAV
Contents • vii

Part IV — Appendixes
A1. Android Programming Tools . . . . . . . . 187
A1.1 Code Editors 187
A1.2 Source Version Control 193
A1.3 Miscellaneous Tools 198

A2. Resources on the Web . . . . . . . . . . 201

Bibliography . . . . . . . . . . . . 203

Index . . . . . . . . . . . . . . 205

V413HAV
Acknowledgments
This is my second book for Pragmatic Bookshelf, and it has been a pleasure
to once again work with my dedicated and insightful development editor,
Jackie Carter. If you can follow along with the projects without any problem,
you have Jackie to thank. Her editorial skills and professional project man-
agement were crucial in keeping the book flowing smoothly and on schedule.

I would also like to thank all the wonderful technical editors and beta reader
participants who shared valuable feedback, caught typos and other errors,
and generally offered excellent suggestions on improving the quality of the
book. In particular, I would like to thank Mike Bengtson for his awesome
ingenuity, Corey Butler for his progressive technical edge, Ed Burnette for
his pragmatic expertise, John Cairns for his eagle-eye criticality, and Glen
Ferrel for his proofreading expertise and infectious enthusiasm. I also want
to give a big shout-out to Dr. James Withers and Simon Wood (two of the
geniuses behind the awesome SwiftKey Android soft keyboard replacement
program) for their eagle-eye analysis of the book’s content. And a special
thank-you goes to Jan Debiec and Cristina Zamora for their vigilant review
of the material, active participation in the beta, and unending encouragement
for my work. I am so blessed and humbled to be surrounded by such techni-
cally minded people as gifted, kind, and supportive as you.

No amount of thanks can match the sacrifice my family made to give me the
time to devote to another book. I promise to take a break from book writing
for a while so I can make up for lost time with you.

Lastly, a big high-five to publishers Andy Hunt and Dave Thomas for once
again entrusting me to deliver a book worthy of the Pragmatic Bookshelf
imprint. Thank you for giving me such a wonderfully rewarding opportunity
to do so.

V413HAV report erratum • discuss


Introduction
In this book, we’re going on a journey of discovery. We’re going to discover
how amazing the Android OS is and how it is transforming the way people
communicate. We’re also going to learn how to leave our legacy desktop PCs
behind, even for native Android application development needs.

The idea for this book was the result of a conversation I had with Pragmatic
Bookshelf publisher Dave Thomas. He had just acquired a Galaxy S3 Android
phone and wanted to know what kind of cool things he could do with it. Since
I have been an Android user since the release of the first commercial Android
phone, the G1, I had a few suggestions on where to start. As he became more
enthusiastic about the broad possibilities of customization and personalization
that the Android platform has to offer, a new book on the subject started to
crystallize.

The objectives of this book are simple. You will learn about how to apply and
codify your mobile automation needs in an Android program. Using both
scripting and native application development approaches, we will build several
programs that not only teach you how to quickly automate your mobile lifestyle
but also give you the skills to extend these programs beyond their tutorial
roots.

Why Android? Why Now?


The Android OS is several years old, and its design principles (a modern, true
multitasking mobile OS with built-in memory, permissions management, and
so on) have been the same since its inception. So why is this book relevant
now compared to five years ago, when Android was first introduced?

Obviously, the platform has matured considerably in that time. It has also
greatly benefited from its open source approach by fostering significantly
faster innovation compared to closed, proprietary operating systems. Take a
look at a first-generation iPhone compared to the iPhone 5. While the hardware
has vastly improved, the primary user interface is nearly identical. Consider

V413HAV report erratum • discuss


Introduction • xii

the differences between Android 1.0 running on a G1 phone and Android 4.2
running on a Nexus 4. The differences are striking. The user interface, hard-
ware support, design aesthetics, and everything but the original design prin-
ciples have rapidly evolved for the better. One benefit from this co-evolution
of hardware and software is that you can do things on a modern Android
device that was the stuff of fiction five years ago. To think that on your Android
device you can now do computing on a scale that was the exclusive domain
of desktop PCs for the last thirty years is awe-inspiring.

This evolutionary path is also manifested in Android application development


tools. Once clunky and incomplete, the Android SDK and Eclipse plug-ins
are finally capable of stable, team-based, test-driven development. While the
user interface construction toolkit could still use more polish, every other
aspect of the typical Android development and emulation on a desktop PC is
polished and professional.

One of the most exciting aspects of Android programming, testing, and


deployment is that its application development life cycle can now be done
directly on the Android device. This is a big deal. When compared to other
mobile operating systems that require an expensive PC outfitted with a decent
processor and plenty of RAM to run the target emulator, the projects discussed
in this book require only your Android device. When you code and run
applications on the same device, it greatly accelerates the development process,
just as it did during the desktop PC era.

Let’s also not forget that, like a desktop computer, Android’s home screen
can be highly customized and extended via custom wallpapers, animations,
icons, folder actions, transition animations, and much more. This degree of
personalization allows you to make your Android device fit your aesthetic
values, daily workflow, and communication and notification preferences, not
the other way around. Third-party extensions and widgets also help push the
envelope of what is possible, further contributing to Android’s success and
dominant market position.

Who This Book Is For


This book is for anyone who is interested in doing much more with an Android
device than downloading and using apps from the Google Play store. If you
love your Android phone or tablet and you love to tinker with technology, this
is the perfect book for you. And while prior programming experience is not
required, it will be helpful to understand some of the scripts that we will
create in the chapters ahead.

V413HAV report erratum • discuss


Requirements • xiii

Requirements
This is a book about Android, so it should come as no surprise that a must-
have requirement is an Android phone or tablet running Android OS 4.2
(known by its friendly code name Jelly Bean) or newer. The screenshots used
throughout this book were taken on a Galaxy Nexus phone and Nexus 7
tablet.

In addition to the Android phone or tablet, you should have an active account
on the Google Play store, since a good portion of the software used in this
book is exclusively distributed via the Google Play service.

Lastly, while it’s not required, I strongly recommend you obtain a quality
Bluetooth keyboard known to be compatible with the Android OS. I have yet
to use a Bluetooth keyboard that could not be paired with Android, but key-
boards designed specifically with Android in mind are optimal since they often
have special keys associated with functions such as play/pause music, volume
control, toggle between applications, lock the screen, and so on. My current
favorite mobile Bluetooth keyboard is the Logitech Tablet Keyboard for
Win8/RT and Android, shown in the following figure.1 It is a full-size keyboard
and thus larger than other mobile Bluetooth keyboards that have a smaller
footprint or fold in half for greater portability. Plus, Logitech’s full-size key-
board combined with the protective cover doubles as a phone or tablet stand.

Figure 1—The Logitech Tablet Keyboard for Win8/RT and Android

1. http://www.logitech.com/en-us/tablet-accessories/android/tablet-keyboard-android-win8-rt

V413HAV report erratum • discuss


Introduction • xiv

While you are understandably not going to be able to use this keyboard in a
cramped moving vehicle such as a bus or train, it works perfectly fine sitting
on an airplane fold-down seat tray or desk. And since I’m usually bringing
along a backpack during my commutes, the Logitech keyboard adds practi-
cally no additional weight or bulk to the bag. Besides, you will find that the
keyboard is a sanity saver when editing code or documents on the Android
device.

So, that’s it—a phone or tablet, an active Google Play account, and maybe an
Android-compatible Bluetooth keyboard. For folks like me who have been
around since the dawn of the personal computer era, it is simply amazing to
think how far we have come in the past forty years and how much further
we’ll go in the next forty years.

Jailbreaking and Rooting


Unlike traditional desktop operating systems, mobile OSs like Android and
iOS are locked down in such a way so that the system-level files cannot be
tampered with by ordinary users. This keeps the device more secure by pre-
venting malicious applications from modifying system files without the user’s
knowledge. Similarly, it prevents the user from altering these files.

Jailbreaking is a term used in the mobile device market to mean a procedure


that allows users to bypass the normal operating system–level restrictions,
typically to gain root-level access (rooting the device). Once root access is
obtained, the user or application has full read-write access to all aspects of
the operating system files. This allows modification of the device’s behavior
in ways that weren’t originally intended by the OS developer.

While Android OS tinkerers can benefit from rooting a device by understanding


the internal workings of the OS better, average users could be putting the
contents and operation of their phones’ security at risk if they are untrained
in the various aspects of mobile OS security best practices. In the early days
of Android, when many features were immature or missing, jailbreaking and
rooting were more attractive, since doing so provided power users with a
degree of customization that matched their needs. These custom modifications
could range from modifying system-level virtual private network (VPN) software
stacks to changing the look and feel of the home screen.

Android today is a much more mature operating system, so many of these


limitations have a viable and more secure alternative. The projects in this
book do not require jailbreaking or rooting your device. Unless you are a
security researcher or a technology tinkerer who likes to crack things open

V413HAV report erratum • discuss


What’s in This Book • xv

to see how they work, there is no overwhelming reason for average users to
consider jailbreaking and rooting their Android devices.

What’s in This Book


Now that we have packed our bags for the journey, let’s look at the road map
we’ll use to progress along the trail.

In the first part of the book, we will look at the variety of options we have to
customize our Android experience. The home screen, lock screen, widgets,
backgrounds, icons, and touch behaviors can all be personalized to your liking.
Unlike some mobile operating systems that enforce a structured, inflexible
design aesthetic, Android offers desktop-like customization in a mobile
package. We will dive into specific examples for home screen renovation. We
will also take a look at extending our Android experience by calling upon a
variety of Android’s hardware capabilities, such as using the headphone jack
to transform our Android applications into better, more convenient, and
information-rich wearable-computing user experiences.

In Part II, we will dip our toe in the automation waters by taking a look at a
very powerful application called Tasker. We will use Tasker to automate sev-
eral personal workflow needs and get introduced to some basic conditional
programming and control flow while we’re at it. We will also delve further into
the programming landscape with the introduction of Scripting Layer for
Android (SL4A). SL4A will allow us to write scripts in Python, Ruby, and
other popular interpreted languages that will execute on Android and give us
access to most of the system-level calls exposed by the Android SDK. We will
conclude the Explore section of the book by actually programming Android
using the native SDK. But instead of using a personal computer loaded with
the Android SDK, emulator, and related development tools, we will write,
compile, test, and deploy these native applications entirely on our Android
phone or tablet.

In Part III of the book, we will apply what we learned in the first two parts by
first creating a custom Android widget entirely on the device—no PC required.
The final set of projects in the book will wrap these scripting and automation
technologies in friendly user interfaces. These projects will show the versatil-
ity and automation opportunities that Android has to offer. The book also
includes appendixes that review a variety of programming tools that run on
the Android platform, as well as offer additional web resources to further your
own project ideas.

V413HAV report erratum • discuss


Introduction • xvi

By the end of the book, you should be well prepared to continue the journey
on your own to create an Android experience that perfectly complements your
information-interaction lifestyle.

Online Help
Many websites are devoted to the dissemination of Android news, reviews,
hacking, modding, and programming. Check out Appendix 1, Android Pro-
gramming Tools, on page 187, for a list of some of my favorites. It should go
without saying that for Android development, Google’s http://developer.android.com
website offers the official word on Android application development. This isn’t
just a repository of bland technical documentation but a wealth of useful and
well-written articles, tutorials, and tech notes from the folks responsible for
various portions of the operating system. It’s a resource that any serious
Android developer should have permanently bookmarked.

There are a number of footnotes in the book featuring web links to more online
resources. I also encourage you to post specific questions or comments about
the ideas presented in the book at the book’s web forum. Should you happen
to spot an error, feel free to mention it on the book’s website errata page.
You’re also welcome to contact me directly via my mike@mikeriley.com email
address or follow me on Twitter @mriley. I look forward to hearing from you!

With that, we’re ready to take a look at all the things we can customize in a
nonrooted device running the stock Android 4.2 or newer operating system.

Mike Riley
mike@mikeriley.com
November 2013

V413HAV report erratum • discuss


Part I

Customize

V413HAV
CHAPTER 1

Getting Started
Today’s smartphones are amazing devices. They are such powerful and
capable computing devices that they have even replaced traditional desktop
personal computers for some people. And like traditional desktops, one of the
most exciting aspects of the Android platform, especially when compared to
other mobile operating systems, is its ability to be highly customized. This
customization goes beyond just wallpaper and icon replacements. You can
use Android to create custom tasks, scripts, workflows, and behaviors that
can’t be done easily on most other mobile platforms.

In this book we’re going to go beyond simply locating and installing commercial
Android applications that provide generic functionality to fulfill your needs.
But before we can start crafting scripts and applications that do what generic
Android applications cannot, we need to evaluate key features of what an
Android device has to offer. Then we can determine what to look for in the
Google Play market. If we can’t find what we’re looking for, we can build it
ourselves.

In this chapter, we will take a look at some of these key aspects before decking
out your phone or tablet with themes, widgets, and applications that might
not optimally suit your mobile lifestyle needs.

1.1 Analyzing Your Mobile Lifestyle


Before you can begin building a solution, you need to determine the problem
to be solved. Even though today’s high-end smartphones are more powerful
than desktop computers were only a few years ago, this power is often not
fully harnessed by users until they learn how to leverage all facets of the
device. To do that, compare how you use your smartphone today with how
you would like to use it in the future.

V413HAV
V413HAV report erratum • discuss
Chapter 1. Getting Started •4

If your Android device is a phone, do you use it primarily for voice calls or
texting? If you use an Android tablet, is it used mostly for reading ebooks or
for surfing the Web? Deciding where you spend the most time with your device
will help narrow down what functionality can be enhanced to improve your
efficiency and satisfaction with the Android OS.

Think about how much time you spend with an application. Is it because it
is so helpful that you can’t imagine life without it? Or is it because the
application is so cumbersome and nonintuitive that it sucks up a substantial
amount of time while you’re fighting the interface? Do you find yourself run-
ning the same type of task over and over again?

If you had the chance to re-create your most frequently used applications,
what would you change about them? Do you have special needs that are not
addressed in these apps?

Here is a personal example. I am bound by train schedules for my commute


into work. As such, an important feature that I needed from my Android
phone was a way for me to know the current time without having to dig into
my pocket for my phone and fumble with the security unlock code. Just
imagine how cumbersome that would be wearing thick gloves on a subzero
Chicago winter morning. Since I was already wearing earbuds to actively listen
to tech podcasts during my commute, hearing the time spoken was a much
more advantageous solution than the visual clock display.

At first, I wrote a simple talking clock app using the Android SDK but found
it to be inflexible when it came to making tweaks to the routines. If I discovered
a bug or came up with an idea to extend the program’s functionality, I had
to wait until I got home to fire up my computer, run Eclipse, spin up an
Android emulator, load the project, make changes to the codebase, go through
a test/debug cycle in the emulator, and then push the compiled .apk file to
my Android phone via the Android Debug Bridge (ADB). All that work for a
few minor tweaks! Needless to say, there had to be a better way. Hence, the
journey I’ll take you through in this book mirrors my own iterations that best
suited my mobile lifestyle needs.

If you’re like me and you live in the post-PC era by deprecating your desktop
or laptop computer for a phone or tablet alternative most of the time, your
mobile lifestyle is all-encompassing. My phone is always by my side during
my waking hours and on my nightstand when I sleep. Likewise, my tablet is
with me during my commutes and anytime I’m driving somewhere where I
will be away from home longer than an hour. Just as noteworthy to-dos pop
into my head while on the go, ideas for enhancements to existing Android

V413HAV report erratum • discuss


Analyzing Your Mobile Lifestyle •5

apps I have written have to be captured at that moment before they are lost
into the ether of the day’s demands.

Having the flexibility to make these changes on the fly has been about as
game-changing for me as when I bought my first home computer in the 1980s
(an Atari 400 with its craptaculous membrane keyboard) and then could write
my own apps without having to wait for computer lab time at school. That
freedom and flexibility changed my life back then, and as the Android platform
matures with the ability to develop apps on the device rather than a hulking
piece of hardware, that life-changing experience is resurfacing.

To put yourself in a mobile lifestyle frame of mind, here are some questions
to ponder when considering how you use your Android device for your own
customization opportunities:

• What hours of the day do you use your phone or tablet? If you respond
“All the time,” what are the time ranges that you use the device the most?

• What applications do you spend the most time using? If you’re not sure,
Android’s Data Usage and Running apps (shown in the following figures)
are accessible via the Android Settings application.

Figure 2—An example of Android’s data Figure 3—A list of currently running
usage applications

V413HAV report erratum • discuss


Chapter 1. Getting Started •6

While not a true reflection of time spent with each application, these two
measurements can help you to a certain degree by showing you which
programs consume the most bandwidth and power. These data collections
can help you become more aware of which applications are frequently
running (whether you’re aware of them doing so in the background or
not).

• What repetitive tasks do you perform with your device that would save
time if you could automate these efforts? For example, I used to make an
effort to turn on my phone every morning, turn on the WiFi radio, launch
my podcast application (I’m currently a fan of the DoggCatcher Podcast
Player1), and wait for the application to download whatever podcasts were
available. When done, I would then turn off the WiFi radio to conserve
battery. If I forgot or ran out of time, I wouldn’t have any new podcasts
to listen to on the way to work. By the way, I no longer do this manual
process since I’ve scripted the entire procedure to kick off thirty minutes
before I wake up. I’ve also created automated tasks to grab the latest news
and weather to read to me after the clock alarm awakens me. We’ll explore
how to write your own scripts and tasks later in the book.

• What dream applications or widgets do you wish you had but haven’t
seen in the Google Play store? Be as specific as possible. Do you want an
application that will wake you up, turn on the lights, and start brewing
a pot of coffee at the same time? After reading this book and another book
I wrote called Programming Your Home [Ril12], also published by Pragmatic
Bookshelf, you will have the knowledge necessary to bring an automation
example like this to fruition.

With these thoughts in mind, let’s take a closer look at some of the more
interesting personal automation ideas we could build upon.

1.2 Mobile Personalization


After you have considered what opportunities for automation exist, start
brainstorming how to make those ideas come to life. You will discover that
the more you think about the improvements that customized automation can
bring, the faster new program ideas will flow. Some of the automated scripts
and applications that I have created on my Android devices include the follow-
ing examples:

1. https://play.google.com/store/apps/details?id=com.snoggdoggler.android.applications.doggcatcher.v1_0

V413HAV report erratum • discuss


Mobile Personalization •7

• Parse SMS alerts for keywords and react accordingly. If you’re a system
administrator, you could parse SMS messages for the phrase “Server
down” and set off a klaxon-style alarm on your phone or tablet.

• Grab RSS news feeds and repackage them for your own personalized news
broadcast. Set your Android device to connect to the Internet at specific
times throughout the day to fetch RSS feeds, parse them, and convert
the text to speech. Then have it read the news stories to you during your
commute to and from work.

• Transmit Wake-On-LAN (WOL) packets in the middle of the night to


computers on your LAN or home network. This will wake them up, run
backups on their users’ home directories, and send a backup report of
success or failure to your Android device. Then let the computers go back
to sleep.

• Have your Android phone automatically turn off all radios except mobile
voice calls and set your display to night mode from the time you go to bed
to the time you wake up in the morning. To help you fall asleep, have
your phone play soothing music or sounds of nature (seashore, forest,
meadow, rain shower, and so on) for twenty minutes, giving you enough
time to peacefully fall asleep.

• Take a photo with your phone or tablet and have that image automatically
cropped, filtered, resized, and posted to your online photo album or blog.

• Divert inbound phone calls based on caller ID information to voicemail


or automatically forward the call to a secondary number (such as a Google
Voice number that offers message transcription services) depending on
time of day or level of personal importance.

Once you have a list of needs in mind, you can start to define what is neces-
sary to bring these ideas to fruition. If someone hasn’t already done the work
for you and posted the results of their efforts online or in the Google Play
store, you have a few more factors to consider before diving in and expending
the time and effort needed to bring your ideas to life.

Consider Your Skill Level


If you consider yourself more of a power user than a programmer, you will
find that most of the applications and tools mentioned in this book are easy
and approachable. While some of the scripts require knowledge of the Python
or Ruby language, it isn’t essential that you know how to program in either.
Tasks can be created with a minimum of programming knowledge, but it

V413HAV report erratum • discuss


Chapter 1. Getting Started •8

certainly helps if you have some coding skills and are willing to learn new
things.

If you’re already a programmer familiar with object-oriented languages like


Java, picking up the necessary skills to develop Android applications is
straightforward. Several books are available, and hundreds of text-based and
video tutorials exist online to help get you started. As you will see later in this
book, you can build applications that rival natively constructed commercial
Android programs using these tools built for programmers and nonprogram-
mers alike.

Features vs. Time


When starting with an idea, I find it is best to begin with a prototype that can
help crystallize how the application should behave. If I encounter constraints
or roadblocks that simply cannot be overcome with the prototype, I make a
note of these issues so I can evaluate whether those features are worth the
effort to implement using more time-consuming native development
approaches.

There are also times when writing automated tasks or scripts accomplishes
enough of the intended objective that writing a native application is no longer
necessary. This is particularly true if the script or workflow you are creating
is targeted for your specific mobile lifestyle need. But what I have often dis-
covered with my workflows is that as I show my creations to others, they
excitedly ask whether they can have something similar. That’s where this
book comes in. As the classic Chinese proverb says, “Give a man a fish, and
you feed him for a day. Teach a man to fish, and you feed him for a lifetime.”
Let’s go fishing.

1.3 Next Steps


Keep the ideas presented in this chapter in mind as you read this book. As
you learn how to make Android perform automated tasks, consider how these
novel tasks can be expanded to make your life easier. The more you practice
creativity, the more creative you will become.

In the next chapter, we will dive into our first layer of customization by mod-
ifying the look and feel of the Android home screen. With the help of a handful
of utilities available from the Google Play store, we can transform the default
Android user interface into a whole new experience.

V413HAV report erratum • discuss


CHAPTER 2

Personalizing Your Home Screen


For those old enough to remember the days of Windows 3.0, a key differentia-
tor between that GUI-based operating system and the competing Apple Mac
OS 7 was that Microsoft’s offering allowed third-party shells to transform the
look and feel of the Windows experience. As time went on and Microsoft’s
dominance was assured, this level of customization was practiced less fre-
quently but could still be applied for those who preferred an alternative user
interface.

Within the mobile space scenario, Google’s Android has replaced Apple as
the dominant operating system, in part because of the same openness to
customizing the user experience. A variety of home-screen shells, better known
as launchers, are available through the Google Play marketplace that can
swap out default home-screen graphics, icons, and behaviors. And in contrast
to Apple’s iOS platform, Android allows the placement of onscreen mini-
applications known as widgets to alter the stock Android UI. Pushing the
envelope a bit further are what I call floaters. These are Android applications
that run in a resizable desktop-like window that can multitask and hover on
top of the home screen or other full-screen Android programs.

In this chapter, we will take a look at several home-screen customization


approaches. We will also review several widgets in preparation for building
our own later in the book. Then we will assess some of the more popular
floater applications as well as explore a few hardware and software enhance-
ments that can be used to further manipulate Android’s standard application
launching interface. Lastly, we will put all these pieces together to create an
emulated Windows Phone or Mac desktop user experience running on an
Android device.

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 10

2.1 Launchers
The stock home screen that comes on the standard Google Nexus devices
offers a crisp, clean interface. But if you don’t like how it looks or want to
remove the Google search bar widget that refuses to budge when you try, you
have several alternative approaches to choose from. These replacement home-
screen layout and theme applications, called launchers, are available for
download directly from the Google Play store. As the name implies, launchers
can be used to launch applications. But they can also be used to customize
everything from the look of icons to the transition animations that are dis-
played when moving between screens.

Some device manufacturers have created their own custom launchers to


enhance and differentiate their Android devices. These include Samsung’s
TouchWiz1 and HTC’s Sense.2 This degree of customization demonstrates a
major advantage that Android has over competing mobile operating systems.
This also helps to accelerate user experience innovations because Android
offers a platform where experimentation is not only possible but embraced.

Most of the commercially available launchers offer a free version to play with
that are either ad-banner supported, restricted in features, or constrained to
a certain degree of customization. If customers like what they see, they are
encouraged to reward the launcher’s creator with a paid upgrade that will
remove ads and/or unlock additional features. The nice thing about these
commercial launchers is that they can easily be installed just like any other
program that can be obtained from the Google Play store. Once downloaded
and installed, the replacement launcher will ask for your permission to always
be used as the default launcher. You can also choose to run a launcher once
before making the launcher replacement a global change. At the time of this
writing, the most popular launchers on Google Play are ADWLauncher EX,3
Apex Launcher Pro,4 GO Launcher EX,5 and Nova Launcher Prime.6 Let’s take
a brief look at each of these to see what they have to offer and what differen-
tiates one from the other.

1. http://en.wikipedia.org/wiki/TouchWiz
2. http://en.wikipedia.org/wiki/HTC_Sense
3. https://play.google.com/store/apps/details?id=org.adwfreak.launcher
4. https://play.google.com/store/apps/details?id=com.anddoes.launcher.pro
5. https://play.google.com/store/apps/details?id=com.gau.go.launcherex
6. https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher.prime

V413HAV report erratum • discuss


Launchers • 11

ADWLauncher EX
One of the most downloaded launchers on the market, ADWLauncher EX’s
main claim to fame is that it runs on platforms as far back as Android OS
version 1.6. Even on that early Android release, ADWLauncher EX offers the
same kind of eye candy and customization features found on later Android
releases. However, maintaining this visual compatibility comes at the price
of a slightly larger application installation size compared to other launchers.

Pros

• Runs on the Android operating systems as far back as version 1.6 (aka
Donut)
• Fair number of customization options and graphical flourishes, such as
page transitions, icon adjustments, and app organization styles

Cons

• Larger installation footprint compared to other third-party launchers


• Not yet optimized for Android 4.2 and newer
• Can be problematic with some widgets

Apex Launcher Pro


This launcher has become popular among the Android 4.0 crowd, partly
because it doesn’t run on any Android versions older than the 4.0 release.
As such, the install footprint is tiny in comparison to something like
ADWLauncher EX. Apex Launcher Pro can also use launcher themes created
for competing launcher platforms like ADW and Go Launcher.

Pros

• Optimized for Android 4.0 and newer


• Tiny install footprint
• Can import themes from several competing third-party launchers

Cons

• More expensive than other third-party launchers


• Not quite bleeding edge, but good enough to take advantage of the latest
themes and design aesthetics that Android 4.2 utilizes

GO Launcher EX
With more than a million installations since its release into the Play market-
place, GO Launcher EX is by far the most popular on Google Play and has

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 12

the largest variety of third-party add-ons and inventive creations formatted


for the program’s graphic templates. It’s also free, but at a big price in the
form of in-app advertising. While other launchers offer free, ad-supported
versions, most of the alternatives offer a paid upgrade version that eliminates
in-app advertising along with expanded graphic options.

Pros

• It’s free.
• This is the most popular launcher on the market, with a thriving add-on
and custom theme market (more than 5,000 and counting).
• It runs on Android 2.0 and newer.

Cons

• In-app push advertising clutters the experience.


• It doesn’t consume themes built with other third-party launchers.

Nova Launcher Prime


TeslaCoil Software’s Nova Launcher Prime
(shown in the figure here) is one of the
newest Android launcher programs on the
market. Like Apex Launcher Pro, Nova
Launcher Prime runs only on Android 4.0
and newer devices. As such, its minuscule
install size coupled with its ability to import
ADW or Go Launcher icon themes elevate
it beyond a casual launcher replacement.
It’s one of the more expensive launchers
analyzed in this chapter, but I find that it
is also one of the most flexible and intuitive-
ly designed.

Nova Launcher Prime is my personal


launcher of choice and the one I used
throughout this book. And because this
book assumes you are also using a device
running Android OS 4.0 or newer, Nova
Launcher Prime is an even easier top recom-
mendation to make.
Figure 4—Nova Launcher Prime
is my preferred launcher.

V413HAV report erratum • discuss


Launchers • 13

Pros

• Optimized for the Android 4.0 user experience


• Flexible yet intuitive user interface options
• Can import and use ADW and Go Launcher icon themes
• Built-in unread count badges for Gmail, missed calls, and SMS

Cons

• Comparatively expensive

Who Can You Trust?


While these launchers offer a fun and visually exciting way to customize the
look and feel of the home screen and icons that populate the screen, they
require an extraordinary level of access to a number of areas within the
Android operating system to do their magic. Even though a majority of Android
applications usually need only two or three permissions (such as Internet
access, read-write access to the SD card, and so on), several of the Android
launchers featured in this chapter require a whole host of OS-level permis-
sions, from reading your contacts, text messages, call log, and email to having
full network access. Given such broad access to your data and a connection
to a network, untrustworthy launchers could harvest that data for their own
nefarious purposes.

Fortunately, it’s unlikely that the more popular launchers highlighted in this
book would be engaging in such practices since they are used by so many
people; the likelihood is small that security-conscious customers using these
products would be monitoring the application’s network interaction for any
funny business. Yet while companies that create these launchers are seeking
commercial gain through the sale of their application, the more popular a
launcher becomes, the more likely unscrupulous hackers could seek out and
exploit security flaws in the launcher by exploiting unintentional vulnerabilities
in the target launcher application.

The lesson to be learned with this array of launchers is that Google could
step up its game and bake launcher customization within the Android OS.
Not only will this alleviate security concerns (that these third-party launchers
have unfettered access to so many sensitive areas of the phone or tablet), but
it will also help to standardize on theme formats. Instead of being locked into
one vendor’s interpretation of what a launcher theme should consist of, Google
could help set a universal protocol that Android users and independent theme
designers could follow. Until then, we’re stuck with entrusting these third-
party providers with our device’s security.

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 14

Launchers can be combined with custom wallpaper images, icons, and screen
transitions to create a new level of personalized artistic expression among a
new generation of mobile connected users. Just as car exteriors were
customized during the mid-1960s through the ’70s by that generation’s youth,
this design trend has been reborn in the mobile generation. Even more levels
of customization can be realized using widgets. Let’s take a closer look at this
standout feature that is part of the Android OS experience.

2.2 Widgets
A major distinction between a desktop computer and a mobile OS such as
Android is the way people interact with information on the display. A desktop
offers considerably more screen real estate (even more so with multiple
monitors) than is typically offered on a mobile display. As such, running
dozens of windowed applications on a mobile device isn’t very practical. Yet
the power of a multitasking OS such as Android allows for many programs
to be running at the same time.

Android has solved this constraint somewhat with the creation of widgets.
Widgets are small graphical applications anchored to the home screen that
can display data in a space as small as a single icon or expand to take over
most of the screen. In this section, we’ll take a look at how to select and use
widgets, as well as sample a few of my favorite Android widgets.

When widgets were introduced in the early days of Android, they were one of
the most defining features of the OS when compared to competing mobile
platforms. Since then, widgets have found their niche as a collection of useful
albeit limited views often for larger host applications.

For example, many media players available for sale on the Google Play store
include widgets of various sizes that distill basic functions such as play/pause
and forward/rewind onto screen areas that span anywhere from one-by-two
to four-by-four tiles. Other widgets offer scrolling news-ticker-style updates
from RSS feeds, server status, and to-do list reminders, among other things.
In addition to the widgets available on the Google Play store, Android ships
with its own collection of widgets to support the variety of Google applications
on the phone.
Discovering the widgets installed on your Android device and adding a widget to
your home screen is easy. To view the widgets installed on your phone on a
standard Android 4.2 launcher configuration, select the Applications group icon
from the lower center of the screen. This will display icons of all the visible pro-
grams on your device. From this screen, select the Widget tab to view the installed
widgets as shown in Figure 5, Android widgets selection screen, on page 15.

V413HAV report erratum • discuss


Widgets • 15

Choose a widget by long-pressing the widget’s


icon. This will transform the icon into a float-
ing representation that you can select and
drag on your Android’s home screen.
Depending on the type of widget, a preference
settings screen may appear after you have
released the widget’s floating icon for place-
ment. This settings screen may be specific to
that widget or, if the widget is a window to a
full Android application, display the settings
screen for that host program. And in Android
4.2 and newer, widgets can be resized to
consume more or less space on the home
screens. This flexibility adds an even higher
degree of home-screen customization, allowing
you to tweak exactly how you want your
screen to appear.

Lock-Screen Widgets
While the original intent of the lock screen Figure 5—Android widgets
was to prevent the phone from accidentally selection screen
launching apps or dialing numbers while
jostling in your pocket, lock screens are increasingly important. Mobile devices
have become containers of personal information, and the content should be
protected with the same security applied in the physical world. But as secu-
rity increases, convenience decreases. So, something as simple as checking
your calendar can become a time-consuming dance of unlocking your phone,
scrolling to the calendar icon, launching the program, scrolling to the
appointment, and expanding the view for details.

To offset this kind of inconvenience, Google introduced a widget enhancement


feature for the lock screen called, you guessed it, lock-screen widgets. The
lock-screen widgets that are bundled in the standard Android 4.2 OS allow
you to view items such as your calendar, email, and contacts and to even
launch the Camera app without having to unlock the screen.

To select a lock-screen widget, swipe to the left while the lock screen is
enabled. This will display a blank grid with a plus symbol in the center, as
shown in Figure 6, Adding widgets to the lock screen, on page 16. Select the
plus symbol, and a list of widgets that are lock screen–compliant will be dis-
played, as shown in Figure 7, A selection of lock-screen widgets, on page 16.

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 16

Scroll through the list to choose the one you want and place it on the lock
screen via the same procedure as placing a regular widget on the home screen.

Figure 6—Adding widgets to Figure 7—A selection of


the lock screen lock-screen widgets

Considering the number of home-screen widgets available in the Google Play


store, the choice of lock-screen widgets is not nearly as expansive. This is
surprising considering how easy it is for developers to take existing widgets
and convert them to be lock screen–compatible.

Perhaps as a result of this dearth of lock-screen widgets compared to home-


screen widgets, Android engineer Roman Nurik created the DashClock widget.7
This innovative replacement for the standard Android lock-screen clock
application can host additional details in neatly defined groupings of informa-
tion. DashClock also solves the problem, related to both home-screen and
lock-screen widgets, of when your screens start filling up quickly, requiring
you to scroll back and forth to look for quick tidbits of information.

7. https://play.google.com/store/apps/details?id=net.nurik.roman.dashclock

V413HAV report erratum • discuss


Widgets • 17

The other advantage that DashClock offers is a very easy way to hook into
its API so that third-party data sources can be displayed in DashClock’s
container.8 Roman released the DashClock source code under the open source
Apache License 2.0, making it a hit among developers who have rewarded
Roman’s efforts with a thriving number of add-ons. These range from battery
and dialing extensions to word-of-the-day and Facebook message counts.

Of course, with all these extensions, you have to be cautious about the type
of lock-screen enhancements you install. As is the case with something like
the Gmail or Calendar lock-screen widget, DashClock extensions might be
exposing data that you don’t want to display on a pocket billboard. DashClock
also has access to permissions such as contacts, email, and location that can
be polled by it and the extensions it hosts. So, unless you implicitly trust
whatever extension you host within DashClock, be wary of what you install.

My Favorite Widgets
I try to keep my widget count to a minimum
(see the figure here). Too many widgets,
especially those polling for frequent network
updates, can impact performance and battery
life. I also stay away from the widgets with
lots of graphical flourishes and large screen
footprints because I find them distracting and
overstepping their intention of quickly
assessing the data they are trying to convey.
That said, here are some of the widgets I pre-
fer.

• Calendar

This is the widget component of Google’s


calendar application that is included with
Android running Google applications. It’s
helpful for taking a quick glance at
upcoming scheduled events.

• Moon Phase Pro


Figure 8—These are a few of my
Being a child of the 1960s and having
favorite things.
early memories of watching a blurry tele-
vision screen showing Neil Armstrong step

8. http://code.google.com/p/dashclock/wiki/API

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 18

onto the surface of the moon has endeared me to all things space. Moon
Phase Pro9 created by developer Udell Enterprises keeps me in touch with
my fascination with celestial bodies. In addition to the main program that
displays the monthly phases of the moon along with other interesting
statistics, the program comes bundled with several widgets of various
sizes and levels of detail.

• Headset Button Controller

I use this application each time I press the button on my Android headset.
Created by Android developer Christoph Kober, Headset Button Controller
essentially allows you to assign different actions to each type of headset
button press.10 Those actions can span from running scripts and applica-
tions to reassigning behaviors to other button presses. The program
includes a widget that allows you to quickly switch between different
headset button profiles. We will explore in greater detail and make use
of this application in the next chapter.

• Smart Tools Flashlight

The Smart Tools bundle is a helpful collection of fifteen measurement


tools ranging from virtual rulers and protractors to metal detectors and
magnifiers. The program includes a helpful Flashlight widget that turns
on and off the rear camera light (if you have one on your phone or tablet)
with the touch of the Flashlight widget icon. This has helped me more
than a couple times while searching for keyholes and safe walkways and
for paper-based reading at night. Since I always have my Android phone
with me, I always have a flashlight with me as well thanks to this useful
widget.

• Python Interpreter

This widget provides a shortcut to the Python interpreter hosted within


the Scripting Layer for Android (SL4A) program. Besides Python, SL4A
can host a number of other different languages within the Android envi-
ronment. We will learn much more about the SL4A in Chapter 5, Scripting
with SL4A, on page 63.

• Pomodoro Clock Widget

This is my second favorite widget and one I built myself. Touching this
widget activates a Pomodoro countdown timer. I will tell you more about

9. https://play.google.com/store/apps/details?id=com.daylightmap.moon.pro.android
10. https://play.google.com/store/apps/details?id=com.kober.headsetbutton

V413HAV report erratum • discuss


Floaters • 19

Pomodoro timers and walk you through the process of building this widget
in Chapter 7, Tasker Pomodoro Widget, on page 93.

• Check Mail Widget

This is my favorite widget and, like the Pomodoro Clock widget, is also
one I built myself. When tapped, the Check Mail widget will check for new
email and speak any new unread messages received. I find that this widget
and the corresponding script it executes is crucial for the hands-free
reporting of new mail messages. We will be building this widget and the
backend script that powers it in Chapter 8, Messaging Projects, on page
115.

Now you should have a pretty good idea of the types of custom application
launchers and widgets that Android has to offer. In the next section, we will
take a look at a special type of Android application that gives your Android
device a retro feel by harkening back to the days of traditional PC-based,
window-driven GUIs.

2.3 Floaters
There is another category of Android applica-
tions that can be displayed on the screen
within a movable window. I call these pro-
grams floaters. Floaters behave just like a
window in a modern desktop computing OS.
Most can be resized, minimized, and maxi-
mized, and some even support multiple
instances, allowing multiple windows on the
screen at the same time. See the figure here.

The advantages of using floaters are not as


great as you might expect. They really don’t
work all that well on an Android phone with
a small display. Screen real estate is already
at a premium, and managing windows on top
of an already limited overall display field can
get annoying after a while. There’s also the
dissonance problem of merging an old GUI
desktop application metaphor onto a modern
mobile operating system. It breaks up the
flow, and you may find yourself spending more Figure 9—Several floaters in action

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 20

time moving around and organizing windowed applications than actually


interacting with the data they contain.

That said, there are a few benefits. Let’s say you’re watching a video and need
to check and respond to email. Normally you would have to pause the playback
to do so. Using a floater media player, you can just resize the window while
perusing your messages and then expand the playback to full screen without
missing a moment of content. There’s also the coolness and geek credibility
factors to be able to show colleagues something they might not have thought
possible on a mobile device. Lastly, floaters work rather nicely on a 10-inch
Android tablet thanks to the much larger screen size that gives you the ability
to effortlessly move and resize windows. I tend to use floaters most frequently
on these types of large-screen devices.

While quite a few floater-style applications are available in the Google Play
store, here are a few worthy of a closer look:

• AirCalc11

AirCalc is a simple yet free calculator for Android. It also provides a nice
introduction to floaters and is a great way to determine whether your
Android device supports the app screen overlay techniques employed by
most floater programs. AirCalc can be resized, minimized, and maximized
just as you would expect a traditional windowed application to behave.

• AirTerm12

AirTerm is another program written by MBFG (short for My Boyfriend is


a Geek), the same folks behind AirCalc and several other floaters available
from the Google Play store. AirTerm incorporates KBOX,13 a full-featured
Busybox clone for nonrooted Android devices.14 KBOX includes useful
Unix-oriented command-line utilities such as scp, ssh, vim, wget, and
more. While not as complete as something like Terminal IDE (refer to
Appendix 1, Android Programming Tools, on page 187, for more information
on this tremendously useful Android utility), AirTerm can help out in a
pinch. I typically call upon AirTerm on my tablet when simultaneously
administering several Linux servers at the same time.

11. https://play.google.com/store/apps/details?id=com.myboyfriendisageek.aircalc
12. https://play.google.com/store/apps/details?id=com.myboyfriendisageek.airterm
13. http://kevinboone.net/kbox.html
14. http://www.busybox.net

V413HAV report erratum • discuss


Floaters • 21

• DICE Player15

DICE Player is a free (donations encouraged), full-featured media player


for Android. In addition to supporting a variety of playback formats, DICE
Player includes the ability to convert the normal full-screen playback
mode into a floating pop-up player. The windowed player can be resized
like any other floater-style application. One nifty aspect I like about the
DICE Player is its ability to speed up playback without altering the pitch.
This allows me to watch screencasts twice as fast without changing the
pitch of the audio. A typical scenario on my tablet is to have DICE play
back a screencast in double time while I have Terminal IDE or AirTerm
open, interacting with a server running the configuration being presented
in the screencast. It’s the ultimate post-PC learning experience.

• Overskreen16

Overskreen is another MBFG application that brings the floater technique


to the standard Android web browser. Because of this, Overskreen is a
no-frills browser that can’t compete with the likes of Chrome or Firefox.
Still, its floater properties come in handy when searching the Web or
referring to a website while writing a document. It sure beats the alterna-
tive tap-and-swipe dance common when switching between running
Android programs.

• Stick it!17

Stick it! is another Android media player that, like DICE Player, provides
video playback within a pop-up window. However, unlike DICE Player,
Stick it! offers a neat feature on higher-end Android devices called Multi-
View. This essentially allows for multiple windows to play back different
video content at the same time. It’s an awesome technology demo, but I
honestly haven’t used MultiView in many real-world scenarios. And as
you can imagine, playing several videos at the same time can be rather
taxing on your battery and system resources. But for a whiz-bang Android
showcase program, Stick it! is hard to beat.

Now that we have all the visual customization tools and applications that we
need to have Android’s home screen look and behave the way we want, let’s
apply these ideas to re-create two home screens. One will emulate a competing

15. https://play.google.com/store/apps/details?id=com.inisoft.mediaplayer.a
16. https://play.google.com/store/apps/details?id=com.myboyfriendisageek.airbrowser
17. https://play.google.com/store/apps/details?id=com.myboyfriendisageek.stickit

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 22

phone operating system, and another will re-create the look and feel of a
popular desktop operating system.

2.4 Home Screen Customization


Part of the fun of having the level of customization that Android allows is to
re-create familiar computing metaphors. We’re going to do just that with a
quick walk-through of applying themes, widgets, and floaters to emulate the
look and feel of an alternative mobile OS platform. The other will be the re-
creation of a prevalent desktop operating system. Let’s begin by emulating
Microsoft Windows Phone.

Emulating the Windows Phone Look


Our first emulated home screen will be that of a Microsoft Windows Phone.
Like many themes available for free download from Google Play, the GO
Launcher EX Windows Phone 7 pays homage to the clean interface that the
Windows Phone user interface offers.18 While this theme doesn’t completely
redefine your Android’s phone behavior to emulate a Windows Phone, it does
provide a way to dress up the background and icons to give the appearance
of a Windows Phone–inspired home screen.

If you’re using the GO Launcher EX as your launcher of choice, installing


this theme is a breeze. Simply download it from Google Play and select it from
the list of themes in the Go Launcher preferences screen. On the other hand,
if, like me, you’ve opted to use TeslaCoil’s Nova Launcher Prime as your pre-
ferred Android launcher replacement, there are a few more steps you need to
take to incorporate the graphical elements contained in this Windows Phone
theme.

Configuring Nova Launcher Prime


After the theme has been downloaded, open Nova Launcher Prime’s settings.
Before you replace anything or alter your existing launcher settings, make a
backup of your existing Nova Launcher Prime configuration by selecting the
Backup and Import option. This will display the Backup and Import screen,
as shown in Figure 10, Nova Launcher Prime's Backup and Import screen, on
page 23.
Select the Backup label and name your backup or accept the default name of a
date stamp for your backup file. Now if something unexpected should happen
during the import of a new theme or you don’t like the way the new theme looks,
you can easily restore your current launcher layout and behavior.

18. https://play.google.com/store/apps/details?id=com.gau.go.launcherex.theme.wpsevenstyle

V413HAV report erratum • discuss


Home Screen Customization • 23

With a backup made, select the Import label from the Backup and Import
screen. Nova Launcher Prime will remind you that your existing launcher
settings will be replaced by the theme being imported. You know, the one you
were supposed to make a backup of, right? Since you do have a backup of
your current configuration, return to the Nova Settings screen and select the
Look and Feel option. From there, choose the Icon Theme option. The list of
the various themes installed on your Android device will be displayed, as
shown in Figure 11, A selection of installed icon themes.

Figure 10—Nova Launcher Prime’s Figure 11—A selection of


Backup and Import screen installed icon themes

Now we’re going to use Nova Launcher Prime’s ability to import icons from
other launcher application themes. In this case, we will borrow some Windows
Phone–like icons from a Windows 7 GO Launcher theme. Choose the GO
Launcher EX Windows Phone 7 theme from the list. This will replace icons
for standard Android programs such as Browser, Email, and Settings with a
Windows Phone icon lookalike. Arrange your choice of applications on your
home screen accordingly. Press and hold on the home-screen background to
either change it to a solid color or incorporate a matching Android wallpaper.
I prefer the live wallpaper that is installed with the Moon Phase Pro program.

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 24

Tinker with the layout until you achieve the look and feel you’re comfortable
with. When you’re done, it may look similar to the one shown in Figure 12,
A Windows Phone theme.

In the next example, we will use a free theme


originally designed for ADW.Launcher and
pull in its icon assets to reflect a popular
desktop OS.

Emulating the OS X Desktop


For this next theme, you can either use the
launcher it was initially designed for
(ADW.Launcher) or use the icon import capa-
bility of Nova Launcher Prime, as we did in
the previous example. And as before, it’s
always a good idea to make a backup of your
existing settings in case something goes wrong
or you want to return to your original
launcher settings.

Install the ADW Theme MacOS Theme from


Google Play.19 Then, just as we did for the
Windows Phone theme, go into Nova Launcher
Prime’s settings screen. Select the “Look and
feel” option followed by the Icon Theme option. Figure 12—A Windows Phone
This will display a list of compatible themes theme
that Nova Launcher Prime can use. Select the
ADW MacOS theme from the list. Doing so will replace some of the standard
Android program icons with facsimiles of popular Mac OS X icons.

Next, replace the home screen’s background wallpaper with a Mac desktop
wallpaper. Launch the default Android or Google Chrome browser, search
Google Images for “Mac desktop wallpaper,”20 and select any of the ones that
appeal to you. Set the image to your wallpaper by long-pressing the image of
choice. A pop-up menu will appear, as shown in Figure 13, Setting background
wallpaper using an image from the Web, on page 25.

Select the “Set as wallpaper” option. This will download the selected image,
save it locally to your Android file storage, and set the image as the default
home-screen background.

19. https://play.google.com/store/apps/details?id=akglo.themes.macos
20. https://images.google.com

V413HAV

V413HAV report erratum • discuss


Next Steps • 25

With the background wallpaper set, create


shortcuts to popular Android programs such
as Browser, Email, and Settings on the home
screen. Complete the effect by running a
floater application like Stick it! to give the
home screen the look and feel of a mini OS X
desktop computer, as shown in Figure 14, Re-
creation of the OS X desktop, on page 26.

Making Your Own Home Screen


Now that you have an idea how to apply
existing themes to re-create familiar desktop
platforms, try making your own themes using
a similar approach. Go retro and re-create a
Commodore Amiga or Atari ST desktop on
your Android. How about blending several
desktop metaphors into your own unique
creation? Depending on how artistic you are,
you can even create your own background
and icon images based on a favorite interest Figure 13—Setting background
or hobby. Android allows you to explore and wallpaper using an image from the
apply your ideas at your leisure. Web

2.5 Next Steps


This chapter showed just how easy it is to customize the Android graphical
user experience to your liking. Whether it’s embracing the mobile lifestyle to
the fullest or harkening back to a legacy PC user experience, Android gives
you the freedom to choose how you want the interface to look and behave.
This is a significant advantage, especially compared to platforms like those
powered by Apple iOS. Android allows you to express yourself without jail-
breaking or rooting your device, something that might be required to do to
achieve the same effect on other mobile platforms.

Now that you have the knowledge and the tools to customize your Android
device the way you see fit, explore the numerous themes available for down-
load. If you’re using TeslaCoil’s Nova Launcher Prime, you will find that most
background and icon themes are compatible. However, most graphical
embellishment behaviors that accompany these themes, especially those
written for Go Launcher, don’t work as expected, if at all. Still, there are
hundreds of freely available themes to choose from, and that number is
expanding every day. If you don’t find one you like, you can create your own

V413HAV report erratum • discuss


Chapter 2. Personalizing Your Home Screen • 26

Figure 14—Re-creation of the OS X desktop

by converting pictures you took with your Android’s camera into home-screen
backgrounds and icons. Your first attempts might not be works of art, but
they will most definitely express what you want your mobile computing
experience to look like!

In the next chapter, we will explore how to customize the other side of the
user experience by focusing on audio. Specifically, we will learn how to
leverage audio in Android to augment and in some cases even replace the
Android user interface. Get ready to listen up!

V413HAV report erratum • discuss


CHAPTER 3

Listening to Your Android


Customizing your home screen’s look and behavior is visually stimulating,
but there are so many other facets of Android that allow it to be personalized.
In this chapter, we’ll take a look at interacting with the information that your
Android device can deliver.

For example, did you know that your Android can speak to you? Ever since
the Android 1.6 OS release, Android has had built-in text-to-speech (TTS)
functionality that could convert text into spoken words. However, it wasn’t
until the release of Android 4.2 that this TTS technology was actually tolerable
to listen to for long stretches. Earlier releases were robotic and lifeless. The
4.2 release includes a far more natural and less obnoxious voice. And if this
default voice isn’t to your liking, third-party text-to-speech synthesis products
like those from SVOX offer a selection of more than forty voices in multiple
languages.1 Before 4.2 came along, I used SVOX for my TTS needs.

But before we get to hear our phone, we should optimize our listening envi-
ronment for on-the-go audio data consumption.

3.1 Wearable Computing


With all the recent interest in wearable computing, people often forget that
an Android phone already is a wearable computer. I have been using my
Android phone as a wearable computing device for years. Let me explain.

The term wearable computer has a broad definition applying to everything


from a wristwatch to a powered laptop strapped to a backpack. In terms of
my Android phone, I wear it in a case attached to my belt loop. However,
rather than reaching for the phone every time I hear its message chime, I
have written scripts and applications that inform me of those messages

1. https://play.google.com/store/apps/details?id=com.svox.classic

V413HAV report erratum • discuss


Chapter 3. Listening to Your Android • 28

without ever having to remove the phone from its case. Email, text messages,
meeting notifications, countdown timers, motivational reminders, and other
information are controlled and delivered via my audio headset.

This chapter will show you how to put the pieces into place to allow you to
do the same thing. The setup is simple and inexpensive. And unlike Google’s
much hyped and considerably more expensive Glass project, my Android
wearable configuration doesn’t obstruct or distract my vision in any way.

Many people prefer to put their smartphones in their pocket, but I find it far
easier to use a wired headset when the device is holstered in a case strapped
to my belt. I prefer the Case Logic TBC-412 model. Even though this product
is officially designated as a video camera case, I find that it snuggly fits my
Galaxy Nexus even with the added thickness of a 3850mAh extra-capacity
battery. It also protects the phone from the elements, whether that is a drizzle
of rain or a dusty biking trail. The price is also cheaper than custom-designed
slip cases made specifically for the phone.

With the phone safely enclosed, run a headphone wire from your shoulders
to the phone. You can run the wire between layers of clothing to keep it out
of the way. Some headsets come with a helpful plastic clip that allows you to
put some slack into the wire. That keeps the earphones from tugging at your
ears. I attach this clip to my shirt collar to keep the left and right earphone
wires from slipping as I walk. The headphones I use on a daily basis are a
cheap single-button design with a built-in mic that is compatible with most
Samsung Galaxy phone models. These can often be found on Amazon for as
low as a dollar plus shipping. Note that the headset you use must have a
headset button, since you will use that button to answer calls, start and stop
audio, and run applications.

You can opt for a more expensive headset or earphones tailored to your phone
hardware. You can also choose to go entirely wireless via a Bluetooth headset.
But I have found from years of using my wearable configuration that these
choices produce annoyances. For expensive wired headsets, I find that the
wire at the stem of the headphone jack becomes weak over time and eventu-
ally loses either the left or right ear connection. I have even tried shielding
the wire from this wear and tear by looping the wire at the stem of the head-
phone jack and tightly wrapping it with electrical tape to no avail.

As for Bluetooth headsets, I find that the sound quality still hasn’t quite
matched the frequency ranges offered by wired headsets. There is also the
hassle of having to recharge the Bluetooth headset’s battery before use. And

V413HAV report erratum • discuss


The Sound of Data • 29

it can be a pain when that charge dies midway through the day without
having the means to recharge it until you’re home.

If you choose a wired approach, you need to manage the path of the wires
from your ears to your encased Android. Depending on the type of activity,
you can try running the wire in between your outer and undershirts, either
in front or back of you. Gadget-friendly clothing from progressive fashion
designers like ScottEVest includes shirts and jackets with dedicated enclosures
to run headphone wiring through so as not to flop around and get in your
way.2

After spending a wad of cash on replacing expensive earphones and wireless


headsets, I have reverted to cheap, throwaway headsets. They sound fine and
offer nearly the same level of durability as more expensive alternatives yet at
a far lower replacement cost.

With the headphones in place and the headphone button in a location that
is easy access, you can use this button to control the basic features of the
phone. Answer an incoming phone call as well as pause and play music with
a single short press of the center headphone button. The basic button press
behaviors are more or less universal across all Android phones that support
headset controls.

With your Android by your side and your audio headset on, let’s next turn
our focus to the software involved in voice recognition and spoken text inter-
action.

3.2 The Sound of Data


Before we can have Android speak to us, we first need to give it a voice. Setting
up TTS on Android 4.2 and newer is easy. Select the “Language & input”
option in the Settings program, then scroll down and select the “Text-to-speech
output” item. This will display the text-to-speech output settings shown in
Figure 15, Text-to-speech output settings, on page 30.

The default preferred speech engine in Android 4.2 is Google’s own TTS
technology. If you have SVOX or another third-party engine installed, it will
also be listed on this settings page. From this screen, you can also modify
the rate of speech playback, ranging from very slow to very fast. I prefer the
default normal speed, but try each setting to see which of the five playback
speeds works best for you. Select the “Listen to an example” option to hear

2. http://www.scottevest.com

V413HAV report erratum • discuss


Chapter 3. Listening to Your Android • 30

Android speak at the playback speed you chose. And now that we know
Android can talk, let’s explore how we can talk back to Android.

Running Android 4.2 and newer, you can hold


down the earphone button for about a second,
and the Google Now service will pop up,3 ready
to submit your query to Google for processing.
In addition to submitting who, when, what,
where, why, and how questions to Google’s
search engine, you can also command certain
aspects of the phone by voicing key phrases,
such as the following:

• “Call <contact>” will locate the contact


name most closely matching your spoken
entry and place a phone call to that con-
tact.

• “Listen to <track>” will play back the


requested music track using the default
music player.

• “Go to <URL>” will open a web browser


and display the requested URL.
Figure 15—Text-to-speech output
• “Open app <app name>” will launch the
settings
application, assuming it is installed on
your device.

• “What time is it?” will display the time.

• “Set an alarm for <time>” will set an alarm to sound at the requested
time.

• “Remind me to <task> at <time>” will convert your speech to text and add
the converted statement to your default calendar at the designated time
on the current day.

• “Navigate to <destination>” will map a route from your current location


to your stated destination.

So, that’s pretty cool, but Google Now has two notable drawbacks. First, while
Google’s voice recognition and speech-to-text translation services are amazing,

3. http://www.google.com/landing/now/

V413HAV report erratum • discuss


The Sound of Data • 31

they’re far from perfect. Try any of these phrases on a noisy bus or outside
on a windy day, and you’re not likely to see the results you expected.

Second, Google Now requires an Internet connection to work. That’s right. If


you want to play a song that is already stored on your device, ask to open an
application, or play a music track, Google Now has to submit your converted
speech-to-text request to its web service for these things to happen.

You would think that’s because Google needs its server farm to chew through
your speech input, convert it to a text string, and figure out the meaning of
the submitted phrase. But that doesn’t explain why Google offers offline
speech-to-text translation in Android 4.2 and newer. Until Google creates an
API that allows developers to access this offline speech-to-text translation
service, developers need to continue submitting spoken phrases over the
Internet to Google’s servers.

The takeaway from all this is that if you live and commute in a well-connected
city where wireless Internet connectivity is trustworthy, fast, and ubiquitous
and you’re not concerned about the voiceprint data Google is collecting from
your audible queries, then Google Now can be mighty helpful at times. But
while Google Now does a good job of translating responses such as the time
and reminders into audio, most answers require looking at the screen to
review the replies.

When I’m on the go, whether walking crowded city streets to work or riding
my recumbent along winding bike trails, I really don’t want to pull my phone
out of my pocket to see who sent me a text message and what they said, view
any upcoming events on my calendar, or simply check the time.

Fortunately, several hardworking Android developers have created applications


that address these needs. Let’s take a closer look at some of my favorites.

Talking SMS and Caller ID


Talking SMS and Caller ID offer hands-free text-to-speech announcements
of inbound text messages and calls.4 Knowing that you won’t miss an impor-
tant message or wonder whether the call you’re receiving is from someone
worth stopping to talk to is a nice anxiety dissipater. When you accept the
application’s permissions, it has complete access to your contacts list. If an
inbound caller’s phone number isn’t associated with an existing contact, the
program will read the phone number instead. If an SMS is received from an
unknown contact, it won’t bother reading the message (kind of nice when

4. https://play.google.com/store/apps/details?id=mahmed.net.spokencallername

V413HAV report erratum • discuss


Exploring the Variety of Random
Documents with Different Content
Webster, Daniel, leader of the American Bar, 27; Emerson on, 5; effect of
his support of Fugitive Slave Act, 7; comparison with Gladstone, 6;
influence of, 213; his eulogy of Massachusetts, 1, 2; his masterpieces as
an advocate and orator, 8, 9; Wendell Phillips on pro-slavery views of,
8; personal magnetism of, 9, 10; his political support of Taylor, 4, 5;
"room at the top," 367
Welles, Mr., 131
West, Mrs. George Cornwallis. See Churchill, Lady Randolph
White, Andrew, public offices held by, 16
White, Holt, correspondent of Tribune, 231-234; brings story of Sedan to
Tribune London office, 236-242; his story of Spicheren, 232-234
Whiteside, Solicitor-General, 46
Whitman, Sidney, 185
Whitman, Walt, 216,218
Wightman, Mayor of Boston, action of, during Boston riot, 99-102;
incompetency of, 103
William II, Emperor, visits S.S. Teutonic, 424-425
Wilson, General, conversation with, 147-148
Wilson, Henry, effect of his election as Governor of Massachusetts, 84
Winthrop, connection, of with Boston, 4
Wolff, Sir H. D., intimacy of Lord R. Churchill with, 326
Wolseley, Rev. Dr., President of Yale University, 13

Yale University, distinguished alumni of, 13-19; rigid discipline at, 24;
eminent professors in, 20-28; sectional antagonism in, 25-26;
theological atmosphere of, 13
Young, John Russell, succeeds Gay as managing editor of Tribune, 163;
adopts suggestion to establish Tribune office in London, 220-221
*** END OF THE PROJECT GUTENBERG EBOOK ANGLO-AMERICAN
MEMORIES ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the free


distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only be


used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.

1.E. Unless you have removed all references to Project Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is derived


from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is posted


with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute this


electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the Project
Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or providing


access to or distributing Project Gutenberg™ electronic works
provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™


electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for


the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.

1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,


the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.

The Foundation’s business office is located at 809 North 1500 West,


Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many
small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws regulating


charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states where


we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot make


any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.

Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.
Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.

You might also like