Timelapse Camera lets you use an old Android phone or tablet as a networked
timelapse camera. It can use the front, rear, or both cameras with specified
resolutions. It can upload photos to Google Drive or via HTTP(S) POST. It can
also save the photos to local storage. You can have it take a photo every
minute, every hour, every day, etc.
As most Android devices have a camera, battery and wifi hardware, it does not
need any wires to act as a timelapse camera. Depending on your device and
time delay between shots, it
could potentially run for several weeks without charging.
As an option, it can delete old photos from Google Drive. You can select
how many old photos to keep and any more than that will be deleted.
There are many options to reduce power use. Wifi can be toggled
automatically and the screen can be turned off on newer versions of Android.
The scheduling for the camera uses Android's internal "alarm" mechanism so
the device can sleep between shots.
I'm having trouble uninstalling. What's going on?
It's likely you authorized the app as an administrator. This status is necessary for turning off the screen to save power. Your device may require you to de-authorize the administrator status before allowing you to uninstall. You may find this in Settings->Security->Device Administrators.
I'm having a problem. What should I do?
Please email me with a thorough description of the problem and how to reproduce it. There are a lot of hardware and software configurations out there and I can only test so many of them. Hopefully we can figure out an easy fix for you. My email address should be at the top of this page.
What's with all the permissions needed?
Indeed, it requests a lot. These are mainly for saving power.
WAKE_LOCK is used to keep the device from sleeping while focusing. CAMERA is
needed to take photos. WRITE_EXTERNAL_STORAGE is needed to save files locally
(option). INTERNET is needed to upload via HTTP(S) (option). ACCESS_WIFI_STATE
is needed to wait for wifi before saving. CHANGE_WIFI_STATE is needed to
enable/disable wifi to save power. ACCESS_NETWORK_STATE is needed for some
basic reason. WRITE_SETTINGS is needed to dim the screen to save power
If you are worried about this, the source code is available to download
here. You can browse it to see exactly what the app does.
I'm getting a force-close. Should I report it?
If it's frequent (more than once or repeatable), please let me know! If it's
extremely rare, please mention that when you report it.
How do I configure my web server for HTTP POST saving?
See the sample.cgi perl script included with the source code. The
raw JPEG data are saved via POST, unmodified. The camera name is sent via
What kind of password or encryption is used?
If you use HTTP POST, encryption will not be used and your password will be transmitted in plain-text. This should be fine for a private network.
If you are not using a private network, you
should use HTTPS POST instead. If you use HTTPS, everything will be encrypted reasonably well.
How do I select HTTPS instead of HTTP?
Your server will need to be configured for HTTPS. After that, you simply enter an upload url that starts with https:// instead of http://.
How do I enter a username and password for HTTP(S) authentication?
Suppose your username is frozen and your password is yOgUrT. You would enter frozen:yOgUrT in the box titled Basic Authorization. Note the colon.
How can I pass more variables with HTTP(S) POST?
The app already sends a direction variable to indicate which camera took the picture (front, back, main). You can send additional variables by modifying the URL. For example, entering https://yourhost.com/path/sample.cgi?location=garage would send a location value with the photo. The app is smart enough to append the direction variable to such a URL.
I'd like to compile my own version and put my own branding on it. Is that okay? How do I do that?
Yes, that's perfectly fine however your distributed version
must also be licensed under the GPLv3. You'll need the Android SDK and some
build tools. Please read the included README.txt and email me if you need help.
I have a great idea to improve the program. What should I do?
By all means, tell me about it! You're welcome to download the source and implement it if you're so inclined.