A few years ago, I tried to give some of my most-used websites a nice, clean look on mobile browsers by adding a stylesheeet with the “handheld” type. Then the iPhone came out and ignored them, and everyone copied that behavior, making it useless.

Somewhere along the line, I revisited the same CSS techniques, but used the “max-width” media query to change the layout on smaller screens. This seemed even better in the long run, since screen size matters more than whether a device is a desktop computer or a handheld computer. (The iPad was nothing but a long-standing rumor in those days, but demonstrates this clearly.)

The raw screenshots (click to view) are slightly larger, but since mobile devices often have denser screens, if you’re reading this on a desktop, it’s probably about the same physical size.

That worked great on the iPhone, and on the G1, which I updated through Android 1.6. I stopped testing it after a while, and no one commented on it, so I figured it was still working. (Reminder to self: that’s always a mistake.)

Last week I got a G2, which came with Android 2.2. Last night I visited one of my websites, and was presented with this shrunken, unreadable mess…because Android doesn’t actually use the real screen size anymore. It pretends it has a bigger screen so that it can present a desktop-like view and then let the user zoom around. Mobile Firefox does the same thing.

<rant>Why is it that every time I find a clean technique to use the same markup on both desktop and mobile devices, some browser manufacturer decides to bypass it in favor of giving the user a clunky imitation desktop view instead of one optimized for their experience?</rant>

*ahem*

Anyway, it turns out it’s possible to fix this problem with the <meta viewport tag> as shown here:

<meta name="viewport" content="width=device-width">

So I can provide nice, clean small-screen layouts again…after I add extra markup to every single page that uses these stylesheets.

Problem solved!

Well, almost. It fixes the layout…but it also prevents the user from zooming out for quick scrolling, which can be awfully useful on a long page.

Screenshots of the Barry Allen Flash profile, taken using the Android SDK emulator with stock Donut and Froyo images.

A few months ago, my phone stopped syncing contacts and messages (including missed-call and voice mail notices!) after I installed a new app. Email and text messages flooded in the moment I uninstalled it. At the time, I figured it could be the app, or it could simply be that the phone doesn’t sync if it’s low on space.

Now I know: It’s the lack of space.

Last night I updated Gesture Search, which pushed the phone into low-space territory. I figured I’d deal with it later. This morning, I noticed that it wasn’t reporting new messages on Gmail. Reluctant to uninstall any more apps, I followed Katie’s suggestion of clearing out old text messages…and freed up 1.5 MB. (I figure it’s the pictures. They’d better be worth 1,000 words, because they take up a lot more disk space.) A few seconds later, the @ popped into the notification bar.

You’d think that 7+ MB would be plenty of room to download email and text messages, or tell the notification system to pop up a new icon. As near as I can tell, though, if the “Low on Space” icon is visible, Android won’t sync anything.

Next time, I’ll make a point of cleaning things up quickly.

With luck, this won’t be a problem with my next phone. (Yeah, I’m still on the G1.) Whether I go for a Samsung Vibrant, a G2, or something else, it should have more storage on the phone and the ability to install apps to the SD card.

Sometime last week I noticed that I hadn’t received some alerts sent by text message to my phone. I figured it was probably a transient problem with the email-to-SMS gateway and didn’t think much more of it. Then on Sunday I added a contact to my address book in Gmail, and it still hadn’t synced to my phone a half-hour later. Again, I figured it was just a hiccup.

Yesterday, some more email-to-SMS texts vanished into the ether. I figured something must be up with the gateway, so I changed the alerts so that they would also send to my Gmail account, figuring that if the text messages failed, I’d still get a notice.

They didn’t show up either.

That’s when I realized that nothing on the phone was actually syncing: Not Gmail, not the contacts, not the calendar…and it just wasn’t receiving text messages at all.

I tried turning sync off and back on, manually syncing, restarting the phone (both a hard reset cycling the power and a soft reset, sort of the Ctrl-Alt-Delete equivalent using the green, red and menu buttons together), even clearing all the local data for Gmail, Gmail storage, and Calendar storage.

Well, none of that worked. It marked all the apps for syncing, but wouldn’t actually start.

So it was time to backtrack: What had I changed recently?

Well, I’d updated several apps. Off the top of my head I could think of Twidroid Pro and the Weather Channel, but I couldn’t remember what else.

I’d also installed a new app, Layar, an augmented reality app which I’d seen in an ad for some other phone last week, but hadn’t actually gotten around to trying out. Adding it triggered a low space warning, but the phone still had 6.8 MB free, which ought to have been plenty.

Curiously enough, the last successful sync was right around the time that I installed Layar. Hmm…

Okay, what the heck. I uninstalled it. Within seconds, the phone bleeped and picked up the test messages I’d sent to Gmail. Within a minute, several text messages arrived, including my test from this morning and two alerts from last night.

Well, that was certainly suspicious.

So I installed it again, and this time actually opened the app to try it out (making it display the location of pizza places as seen from my desk), and sent myself a test message at Gmail. I can’t say I was surprised when the test message showed up on my desktop, but not on my phone, even when I manually refreshed my inbox in Gmail. Within a minute of uninstalling the app again, the message showed up.

So, no Layar for me. I don’t know if it doesn’t work with the G1, with Android 1.6, or with something else I have on the phone…or if it’s not Layar at all, and the phone just needs more space to sync.

The message is clear, though: If your phone stops syncing, or stops receiving text messages, look at what’s changed. There’s a good chance that the problem is related.

Update: It’s been about half an hour, and the voice mail notice just popped up…for a couple of messages I received on Sunday! It looks like the problem was blocking everything that used the standard sync/notify system on the phone. Twidroid was working, so I guess it must use its own system.

Update 2: I’ve confirmed that it’s just the low space, not the particular app, that causes the problem.

Android and Me is reporting that all Android phones in the U.S. will get Android 2.1 updates — even the G1 — but that they may be missing some features and some models will need to be wiped as part of the installation.

That makes sense, because it would allow developers to reassign some of the space set aside for over-the-air updates and use it for a larger system instead — and maybe more space for apps.

The possibility that the G1 was headed for obsolescence before my 2-year contract was up didn’t bother me much at first, but I’ve watched as even Google has released high-profile apps that required Android 2. Sure, I doubt the hardware can handle Google Earth, and Buzz turned out to be a dud, but they’re signs that Android 1.6 isn’t going to cut it for much longer.

If it does require a wipe and re-install, I can deal with that. A lot of the key data is either synced with the cloud or stored on the SD card. With luck, T-Mobile and HTC will build a decent backup and restore into the process and I won’t have to reinstall all my apps, bookmarks, etc.

Update August 2010: This is looking less and less likely as time goes on.

I’ve been hoping to try out Google Buzz, but it hasn’t hit my Gmail account yet and it won’t run on my phone*…even though it’s a web app. Comments at Android and Me and at Mashable show that I’m not alone.

It turns out that Buzz uses HTML5 features (specifically appcache, database and location) to store local data and to detect your physical location…and those capabilities were added in Android 2.0.

The support thread mentions that they are “working on another version that will make Buzz for mobile accessible on older Android OS versions (and some other smartphones as well).” The browser in Android 1.6 and below supports similar capabilities through Gears, so they may be planning a Gears-based workaround.

This would be a lot less of an issue if it weren’t for the fact that most of the Android phones out there still run 1.6 or even Android 1.5. IIRC only the Droid and Nexus One have officially been updated to 2.0 so far**, so unless you have one of those two models, you’re more likely to get Buzz to run on an iPhone than Android.

Funny, that.

*I’ve got a G1. It can only access Buzz through the updated Maps app, which brought up a bunch of people in nearby office parks posting things like “Testing Buzz” and “WTF is Google Buzz?”

**A few other phones have had updates announced, but I don’t think any have actually shipped yet. I could be wrong.