Android
My personal TOP10 Android Applications
This is a list of my personal TOP 10 Android applications (February 2014). It is a list of apps which I find very useful, creative or I use very often. However, there are many apps I use much more often but are not included in this list because they are just "too normal" like VoIP clients, TouchDown or different reader applications.
Nearly all of these apps require a rooted device, at least to provide the maximum functionality. For me, root is a fundamental requirement on my phone anyway.
The ribbon on the right shows all applications which I have currently (Feb 2014) installed. You may observe that I removed most of the Google apps due to privacy concerns (and the rest is restricted by XPrivacy). The one reason I still have some Google software installed is the AppStore.
#1: Total Commander
Not much to say about it. Total Commander is the best piece of software even developed for Windows. The fact Total Commander is also available for Android let me no choice for my smartphone OS. Total Commander is the first application I install on Android. With it, I can quickly backup, move and restore files. Addons are available for SFTP, LAN, FTP, WebDAV etc.
#2: XPrivacy
It turns out that privacy and security becomes the major issue for mobile operating systems. It becomes normal that all "Apps" assume to be connected to the internet anytime. It is an unfortunate development that most apps do more than they should and copy data such as location, address book etc to the "cloud". For this reason, a privacy manager is the most important functionality for my phone and one of the first installed apps. Many privacy managers are out there but I strongly urge to not use LBE due to its questionable source. Among the others XPrivacy is far the best solution: It is open source and allows most fine grained control which app is allowed to do what. As an example, the screenshot shows that I can "safely" use Facebook because there is not much it can do.
One of the great features of this app is that it does not restrict functionality but rather returns bogus data. For example, Facebook regularly receives different locations from around the world, different random serial number, phone number or IMEI number. If I choose to deny access to the address book, calender etc., the app is just presented with an empty list (as if the phone would be unused).
The paid version (absolutely worth the money) can import/export all settings and allows to send/receive app configurations from an online data base, based on majority votings of other users. Personally, I have never received a useful setting but I still upload my (restrictive) private settings.
#3: AFWall+
Similar as a privacy manager, a firewall is indispensable. AFWall+ uses the built-in firewall feature of the Linux kernel (iptables) and merely acts as a front end. It is important to block any traffic and do white listing only for those applications which really need to connect to the internet.
== #4: Titanium Backup Pro ++
With Titanium Backup, I start with my support experience. Usually I prefer applications from small developers who had fun writing good applications, are responsive and provide good support. I think TitaniumBackup started like that but has become a little bit like a big company: Before writing an email, you have to go through 10 steps until the developers finally receive the E-Mail. If this was successful you can just start praying to get a response. One time I did, three times not. Pro: I bought TiBackup in PlayStore and they provided me with a license file years later. Contra: Many requests are out there to include Tasker/Locale support. This makes backup scheduling just much more flexible! Unfortunately the developers do not seem to have any interest to include functionality or to provide information for intents etc.
However, from a functionality point of view, the app is a must have: I regularly backup all apps and data to SD card and sync back them up via rsync+ssh over WiFi. The app supports version history, restoring data from different systems, backup up and restoring system databases and much, much more.
#5: Tasker
Tasker is one of the greatest applications I have ever seen. It is not the first of its kind but to my knowledge the most powerful. It is an automating applications to fully automate Android. The ideas are unlimited. Tasker can react to nearly every event that can happen on a phone (incoming calls, SMS, sensors, locations, ...) and and control nearly everything. There are hundreds of plugins available. If you want to get an idea what can be done with Tasker, here is just a small list: http://tasker.wikidot.com/profile-index
On my old phone, I did really complicated, sophisticated things like auto-login in public hot spots, enabling car mode with different conditions, location based reminders and much more. Currently (Feb 2014), I use Tasker merely for simple tasks.
Activate USB Debugging/ADB only when unlocked
USB Debugging/ADB is automatically enabled when connecting via USB but only when when the screen has been unlocked previously.
Profile: @DisplayOff (29) Event: Display Off Enter: Anon (30) A1: Variable Clear [ Name:%ADBAllowed Pattern Matching:Off ]
Profile: @Unlock (26) Event: Display Unlocked Enter: Anon (27) A1: Variable Set [ Name:%ADBAllowed To:true Do Maths:Off Append:Off ]
Profile: USB (16) State: Power [ Source:USB ] Enter: Anon (24) A1: Secure Settings [ Configuration:USB Debugging Enabled Package:com.intangibleobject.securesettings.plugin Name:Secure Settings Timeout (Seconds):0 ] If [ %ADBAllowed ~ true ] Exit: Anon (25) A1: Secure Settings [ Configuration:USB Debugging Disabled Package:com.intangibleobject.securesettings.plugin Name:Secure Settings Timeout (Seconds):0 ]
Hackers Keyboard for ConnectBot
When I use the SSH client "ConnectBot", the keyboard is automatically changed to "HackerKeyboard" (including all keys like CTRL, ALT etc.)
Profile: ConnectBot (17) Application: ConnectBot Enter: Anon (18) A1: Secure Settings [ Configuration:Input Method/Hacker's Keyboard Package:com.intangibleobject.securesettings.plugin Name:Secure Settings Timeout (Seconds):0 ]
Exit: Anon (19) A1: Secure Settings [ Configuration:Input Method/Android Keyboard (AOSP) - English (US) Package:com.intangibleobject.securesettings.plugin Name:Secure Settings Timeout (Seconds):0 ]
Mute phone when flipping it
If I turn the phone to its back, silent mode is turned on
Profile: Mute@FaceDown (4) State: Orientation [ Is:Face Down ] Enter: Anon (5) A1: Silent Mode [ Mode:On ]
Take picture when PIN code wrong
Entering the wrong PIN code a certain amount of time, a picture is taken with the front camera and sent to me.
Profile: WrongPin (20) State: Secure Settings [ Configuration:Failed Login Attempts - Max: 5 ] Enter: Anon (21) A1: Take Photo [ Camera:Rear Filename:WrongPin Naming Sequence:Series Insert In Gallery:On Discreet:On Resolution:640x480 Scene Mode:Auto White Balance:Auto Flash Mode:Auto Focus Mode:Infinity ] A2: SendSilentMail [ Configuration:niki@nobaq.net / niki@nobaq.net / Pin Code Wrong Package:com.stedo.sendsilentmail Name:SendSilentMail Timeout (Seconds):0 ]
Online Backup
My device is backed up/synchronized over SSH to my server. The backup/sync strategy is split into weekly and daily backups. I use the following support applications:
- Unison to synchronize personal files (dropbox/cloud replacement)
- rsync4Android to backup files over SSH using rsync
- SecureSettings to execute blocking shell commands
- SMS Backup+ to backup call log/SMS to my IMAPS server
- Titanium Backup to create system backups
The backup logic is as follows: The backups should be started in certain conditions and repeated as long as they succeed (i.e., the condition is met). Then, the next backup should take place one day or one week later, respectively. To implement this, the action backup profile contains the conditions to be met (e.g., Wifi, power plugged, battery level, ...) as well as a repetitive execution pattern. The Init Task is linked to a logic task. It queries a state variable, e.g. %NextDailyBackup to determine if it should be executed. If the last successful run was less than one day, the actual backup task is called and the state variable updated.
As an example, this shows the backup logic for the daily backup:
Backup.Daily.Logic (2) A1: Variable Convert [ Name:%NextDailyBackup Function:Seconds to Date Time Store Result In:%next_backup ] A2: HTTP Get [ Server:Port:www.google.com Path: Attributes: Cookies: Timeout:10 Mime Type: Output File: Continue Task After Error:On ] A3: If [ %NextDailyBackup < %TIMES ] A4: If [ %HTTPR ~ 200 ] A5: Perform Task [ Name:Backup.Daily Stop:Off Priority:5 Parameter 1 (%par1): Parameter 2 (%par2): Return Value Variable: ] A6: Variable Set [ Name:%NextDailyBackup To:%TIMES + 60*60*24 Do Maths:On Append:Off ] A7: Variable Convert [ Name:%NextDailyBackup Function:Seconds to Date Time Store Result In:%next_backup ] A8: Notify [ Title:Backup.Daily Text:Daily done. Next: %next_backup Icon:null Number:0 Permanent:Off Priority:3 ] A9: Else A10: Notify [ Title:Backup.Daily: No Internet Text:No inet! Next: %next_backup Icon:null Number:0 Permanent:Off Priority:3 ] A11: End If A12: End If
The first if statement determines if the last backup was more than one day ago. Then, the availability of the internet connection is determined. If it fails, nothing happens. If all conditions are met, the actual backup is called (Name:Backup.Daily) and the state variable updated.
Daily Backup
The daily backup should be attempted if the following conditions are met:
- Power is supplied
- Battery level is between 50% and 100%
- Attempt should be repeated every hour
The actual backup synchronizes the "Niki" folder on the SD card via unison and backups call log/SMS to IMAPS server. In future, also new app data (*.properties, *.tar.gz) from TitaniumBackup will be backed up via rsync on a daily basis.
Profile: Backup.Daily (7) State: Power [ Source:Any ] State: Battery Level [ From:50 To:100 ] Time: Every 1h
Backup.Daily (35) A1: Variable Clear [ Name:%UNISONRET Pattern Matching:Off ] A2: Secure Settings [ Configuration:unison (Root) Package:com.intangibleobject.securesettings.plugin Name:Secure Settings Timeout (Seconds):0 ] A3: Wait Until [ MS:0 Seconds:0 Minutes:20 Hours:0 Days:0 ] If [ %UNISONRET Is Set ] A4: SMS Backup+
Weekly backup
The weekly backup should be attempted under the following conditions:
- Power is supplied
- Battery level is between 90% and 100%
- Connected via a Wifi
- Repeat attempt every hour
Currently, the weekly backup sync the complete SD card via rsync. This includes all backups performed by Titanium Backup.
Profile: Backup.Weekly (6) Time: Every 1h State: Power [ Source:Any ] State: Wifi Connected [ SSID:* MAC:* IP:* ] State: Battery Level [ From:90 To:100 ]
Backup.Weekly (40) A1: rsync backup for Android [ Configuration:SD2nobaq Package:eu.kowalczuk.rsync4android Name:rsync backup for Android Timeout (Seconds):200 ]
Other stuff
- Under certain conditions like date and time, power, battery, network connection, a weekly backup of the entire SD card is performed via rsync+ssh
- Similarly (without so restrictive conditions), a daily backup of SMS and call log is performed onto my own IMAPS server via SMS Backup+. Currently I am waiting for Tasker support in the unison application; then I can have a secure 1:1 synchronization for my most important data
- Under certain conditions, the "@Bed" mode is activated which enables a red filter, dims down the display, etc.
- Wifi is turned on and off only under certain conditions
- Entering the wrong PIN code a certain amount of time, all data on the device is erased (although it is encrypted anyway)
#6: K9-Mail and AGP
K9 is what Thunderbird is for me in Windows: A powerful IMAP client which has most of the functionality I need. Together with AGP, I can send and receive PGP encrypted messages.
Very important: K9 and AGP are open source!
#7: Graph 89
A good calculator is very important for an engineer. I own a TI92+ but it is heavy and bulky and obviously, I do not have it always with me. I already used a TI emulator on my laptop and later on my Windows Mobile smartphones and Graph89 was one of the first applications I installed and bought. It has all useful features you can think of like virtual link cable support, multiple profiles (to have TI92+ and TI89 in parallel), create screenshots, synchronize the clock, create/restore backups and many settings.
#8: Greenify
Most of the applications I just want to use "on demand" but they are just so "cool" that they want to be always available, update themselves etc. Greenify hibernates applications and only lets them run if they are actually called. I greenify nearly everything but the bare minimum. This makes sure that the app won't run when I do not want them to run.
In particular applications which is difficult to turn them off completely can be handled very efficiently such as Facebook, instant messengers and all this stuff with "social media" in it (Touchnote, Venmo, ...)
#9: Widget Locker + Tesla LED
I started to use WidgetLocker at a time when Android was not yet able to display owner information on the lock screen. However, WidgetLocket is still a very powerful replacement for the lockscreen and can be arbitrarily configured.
As can be seen on the screen, my configuration is as follows:
- Simple clock with date information, battery, alarm and owner information
- One slider for display brightness. Switches between "Auto" and "Lowest". If often happens that I turn on the phone outside and see: nothing. With WidgetLocker, I know that I just need to wish in the middle from left to right and I immideately see the screen.
- The other slider quickly switches between vibration, silent mode and ringing
- The green lock is the uncual unlock slider
- TeslaLED to quickly turn on/off the torch. Usually, a torch is need very quickly when you see nothing. Similarly as for the brightness slider, I just need to wish from left to right and I immideately have my flash light
- QuickNote widget to quickly take notes. If the device is not yet locked I can immideately take notes, otherwise I need to enter my PIN first
#10: Sleep As Android
Other remarkable apps
- ROM: cyanogenmod. Open source, no bloatware
- TWRP2 as recovery: This is the first recovery supporting encrypted devices. This is one of the most important features for me because an unencrypted phone is a no-go for me. With this recovery, I do not loose advantages of creating nandroid backups
- AdAway: Open source application to insert many questionable sites into /etc/hosts
- BetterBatteryStats: Since I suffer from heavy battery drain due to hardware issues, I use this app to track the battery drain as %/h and use gain detailed information about wakelocks
- dict.cc: dictonary with offline supprt. This app does not get internet access from me (except when updating the dictionary)
- FareBot: Read out and collect information about RFID tickes such as the one based on MIFARE/DESFire technology. For example, for my Clippercard (Bay Area) I can see my balance and a history of my rides.
- ConnectBot: Great SSH client (open source!)
- KeePassDroid: Open Source! Should be in my TOP10 list but I am still a little bit disappointed that I donated for this app but have not even received a small confirmation. Similarly, there are so many requests to implement support for attachments but the developer does not even respond to this requests!
- MobileVOIP: One of the very questionable apps I use and I do not like. I just add it to the list because it is one of my most frequently used apps (cheap phone calls to Europe)
- Mycelium: Bitcoin client - never used though ;-)
- NoteEverything: Quick note taking app supporting different types of notes which I use together with WidgetLocker to quickly take notes.
- Parcels: Small but nice app to track parcels. Many (if not all major) carriers supported including Oesterreichische Post, USPS, UPS, etc.
- PVSTAR+: A media player for Youtube. Really great! I would like to have this for my laptop!
- IPC Viewer: A viewer application for Hofers IP cameras. Just listed because I use it regularly. But technically, it's just poor work (no encryption etc.)
- RepliGo Reader: Definitely the best PDF reader for Android! Supports reflow for PDF documents
- rsync backup: Used together with Tasker to create backups automatically
- SecureSettings: Huge functionality extension for Tasker
- SMS Backup+: Backup SMS and call log to IMAP server
- TouchDown: At least the most secure PIM application for Android. Not perfect but does its job
- Unit Converter Pro: As the name suggests: Simple, plain unit converter, very useful for archaic units in the US ;-)
Common Stuff
Android device encryption is one of the most "must have" features but unfortunately Google messed it up completely: The coupled the encryption key with the PIN code. If is possible to decouple it and have a strong encryption key (to be entered at boot) and a weak PIN code: Android_Device_Encryption. The PIN code is only active when the device is booted and can be "controlled" more easily. For example, certain actions happen when the PIN code is entered wrong one or several times.
Just private Samsung Galaxy S3 notes: Samsung_Galaxy_S3_low-level_stuff