Archive

Posts Tagged ‘android’

My Android Apps

February 28th, 2010

The past 48 hours has been very eventful in my Android world. Thanks to the instructions on rootyourdroid.info (hey, it’s an expensive phone and locked hardware – I’m not fooling around the way I would with something more common), I rooted my droid and did a few minor hacks. Though, I must say, it pains me to see all of the post-rooting instructions based on access via adb, instead of using a terminal emulator on the phone. Also, last night, my mother (definitely not a technical person) for a Droid – and loves it! (My dad got one a month or two ago).

Anyway, in the last 24 hours, I’ve gone app-crazy. I thought I’d share some of my findings here. Unfortunately, while a few of the app/file managers out there do dump a list of applications, I can’t find one that dumps a list including the package names (which are required to create an effective link to the app). If any of you know of one, please enlighten me. For now, I’ll construct this list by hand (using the list from ASTRO 2.2.4), and maybe write an app to do it in the future.

(Note: These links all use the market:// URI scheme, so they’re only useful if clicked on an Android device with the Market app.)

  • AndFTP (1.3) – A good FTP/SFTP client for Android, includes pubkey-based authentication and host storage.
  • Android Battery Dog (0.1.2) – An app that runs as a service and collects detailed statistics on battery usage, including temperature, charge percent, voltage, discharge rate, battery technology and external power status. While it can display a graph or formatted data, its’ real shining point is the ability to export timestamped semicolon-delimited data files for external graphing and analysis.
  • Any Cut (1.0) – Allows you to create shortcuts on your home screen to almost anything, including Android OS Acitvities, direct calls or direct text messages.
  • ASTRO (2.2.4) – File manager that allows copying of files on the device (both internal memory and SD card), image and file viewing, listing/management of apps (including finding out the package name of an App), reading of tar and tgz files, etc.
  • Battery Widget (1.5.2, by mippin) – Very simple widget for the home screen that takes up one square and shows current battery level. When clicked, provides shortcuts to settings screens for display, GPS, WiFi and Bluetooth.
  • Compass (1.1) – Simple compass app. Shows a compass which seems to be accurate, current lat/long and current street address. Has extensive settings and some nice skins for the compass.
  • ConnectBot (1.6.2) – A very good SSH client for Android. Allows storage of multiple hosts, pubkey-based authentication (with a master password), etc. Unfortunately, doesn’t seem to have any way (that I can find) to enter certain characters, such as tab and pipe (|).
  • Dolphin Browser (2.5.0) – An alternate browser for Android. I haven’t used it extensively yet, but it shows multiple tabs at the top of the screen like Firefox (easier to switch between tabs than the stock browser’s Menu -> Windows) and supports iPhone-like multitouch on the Droid.
  • drocap2 (2.07) – Screen capture program (requires root). Allows you to trigger a capture from the notifications bar and stores captures on the SD card.
  • DroidLight (3.0) – Nice twist on the usual flashlight app. By Motorola, this app triggers the camera’s flash LED in a steady burn mode, providing very good light output. Probably a real battery killer.
  • FoxyRing (1.12) – This was an ANdroid Developer Challenge winner and, among other things, it claims to monitor ambient sound levels and adjust your ringer volume to match them. Unfortunately, due to the overly restrictive End User License Agreement (EULA), specifically the strong provisions against reverse engineering and redistribution, I was forced to uninstall the app before even trying it.
  • GPS Status (3.0.3) – Very nice app. Provides a display like a real GPS, showing the location and status of various satellites (in a rotating compass), heading and orientation, number of fixes, estimated error (DoP), signal strength graph for stelites, speed, altitude, pitch/tilt of phone, magnetic field, acceleration, coordinates and time of last fix.
  • iPerf (1.07) – An iPerf client for Android that seems to work fine. How cool! Seems to be a wrapper around the binary, lets you specify CLI arguments, shows console output.
  • Meebo IM (22) – A simple, good, multi-protocol IM application.
  • Metal Detector (1.2-RELEASE) – Maybe not that useful, but way cool. The Droid (and perhaps other phones?) uses the compass to detect magnetic fields to trigger the modes for car dock and multimedia dock. This turns it into a metal detector. Wonderful cool-ness factor.
  • Nagroid (0.0.7) – A Nagios watcher for Android. Can be configured with only one URL, but can do HTTP Basic Auth and handle self-signed SSL certs. Options to hide everything that’s OK, and show only unhandled (un-acknowledged) problems. Also can start a service to poll and alert at regular intervals. Only down side is that it only handles one Nagios URL.
  • Network Discovery (0.2.7.1) – Intersting little app that I haven’t played around with much. Does port scans of IPs and runs a “network discovery” of the LAN, though it doesn’t say whether it is active (ping/port scanning) or passive (ARP). Displays info on devices (IP, MAC address, decodes MAC manufacturer name from address) and a button to run a port scan.
  • OSMonitor (1.1.0) – Good process monitor for Android – shows running processes. load from each process, total CPU usage, network information for all NICs (WiFi, BT, cellular/PPP), active TCP connections, battery status, storage status (of ALL filesystems), and internal log.
  • Ping (1.5.3) – Simple ping app. Lets you enter an IP and select how many pings to send out. Shows console output.
  • Shazam (1.3) – Yup, same thing that was the killer app for iPhone.
  • SMS Backup & Restore (2.1) – Allows backup and restore of SMS data to/from SD card, as an XML file. Good for Droid users who experience the disappearing SMS bug.
  • Speed Test (1.7.0) – A simple speed test app for Android from speedtest.net. Not sure how accurate it is, but it does upload and download tests over WiFi or cellular/PPP.
  • Spirit Level Plus (1.2) – Simple but cool. Spirit level for the phone, using the builtin accelerometer. Seems relatively accurate.
  • StopWatch (1.07) – AWFUL. It’s a stopwatch app, but I could not get it to stop displaying stuff in the notifications bar.
  • Terminal Emulator (1.0.4) – Terminal emulator for Android. It feels so wonderful to be able to pull up an app, pop open the keyboard, and type “su” on my phone. On the down side, once again, I can’t figure out how to enter the pipe or tab characters, and I don’t know what shell the phone has on it.
  • Wifi Analyzer (2.2.9) – REALLY COOL. Vaguely WiSpy like, but I doubt it’s accurate. Shows a graph of spectrum utilization with SSIDs and signal strength, a time-based graph of signal strength per SSID, a simple list of APs with channel number, BSSID, frequency, signal strength and encryption, and a simple “signal meter”. Looks like it could be pretty useful.
  • WifiScanner (1.7) – Simple WiFi scanner app. Shows all detected WiFi APs along with SSID, BSSID/MAC, signal level, channel and encryption.

android , ,

Android 2.0.1 update

December 10th, 2009

So, I updated my Droid to Android 2.0.1 today. I’ll be honest that it didn’t work the way I’d hoped. When I woke up this morning (December 10th 2009) I had an alert dialog on screen telling me that an update was ready. It gave me three options: “Install Now”, “Install Later” and “More Info”. The More Info screen didn’t show me anything useful. Well, I clicked the “Later” option, figuring that when I got home tonight I’d turn on WiFi, do a packet capture on the router, and save all of the traffic (specifically including the name of the update server). Well, it kept reminding me all day at annoyingly short intervals – probably about every 10 minutes or so. Finally, when I was home and had the WiFi setup, I went to try it again and… yup… when I clicked on the “System Update” button in Settings, the only option I had was “Reboot and Install”.

So… first big bitch about the Droid… Verizon pushed out the update without my consent. I kept hitting “Later” because that was the only way to get the popup to go away. Apparently. after X times of hitting Later (and each time your only real options are Later or Now) it will download the update by itself. Once the update is downloaded, I’m assuming that it *may* just automatically install on the next reboot. That would be a bitch thing to do.

Anyway, the “More Info” screen, which provides (as far as I can tell) the only release notes for the update, states:

This software update includes enhancements to your DROID by Motorola. Approximate install time: 6-10 Mins. You will be unable to use your device or make emergency calls for the duration of the install. The software updates automatically, and your DROID will power off and on as part of this software update. For more information please visit: www.verizonwireless.com/droidsupport

Not too helpful. And pretty cryptic.

Immediately when the phone turned back on, the first thing I noticed is that the spin-style unlock button has been replaced with an iPhone-style slide button, and the same for the mute feature. Maybe it’s just me, but I also noticed that the on screen keyboard seems to react better to quick keypresses – perhaps they’ve enabled multitouch for this?

Unfortunately, I wasn’t able to find much release documentation from Google other than the API changes – no full release notes or changelog like I’d like. And not even a summary of changes that I could find.

At the VZW droid support site, I found a link to a PDF of “Why to Update” (local copy). This sheet lists the enhancements made by the update (”AP:ESD56/BP:C_01.3E.01P”, build ESD56) as:

  • OS stability is improved.
  • Battery life is improved.
  • Camera auto focus functionality is improved, and time between shots is reduced.
  • Enhancements for three-way calling.
  • Audio for incoming calls is improved.
  • When receiving a call on call waiting, the speakerphone now remains on.
  • Bluetooth functionality is improved; background echo is eliminated.
  • Improved Bluetooth phone book transfer of contacts to in-vehicle Bluetooth solutions.
  • After closing a GPS application, the GPS icon will now automatically be removed from the notification panel.
  • Users can now receive SMS and MMS messages after an EMS message is received.
  • SMS and MMS may now be sent to seven-digit addresses.
  • Google contact merging has been updated to accommodate seven-digit numbers.
  • Visual Voice Mail notices now arrive instantaneously.
  • The corporate calendar widget user interface is updated.

This tiny one-page (and very styish – looks like and in-store advertising piece) sheet obviously isn’t anything that could pass for release notes, especially from Google. It doesn’t even mention anything about the changed unlock button!

I’ll keep looking around to find a real feature summary/release notes/changelog, but here’s my running list (I’ll update) of what I’ve found:

  • Changed the unlock slider to a straight line.
  • On screen keyboard typing seems faster.
  • Photo taking is considerably faster, though it’s still painfully slow – it used to take about 10 seconds from shutter button to ready to capture next image, it’s now about 5 seconds.
  • The UI seems to be a bit more responsive overall.
  • I haven’t checked yet, but I’ve seen some forum posts about lost contacts and Facebook sync issues.

android , , , ,

Android links – maps, dial a phone number

November 22nd, 2009

If you’ve used Google search from an Android device to search for a business, you’ve probably noticed the two interesting “buttons” to the right of the search listing – “Get Directions” and a button for the phone number. It turns out, these are pretty easy to implement.

The “Get Directions” link is a simple link to Google Maps like This One. The links are actually pretty simple:

<a href="http://maps.google.com/maps?daddr=42+Pierce+Ave%2C+Midland+Park%2C+NJ+07432">Get Directions</a>

It just uses a regular Google Maps URL, with the destination address encoded. When the link is clicked in the Android browser, a dialog pops up asking the user whether he wants to open it with the browser or the Maps application. If Maps is selected, it automatically opens with the address from the URL in the destination input box, the phone’s current location as the start input, and gives easy access to directions and navigation.

The telephone links are a bit more interesting. Apparently, the Android browser uses the Phone app to handle the “tel” scheme, as defined by RFC 3966.Therefore, clicking a link like:

<a href="tel:2015555555">201-555-5555</a>

on Android will bring up the Phone app and pre-enter the digits for 2015555555. Luckily, it doesn’t automatically dial the number. If you want to give it a try and are using Android: 201-555-5555.

The final step is how to implement this. I don’t know if most mobile browsers (Blackberry? iPhone?) also support the “tel” URI scheme, or how they’ll handle Google Maps links. But if you’re looking to include Android-specific content, the user agent string from my Motorola Droid (Android 2.0) looks like:

Mozilla/5.0 (Linux; U;Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

I know that there are a number of PHP classes out there to detect browsers (like Chris Schuld’s browser.php) and some things to detect mobile device capabilities (like WURFL or Tera WURFL, both using the WURFL data). However, if you just need to know whether your user is on Android or not, I’d personally recommend just checking the user agent string for “Linux”, “Android” and “WebKit” until a better browser identification system is found, as these are not likely to change in the near future.

Uncategorized , ,

Droid Camera problem solved

November 18th, 2009

Gizmodo – The Real Reason the Droid’s Camera Fixed Itself.

Well, it’s definitely good news to know that the problem with the camera on my beautiful new Droid is only a software issue. However it’s not too reassuring to know that Google (or could it have been Motorola devs?) let code out which obviously has a bit of an issue with a… rather predictable… value.

android , ,

Motorola Droid – Volume way too low

November 17th, 2009

I’m not sure how I did it, but I’ve had my Droid for a few hours under a week – the phone’s uptime is about 187 hours – and I’ve already got a major problem. Sometime this weekend, somehow, the volume for everything got set way too low. Incoming call ringer, notifications, alarms, Google Maps Navigation, everything seems to be playing through the speaker at the regular in-call volume – i.e. the volume that it should be at if the handset is up to my ear.

I happened by one blog post mentioning this issue. The two resolutions mentioned were a soft reset and a replacement of the phone. Hoping for the former, I performed a soft reset – using the good ‘ol Ctrl + Alt + Del sequence – and this seems to have fixed it. Now I just have to hope that it stays fixed…

My personal theory is that some application – whether a code problem or a crash – left the speaker in a low-volume state. Most likely was my poking around in the hidden menus which, at one point, killed the Phone app process.

Tech HowTos ,

Weekend of Code (Android)

November 12th, 2009

The Droid is here (literally, sitting in my pocket), and I have the next two days off of work – plus the weekend. Minus personal commitments, that’s about two full (call it 16 hour) days to get some work done. While I have lots of things that could use my attention – a number of neglected projects, my big new PHPsa project, and some server consolidation at home – I’ve decided to dedicate the time to Android development.

I’ve got the ADK installed and running, and the emulator is wonderful (especially with the Droid skin). And I know it’s wrong, but I think I’m going to be developing the first app for Android 2.0 (especially given the new ContactsContract API in 5).

I’m having a few issues with Subclipse, even on the latest OpenSuSE 11.1, and still have a few things I want to do on the phone… but hopefully I’ll have a beta build of the app by the end of the weekend. I’ve already done most of the data modeling and sketched out the storyboard.

I’m not going to say much about what the app is until it’s ready, but it’s something targeted at people like me – SysAdmins with way too many things on their plate for their number of waking hours.

android ,

Droid!

November 10th, 2009

I don’t like writing posts with a low useful content quotient, but here goes.

After having only one new (i.e. not used) phone in eight years – and the one new one was a Treo 700p, obsolete when I bought it – I decided to bite the bullet. I bought a Droid! While I was almost dead-set on it before I even held it in the store, my feelings of love at first sight were even more clear when I started to play around with it.

So, here’s a little overview of what I did first, what my plans/questions are, and what’s next.

First minutes/day:

  1. Unpack everything and start to figure things out. Test phone, SMS, data.
  2. Setup IMAP email for my personal account (need to look into IMAP-IDLE).
  3. Go through the entire Settings menu and try to set things up. Find out that the default apps can’t be removed. The app screen, by default, is pretty full…
  4. Export my contacts from my Palm (no sync cable, had to use php-pdb to export a CSV, then manually edit ALL of them in Gmail.

So after having the phone for about 12 hours, here’s what I’ve installed on it:

  • Listen (Google Labs) – Great podcatcher app. The speaker is a bit too quiet for easy listening on the drive to work, so I’ll need to get one of those FM radio interfaces.
  • AnyCut – allows creation of arbitrary shortcuts on the desktop, including direct dial.
  • ConnectBot – full-featured SSH client including key-based auth and storage of multiple user/host settings.
  • Meebo IM – IM client. It does AIM, which is nice, but doesn’t do IRC.
  • Android Battery Dog – App that graphs battery voltage, temperature, capacity over time and also stores a simple CSV log (which I intend to parse out later for historical data).
  • Bookmarking for Delicious – Allows saving of bookmarks to del.icio.us (but not retrieval).
  • To Do List – A very simple To Do list app, until I find something that works with Google Tasks. No syncing.
  • VoiceMemo (JavaCodeLand.com) – A really simple voice memo app.
  • WiFinder (PGMsoft) – Pretty much useless. Shows a scan of WiFi networks, but only shows encryption, channel number, and signal strength in bars.

The few problems I’ve noticed so far:

  • The touch-sensitive buttons along the bottom row (specifically the search button) seem to be right where my thumb wants to rest when holding the phone in landscape mode.
  • As others have mentioned, the camera quality isn’t great, but it’s much better than my Treo 700p.

My list for future research/development:

  • WAP pages for my web-based personal finance app, fuel log, etc.
  • IMAP IDLE
  • Tasks/to do app that syncs with Google Tasks.
  • A Cycle System app.
  • How to quickly mute all sounds on the phone.
  • How to do tones by person or group for not only ringtones (phone) but also SMS, Email, etc. Also, a way to set certain hours of the day when audible alerts will be disabled, other than a specified whitelist (email, SMS, etc.)
  • Verizon Visual Voicemail
  • Do some development with the geolocation JS API.
  • Console on the phone?
  • SCP/SFTP program.
  • TV listings (perhaps a WAP version of my script that pulls from SchedulesDirect (unfortunately, due to their redistribution policy, this is a private, authenticated page).
  • Nagios checker/notifier
  • RSS reader
  • WAP page for PHP EMS Tools callin.
  • How to handle IMAP folders?
  • Script to backup Gmail contacts, other data stored with Google.
  • Thunderbird Gmail contact sync.
  • A wifi scanner/survey software that shows all of the important stuff like signal strength in dbm, noise floor, etc.
  • Something like kismet that integrates the GPS and wifi scanning.

android , ,

First big Android … fisaco

September 29th, 2009

Well, I wanted to call this a $#!^storm, but I don’t think it’s grown to those proportions yet. But any new platform will have its hiccups, and Google is relatively new to the OS world.

So, here’s the news. Google issued a legal Cease and Desist order to a developer Steve Kondik (known as Cyanogen). The story goes something like this… Steve is an active Android developer, doing a lot of work on the lower-level stuff (lower level than apps), including multi-touch and more home screens. His changes are essentially at the OS-level, and Android doesn’t have a full-fledged package management/patching mechanism like Linux distros, so making use of them requires recompiling stuff and re-flashing the device with a new ROM image (since the installation apps can’t handle stuff this low-level). Here’s the rub: in order to work on a device, the ROM image needs to include both closed-source Google apps and proprietary (device manufacturer) drivers. While these apps and drivers are available for download, the license terms prohibit redistribution. But in order for Steve to create a fully-functional ROM image, he has to include the closed code.

There are some writeups on this at Linux Magazine and a good, timely analysis at Linux Insider.

There’s also a clarification by Google’s Dan Morrill on the Android Developers blog.

So, what’s my take on all this (not that another guy taking about this is needed)?

Firstly, I think this is relatively minor. The community will work around it, whether with Google’s blessing or not. The bigger issue that’s coming to light is the fact that Google isn’t simply altruistic, they’re a for-profit entity. They have every right to be, and they have every right to exercise some amount of control over Android. The community needs to realize that Android isn’t a silver bullet, and isn’t even the Linux of the phone world. On the other hand, Google needs to realize two important facts: 1) the openness of Android is what’s driving developers to it, and they need to do all they can to continue that, and 2) most of those developers are flat-out used to running Linux with an all-GPL system, and aren’t used to the concept of not being able to roll their own distribution.

So what’s my advice?

  1. Google should further decouple their Apps from the Android platform. Specifically, instead of requiring users to back things up, they should provide a redistributable application that installs their other apps. Allow a user to flash a bare-bones community ROM image, and then pull whatever else they want from Google. If Google intends on toeing the line that Android is Free but the (Google) Apps aren’t, then Google should provide an acceptable means for users of community ROM images to easily and painlessly re-install the closed Google apps on that image.
  2. Google should require that handset manufacturers do the same. Create a redistributable application that can be part of community ROM images, which will (via tethering or whatever) download and install any proprietary device-specific drivers that are needed.

Bottom line of my opinion – it’s fine if Google exercises their full control over their own closed apps. But they should provide an avenue for non-technical end-users to easily upgrade a community (i.e. Free) ROM image with the expected Google Apps and device manufacturer software.

Tech News ,

Update

October 24th, 2008

It’s been a long month and a half or so. A bunch of new projects at work (and interviewing for a full-time position) and lots of school stuff, all on top of having my truck stolen, dealing with insurance and the police, and then recovering it, and dealing with insurance again. It’s a long long story, which I posted as a Note on facebook.

PHP EMS Tools is due for a major revision, and hopefully this will include, among other things, the following new features:

  1. Support for i18n.
  2. Install-time choice of using MySQL or LDAP as a roster and authentication storage system.
  3. Some vastly more efficient changes to the database schema, specifically dealing with scheduling.

I’m still working on some other big projects, namely the migration of this blog to WordPress, the migration of JasonAntman.com to some real CMS (Joomla, Drupal, etc.), and migration of my home internet connection from residential FiOS to “business-grade” Optimum Online (cable) – which will probably see a slight decrease in reliability from the amazing levels of FiOS, but will give me five static IPs and no ports blocked.

On the other hand, there’s been a wrench thrown into all of my plans for big projects (not even mentioning the projects that have been cast aside – TuxTruck, tuxOstat which is now down, and a bunch of others. That wrench is the T-Mobile G1, the GooglePhone finally come to fruition. I was psyched about Android when I first heard about it, and the idea of finally having a phone that I can develop for without learning a new language sounds amazing. I’ll admit that at $180 with a 2-year contract, plus $80/month for service (split about 50/50 between the voice plan and the unlimited data plan) it doesn’t make the best financial sense for someone whose car was stolen and now has 2 vehicles – only one of which I can afford – but I’m really excited. I’ve heard some not-so-good things about the quality of the GPS, and some of the apps currently available, but within a few months, I’d assume that the effects of open development will cause it to greatly surpass the functionality of my current Treo 700p, running my beloved Palm OS (which I’ve been dedicated to for the better part of seven years).

While the all-around flexibility of Android and its’ apps is definitely one of the biggest selling points, my own interest is mainly in the ability to quickly develop Java apps that bring my already-existing web-based forms and data to the desktop of my phone. It’s the simplicity that is my biggest interest – even for simple purposes, like converting the web-based fuel log I keep for my car(s) to a dedicated Java-based form on my phone.

Stay tuned…

Projects , ,