Android Python Timelapse

So It’s been a little while since I messed around with android scripting, but I just finished a fun script that someone may find useful. I created a small timelapse script that allows the user to choose the interval and the folder where it will save the pictures (on the sdcard).

Choose the interval to take pictures, in minutes. Default choices are 1, 5, 10, 30, 60 minute intervals, or choose custom and enter your own value

Choose the folder in which to save the pictures

Let it do its thing!

You can grab the file here: or copy and paste the code below:

import android, time, os

droid = android.Android()

def titleAlert():
title = 'Android Python Timelapse'
message = 'Welcome to Android Python Timelapse. In the following dialogs, you will be asked to choose your interval and the location where you would like your pictures saved. Enjoy! Questions or comments? Please send to'
droid.dialogCreateAlert(title, message)
response = droid.dialogGetResponse().result
return response['which'] == 'positive'

def chooseInterval():
title = 'Please choose your picture interval in minutes. To use a different value, choose Custom'
droid.dialogSetItems(['1', '5', '10','30','60','Custom'])
response = droid.dialogGetResponse().result['item']

if response == 0:
timer = 1
elif response == 1:
timer = 5
elif response == 2:
timer = 10
elif response == 3:
timer = 30
elif response == 4:
timer = 60
elif response == 5:
timer = droid.dialogGetInput("please enter your interval in minutes").result
timer = float(timer)
print "interval is: "+str(timer) +" minutes"
return timer

def chooseFolder():
title = 'Please choose where you would like to store your pictures'
captureTime = time.strftime("%Y-%m-%d--%H-%M-%S", time.localtime())
droid.dialogSetItems(['/sdcard/YYYY-MM-DD', '/sdcard/timelapse', 'Custom'])
response = droid.dialogGetResponse().result['item']

if response == 0:
folderStr = captureTime
elif response == 1:
folderStr = "timelapse"
elif response == 2:
folderStr = droid.dialogGetInput("please enter the name of the folder you would like to create: /sdcard/").result

print "folder set to: /sdcard/"+folderStr
return folderStr

def takePics(picfolder="timelapse", lapse=30):
loopvar = 'true'

while loopvar == 'true':
captureTime = time.strftime("%Y-%m-%d--%H-%M-%S", time.localtime())
captureLocation = '/sdcard/'+picFolder+"/"+str(captureTime)+'.jpg'
print "picture taken: "+captureLocation
interval = lapse * 60

lapse = chooseInterval()
picFolder = chooseFolder()
os.system("mkdir /sdcard/"+picFolder)

And here is the video I made after letting the script run for about 4 days. There was some sort of opening ceremony happening by our apartment, but we were out of town for the weekend. Glad I got it all on film! (It’s pretty slow going at the start, skip to about 1:40 where things start to get going)

check out my other SL4A script:

And my new cell stand in the shop!
(you can get it from Ponoko or Etsy from that link as well)

Universal Cellphone Stand

stand with phone
Hello! I’ve just added a new page on my site; the shop! My first product is one I recently created using the great laser cutting website It’s a stand for phones. I thought about it a while ago and decided to try out the Ponoko service. everything worked great! Check it out here at or on here You can purchase it right at my shop or either of those websites (they all use paypal, so it’s the same to me) Go get one!

30 Days of Creativity – Day3

Ok, the last post was from yesterday’s project. Today’s tiny project was to make the wallpaper into one for my Droid. I’ve never made one before. The first mistake was making it 480×854 pixel resolution, since that’s the size of the display. For Android phones, the wallpaper scrolls horizontally, so the actual dimensions needed to make a wallpaper for the Droid is 960×854. Got it! Screenshot of the wallpaper in action:
screen shot

Here’s the file if anyone wants it:
source file

Android Scripting Environment is Incredible: part I


Update As Edward Pain pointed out, the latest version of ASE (soon to be SL4A) changed the TTS and the way that dictionaries are called. I’ve updated this script to take these into account. Thanks Ed!

So I’ve been loving having the DROID around.  I don’t even mind carrying a phone in each pocket because it’s totally worth it.  My most recent obsession is the Android Scripting Environment (ASE)

Basically, it allows you to write code in high-level languages like python, bash, perl, etc, right on the device.  This is when a physical keyboard is really handy.  So I downloaded the app and started messing around with the included python scripts.  I’ve never coded anything in python before, but I have programmed in a bunch of other languages, so it really wasn’t hard at all.  By far the coolest pre-installed script was the Text-To-Speech (TTS) example.  I’m not sure what it is about making computers/devices say funny stuff that makes me laugh so much, but its really fun.

I soon noticed as I was cracking myself up over making the DROID say things like “Then I put my hands up, they’re playing my song” that I’d really like the option to repeat what it just said.  So I decided to code it.  Please be gentle on me; I do not profess to be an expert coder, I just hack stuff together till it works.  Any suggestions would be appreciated.

First thing I did was take the original code and wrap it in a while loop.  This will repeat the phrase as many times as I like, as long as the condition remains true:


"""Speak user generated text."""

__author__ = ‘ Brett Peterson <>’

import android

droid = android.Android()

message = droid.getInput(‘TTS’, ‘What would you like to say?’).result

repeat = droid.getInput(‘repeat’, ‘Repeat? Y/N’).result
while repeat == "y":
repeat = droid.getInput(‘repeat’, ‘Repeat? Y/N’).result


Continue reading

Google Developer Lab #ADL2010

Android Lab LogoSo about a month ago I registered for the Google Developer Labs World Tour.  They asked for the package name of apps we’ve developed, so I was pretty sure I wasn’t going to get in since I had just published my very first app.  Well, last week I received an email confirming my seat!

On Wednesday I showed up at the Googleplex and headed to the building that was indicated in the email.  Waiting in the lobby, I mingled with a couple other guys before we got to register and take our seats.  I was so excited I was almost shaking! – almost

The Lab was really helpful; they first did an overview of the android platform, the mission and goals of the product and how we are fulfilling that as developers.  It was all very motivational!  I wanted to crank out some code right then and there.  The speaker, named Justin, walked us through the stuff that’s new in Android 2.0+ and then the schedule mentioned a break before a code lab.  Justin told us that the lab would focus around a new section in the SDK for 2.0 – bluetooth.  Unfortunately, bluetooth isn’t supported in the emulator that we had all loaded onto our computers.  “Sorry guys,” Justin said “we’ve only got a couple test devices, so we’re all going to have to share.  You know what? Forget it, you’re all getting a DROID”

For a second it was pretty quiet; I think everyone was still waiting to see if he was joking!  He wasn’t! Other Google employees started handing out boxes and marking our nametags when we got ours.  I wasn’t surprised we got the phone because I had done my homework and heard that the other labs all got one, but man, it’s so fun to get free stuff!


First picture taken with the DROID

So we all quickly opened our boxes and got to work activating and trying out the phones (well, i guess not everyone, I saw a few unopened DROIDs pop up on Craigslist the next day…)  The lab was really useful and taught me the proper use for Intents and how these hooks can better integrate different apps.  I felt a little behind; I would catch up right as we were moving on to a new topic, but it was great.  I really enjoyed the entire experience.

Thanks Google for an awesome phone and for the free lab!  I can’t wait to continue developing for Android.  Look for new posts in the next few days as I enjoy finally having a physical device to test on!

Points – My First Android App

Update: Here’s the link to the new Android Market: Points!

So I finally finished my first Android app.  It’s called Points and it’s in the Market now!

This is a simple app and yes, there are others very similar to it already in the Market, but I wanted to make this more as a practice for me than anything else.  So with this app you can enter the calories, grams of fat, and grams of dietary fiber for the food you eat and calculate the points value according to the most recent Weight Watchers Points calculations.

home calc

The function that sets my app apart from the other options in the Market is the fact that you can then add those points to a daily total.  This way, you don’t have to try and remember how you’re doing for the day.

add reset
There will be some free updates coming, so please try out the app and send any questions/comments/suggestions my way!  Leave Comments below for quickest response, thanks!

EDIT: you can use the barcode scanner app and download it directly to your phone.  Just open up Barcode Scanner scan this:

and click “open with browser”.  It’ll take you to Points in the Market.