Nifty tidbits

Nifty tidbits and random thoughts on technology and anything else that catches my fancy

Tag Archives: Android

Nexus 7 – First impressions and tips and tricks

So I got my Dad the 8GB Nexus 7. This is an awesome tablet – exactly what a good tablet should be. The UI is buttery smooth and things just fly. The hardware is not a compromise, excellent price point and overall a superb experience.

Of course, there are some things to deal with like 8 GB storage,lack of mobile data connectivity, lack of expandable storage and no rear camera. These aren’t issues at all as far as I’m concerned.

If I’m traveling with the tablet, then I always have the phone’s 3G data to tether to using WiFi tethering. The 8GB storage is only an issue if you’re playing the heavyweight games or want to carry all your videos or a ton of movies with you. Given the 8GB storage, I’m more than happy to load up a few movies/music before travel. Provided you have a good way to get files/data in and out of the computer and are OK with not carrying your complete library with you always, you don’t have to worry about the storage. A camera though would be nice – but then hey – you can’t have everything your way :) .

File transfer to/from PC

Which brings us to the topic of file transfers to/from your PC. Now wifi is really the best way to go – and I couldn’t find a way to make WiFi direct work with Windows 7. So for now, Connectify seems to be the best option. It runs in the background on your PC and makes your PC’s wireless card publish its own Wireless network. You can connect to this network from your phone and if you share folders on your PC, you’re set to move data around.

Now, on the Android side, ES file explorer is free and gets the job done from a file management/copying/moving perspective. I also tried File Expert but its more cumbersome. ES excels in multiple file selection and copying.

Ebooks

The one area where the N7 excels is for reading books. The form factor and weight are just right for extended reading sessions. However, Google Play books doesn’t work in India and so you need an alternate app. I tried out Moon+ Reader, FBReader and Reader+ – and out of the lot, FBReader was the best. Moon+ has a nicer UI but choked on some of my Ebooks. Reader+ didn’t get the tags right and felt a little clunky. FB reader provided the smoothest experience of the lot. I’m already through half of my first book – and did not have any issues. I have a decent collection of e-books on my PC but once I copied them to the N7, all the meta data was messed up. Editing metadata and grabbing covers is a pain on the tablet and best done on the PC.

This is where Calibre comes in – this is a full blown ebook library management app. It does a great job of keeping your ebooks organized and editing the metadata on them. It can also fetch metadata and covers from Amazon and google and update your collection. Once you’re done, transferring to the N7 is a little tricky. The first time, I just copied the library over to the N7 – but N7 showed each book thrice. Some troubleshooting later, found that the best way was to create an export folder and use teh ‘Connect to Folder’ feature to mount it as a destination. Then you can select all the books you want and use the ‘Send to destination in one format’ to publish EPub format to the folder. This generates one epub file per book with the metadata and covers embedded in it and you can then copy this folder over to the N7′s Books folder using ESFileExplorer

Playing movies on your N7 over WIFI

My movie collection is on XBMC – and XBMC is DLNA/uPNP compatible. Dive into XBMC system settings and make turn on the uPnP/DLNA services. Then on the N7, you can use uPnPlay. For playing video, it relies on having a video player app isntalled. I like MXplayer. Don’t forget to also install the HW Player codec for ARM V7 and to turn on HW decoding in the settings.

Playing movies on your TV from the N7

You wont be doing much of this as there isn’t a rear camera – but if you do decide to take a video or pics from the N7′s FFC, then you can use the uPnPlay to project them on to your TV (that is, provided you have a DLNA/uPnP compatible TV or compliant media center hooked to your TV)
For XBMC, turn on uPnp in settings and you’re done. XBMC should be able to discover your tablet and you’ll be able to browse and play videos.
If you’d rather use the table to control what’s played on XBMC, then turn on the setting to allow control via uPnP in XBMC settings. Now, in uPnPlay you can select XBMC as the play to device and playing any video/song, plays it on the tv.

That’s all for now… I’m loving this tablet and the stuff it can do… looks like I’d be buying a few more soon :)

Android WordHero – product lessons

So, yesterday I figured that now I’m an addict.. fully and totally to something called wordhero on my phone… it’s one of those games where you have a 4×4 grid of letters and you need to find as many words as you can within 2 mins. Nothing special… and there are tons of look alikes and also rans on the Google Play store. Even installed some of them and then removed them…

So what’s different? Turns out that there’s quite a few things – and apart from one, they’re all at the detail level. The most significant one is that there are its online only and everyone’s solving the same grid at the same time – so you get to see your ranking at the end. No searching for opponents, no clicking – just every game.
Apart from that, the main game idea is the same (form words on a 4×4 grid) so details are the only place where one can innovate… reminds me of Jeff Atwood’s post that a product is nothing but a collection of details.

So what are these details?

  1. Its online only. You can play only if you have an Internet connection.. otherwise, scoot!
  2. The information level and detail is just right: Tracing through the letters highlights the whole word; If you find a word, you see green; wrong word, red; dupe – yellow. At 10s, there’s a warning been upto 5s. Not down to 0… so it warns – but doesn’t distract. Simple. Effective. Efficient. Brillant!

Now sample the competition:

  1. Tracing – line through the letters, shaky squiggly letters when you pass over them and other sorts of UI idiocy, grid that’s too small, grid that isn’t a square, word check indicators at some other place. Sure, some of this is debatable..esp the ones around the bells and whistles. They looks great the first time, the second time and a few more times after that. By the time you hit the tenth time (if you do ), you start hating it.
  2. Offline mode – this is counter intuitive.. in fact, after playing wordhero, I ran to find one which had an offline mode. Once I found it though, surprisingly, I did not like it.. Turns out that there’s little thrill in forming words on a grid; the thrill is in seeing where you stand and if you’re improving.
  3. Timed mode – pretenders to the throne have untimed modes, customizable timers and so on. Didn’t work for me – 2 minutes is that absolute sweet spot where you can grab a game anytime… and have that deadline adrenaline rush work for you… Thought I’d do great on the untimed games – but while I scored more, it wasn’t significantly more. More importantly, it was missing the fun. Turns out that we want to see where we rank far more than we want to form words :D

So after promising myself one last game at 11 in the night yesterday and ending up playing up to 12:30 AM, I tore myself away from this satanic game. Kept the phone far away to ensure that I don’t pick it up again in the middle of the night and started thinking what makes wordhero tick. There’s nothing earth shaking about the reasons – but the effect of getting it right is surprising:

  1. Figure out what will tickle the right pleasure centers – and optmize like hell for that: This is hard… in wordhero, this is the global rankings per game and the stats… optimizing for this means that you take away offline mode totally. That isn’t a small decision – especially when an offline mode is easy to implement and feels like giving the user ‘more’. Tough to argue against it too – but as I’ve seen myself – something like that will kill the multiplier effect of seeing a large number of people play. Chances are, your users dont know that either – so no point asking them. Apple seems to have figured this out very well.
  2. Keep the UI simple and efficient – and show me what I need when I need it: Should look good for the casual user. For power users, it should be efficient and not irritating… so keep all those nice bells and whistles under control.
  3. Keep the options simple – I like options.. I like options more than what your average joe likes them… most of the times, I’ve seen the options that you didn’t know were there… but when you’re designing a game that’s 2:30 minutes from start to finish, I don’t want to think about options. More importantly, don’t ask me questions about it.. just start the damn game…

So does it mean that WordHero’s perfect? Far from it – but its successful by anyone’s measure. If you’re looking for perfection, you won’t ever launch :) . Some of the stuff that I’m sure they’ll get to at some point

  1. Better explanation of the stats
  2. Charts/trends over the stats instead of only the current value
  3. Better explanation of some of the UI color coding on the results screen.

Google Maps Navigation enabled in India!!

Just came across an awesome piece of news – Google Maps now has turn by turn, voice guided directions officially in India!!

Uptil now, I used to get the Ownhere mod for Google Maps that enables World navigation – It used to be available on XDA-Forums but got taken down once google frowned on it!

No more of that hassle – just go to Play store and install Maps.

Very cool! Thanks Google.

Yoohooo!! Successfully compiled Android from source

Finally!!!

So my last weekend project had been to compile Android ICS from source. Given that the size of the repo itself is in excess of 6Gigs, just getting it down itself took the better part of Friday night and Saturday night. When I got down to running make on it, it was Sunday afternoon.

Needless to say, things didn’t work too well. I’m running this on a 32 bit Ubuntu 10.04 Virtualbox with a piddly 1GB RAM. When make failed the first time, realized that swap was a measly 300Mb. First steps first, went on to increase memory to 2GB (that’s all I can spare) and increased swap to 2Gs.

Compilation next round started and that failed too – ran out of disk space – and this was Sunday night. Things kind of stayed there and finally this evening, resized the disk in virtualbox to 50Gigs. Again started the compilation and this time ran into linker errors when building webcore. One more round of troubleshooting involved deleting the previously built static library and then running make again. Surprisingly, this time make completed successfully – to the point where I wasn’t sure if it had succeeded or just failed silently on something else.

The next step was to run the emulator to see if it really would boot up. Over at source.android.com, they oversimplify it when they say that you just run emulator from the android root folder. That didn’t work for me – and this time it was because I hadn’t sourced the envSetup.sh file… this thread http://groups.google.com/group/android-platform/browse_thread/thread/91ff18e034acf951 helped in tracking that one down.

So finally, after all that trouble, I have my very own ICS build running!!!!

For now, its onward ahoy to setting up Eclipse and starting with a fix I’ve been mulling about for sometime now..

Signing off from cloud nine
R

Android Annoyances

So yesterday and today while driving back from work, I’ve had to join conference calls. The conference call provider we use at work has 10 digit passcode numbers. Usually, I have a few bridge numbers with the DTMF codes saved in my contacts so I can just click on the contact to get dialled to the access number and have the participant passcode typed in for me. However, yesterday and today’s calls were on a different bridge and I had to try to remember a 10 digit number after dialling the access code – and all that while driving. Needless to say, it took a few attempts and I’m sure at that time my attention wasn’t where it should have been – ie on the road and on the traffic. Besides being thoroughly unsafe on Bangalore roads, its just frustrating(thankfully – better sense prevailed today and I pulled over, dialled into the bridge and then started driving again).

So the issue really is that the native parser that parses out email and calendar invites doesn’t understand access codes and passcodes. It shouldn’t be too hard to do – but then I started digging a bit deeper this evening. Granted that the parser isn’t smart enough, at the very minimum if it handles tel: links properly, then its just a matter of educating folks who set up meetings to set them up so that you can click to call with something like <a href="tel:23423432233,,9230233#"> – in fact, in Outlook if you type TEL: and then the number, it will automatically be parsed as a tel: hyperlink. Turns out that its a massive fail – if I click the link, Android will show me the dialler but without the DTMF codes (basically, only the number upto the first comma). TOTAL FAIL.

So, Isn’t this something that should have been brain dead simple to do? I mean – this is 2012 after all – and I’m not asking much. All I’m asking is that the tel: url parsing/handling be done in such a way that we can use our phones properly!!! Turns out that there’s an open ticket 4575 since Nov 09. And its marked as an enhancement – I find that laughable since its a bug and definitely something that can be done quite easily (esp since a contact that has DTMF codes is dialled properly). However, for the 2 years that the ticket has languished, there have been 73 comments and not a single response from big GOOG :(

At the moment, doesnt look like this is going to be fixed – so I started browsing thru the Android source tree to see if I can find where the implementation for tel: urls – however, given the size of the android source, that’s like trying to find a needle in a haystack. Guess I’ll have better luck with seeing if CyanogenMod folks can fix this in CM9.

So about that, the other thing that has confounded me is why in the world can’t Android bundle a decent T9 dialer/smart dialer out of the box. I know there are tons of apps on the market that do that – but seriously, is smart dialing something so out of the world that I need an app for it? As expected, there’s a ticket but no action.

I think its safe to assume that Google isn’t interested in fixing these issues as there’s no ‘benefit’ in doing so – though for the life of me, I can’t imagine either of them being particularly hard. In any case, I’m eagerly awaiting a CM9 build for the Nexus One (right now, am running an ICS build from XDA).

Troubleshooting nandroid backup/restore

Have been having all sorts of weird problems with Nandroid backup/restores. Essentially, here’s the symptoms of the problem – I’d get a nandroid and restore it successfully (Amon RA/CWM would report success) – however either will get stuck at boot or if it boots successfully, will have tons of FCs and/or data loss. In most cases, I would dread seeing the green Android on boot up asking me to log in to my google account :(

Essentially, my nandroids were useless… to the extent that I had only one nandroid backup that was known to work – and I was keeping 4 backups of that lest I lose it somehow.

So today, thought I’d get deeper into it and see where the problem was

  1. It was unlikely that its a problem with CWM/AmonRA – I myself had an old working backup. Since my backups were created and restored successfully with MD5 verification, it seemed that there’s something wrong in the backup image itself.
  2. Still, that seemed inexplicable, since creating images just doesn’t seem that flaky. A couple of times after reboot, I had got a “UID has changed – it is recommended to wipe data” or something similar message – so I thought something was wrong with permissions after the restore. In any case, I tried the CWM menu item of fix permissions – but didnt get anywhere with that. At this point, I was desperate enought to get adb out !!
  3. Now in full blown investigation mode, I didnt care if I couldnt restore my data – just wanted to figure this thing out. So restored a  ”non working” backup and did a adb logcat while the phone booted… turns out that I was seeing tons of messages like so:
  4. I/PackageManager(  205): /system/app/ContactsProvider.apk changed; collecting certs
    I/PackageManager(  205): New shared user android.uid.shared: id=10006
    W/PackageManager(  205): System package com.android.providers.contacts has changed from uid: 10003 to 10006; old data erased
  5. So that explained what was going wrong… thought it would be an easy fix to do the ‘fix permissions’ thing in CWM advanced menu. Restored again and went over to the advanced menu, did fix permissions and rebooted. What I got was a big naught for all my work – same problems and no resolutions. At this point I was stumped enough – but sheer bull headedness forced me to look at the log again… and lo it says ‘data erased’. So that explains why fix permissions after boot wont work since the data is erased during boot itself!

At this point, the key to the problem was really understanding how and where android’s UIDs are generated,  stored  and regenerated. Headed over to Cyanogen wiki and read up the details on fix permissions which explained the packages.xml file. Somehow the packages.xml was borked in the nandroid (every time) and that was causing it to be regenerated.

Armed with that, got a germ of a solution in place, which is roughly

  1. Restore nandroid with borked packages.xml
  2. Let the system boot. Will lose data but a new packages.xml will be regenerated
  3. Reboot into recovery and adb pull /data/system/packages.xml out.
  4. Do an advanced restore and again restore the data only.
  5. mount /data and adb pull /data/system/packages.xml to compare differences. Found that packages.xml was indeed corrupt.
  6. adb push packages.xml (this is the generated one pulled in step 3) to /data/system. Now you have all the old data but the packages.xml is newly generated one and known to be valid. Obviously UIDs will mismatch – but fix permissions has a valid file to work on.
  7. Still in recovery, run fix permissions. It should fix permissions properly.
  8. Reboot
It worked like a charm!!!! I’m still a little worried as I dont know what else is borked in my nandroid data.img. And I dont know why that image has the exact same problem every time – I have tried 3 different versions of CWM recovery, Amon RA 2.2.1 and ensured that my sd card was clean (ran chkdsk on it). In any case, since I’m able to restore, will just use the phone for the next few days and hopefully I’ll run into any wonkiness soon.
And going forward, I think I’ll take my own backup copy of the /data/system/packages.xml file along with each nandroid.

Note To Self: Fixing broken market links on Android after wipe/ROM upgrade

Force stop market and clear data
Launch market again – it will ask you to accept terms. Do so.
Should force it to rebuild the database and you should see all your apps linked to market again.

Follow

Get every new post delivered to your Inbox.

Join 260 other followers