Archive for November, 2010

Making YouTube (very slightly) more child-safe with a Firefox extension

Tuesday, November 16th, 2010

Kids stuff on YouTubeOur six year old daughter, Grace, has lost interest in kids TV recently – she’s discovered the joys of YouTube!

She can happily spend a half-hour sat in front of the TV on Firefox (our TV set-up is a Linux-based media centre, so it’s proper Firefox with a keyboard and mouse) clicking from video to video.

I’m fine with this. It’s good: she’s getting more familiar with how to use a web browser, getting used to starting the browser, typing “youtube” into the address bar, using the search box to search for what she wants, using the ‘Back’ button to go back to the search results if it’s not what she wanted, and so on. This is all good stuff, let alone the fact that there is a lot of content on YouTube that is actually ideal for kids.

But…

Well, she’s six. Not every video on YouTube is suitable for her. I’m not just talking about the stuff for over-18s. I don’t even want her to come across stuff with, for example, more swearing and violence – such as stuff that you might be happy to show a 12 year old.

The real solution to this is what we do now – she’s doing this in the sitting room on the TV, while we’re in the room watching stuff with her. I’m not saying I want to give her a laptop, send her up to her room, and say “here’s YouTube – off you go, have fun!”.

Even so, I wanted something to help out a little.

(more…)

You need to ask if you want an Android to vibrate

Saturday, November 13th, 2010

I posted a few days ago about a new little app I stuck in the Android Market. An error report appeared from the app in the Market last night that I thought was interesting.

The app does some stuff in the background then when it’s finished, it sticks a notification in the top status bar. In my code, I just use the default notification settings – LED flash, vibrate, etc. And on every Android I’ve tested it on, it’s been fine.

But for one user, it caused the app to crash:

Exception class java.lang.SecurityException

Source method Parcel.readException()

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1102)
Caused by: java.lang.SecurityException: Requires VIBRATE permission
at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1235)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:368)
at android.app.NotificationManager.notify(NotificationManager.java:110)
at android.app.NotificationManager.notify(NotificationManager.java:90)
at com.dalelane.lovefilm.data.ImageProcessService.publishUpdateNotification(ImageProcessService.java:281)
at com.dalelane.lovefilm.data.ImageProcessService.access$0(ImageProcessService.java:234)
at com.dalelane.lovefilm.data.ImageProcessService$ImageProcesser.doInBackground(ImageProcessService.java:215)
at com.dalelane.lovefilm.data.ImageProcessService$ImageProcesser.doInBackground(ImageProcessService.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more

(more…)

A LOVEFiLM app for Android

Tuesday, November 9th, 2010

4 - LOVEFiLM - your finished photo
A simple Android utility app for a simple idea – adding DVDs to my LOVEFiLM queue while I’m out and about by taking photos of what I want to add.

(If you’ve not heard of LOVEFiLM before, they are an online DVD rental service: you use their website to set up a queue of DVDs you want to watch, they post you some, you watch them and post them back, and they send you some more.)

I love the service, but I never remember to add anything new to my queue. I’ve got a long queue of stuff to watch, but it’s all pretty old – months go by in between me remembering to visit the site.

And most of the time I think “oh, I’d love to watch that” I’m out and about. It could be walking past the Blockbuster Video store, or cinema in town and seeing a movie poster in the window. Or it could be seeing a DVD case in a shop or at a mates house. I think “I should add that to my LOVEFiLM queue when I get home”. And then promptly forget.

8 - LOVEFiLM - main screenSo last week, I started writing a quick Android app to help.

The idea is that whenever I see a movie poster or DVD cover now, I can snap a quick photo of it with my smartphone, then put the phone back in my pocket. Quick, one button press, no typing.

Then in the background, the app will try and work out what DVD I’ve taken a picture of, and then add it to my LOVEFiLM list.

It’s not always super-quick – it can take a minute or two – but, realistically that’s fine. It’s unlikely to make any difference to when LOVEFiLM will send me the DVD if it gets added to my queue now, in ten minutes, or even in a few hours time.

5 - LOVEFiLM - reviewing a problemWorst case scenario, if the app can’t figure out what the picture is, it can prompt me to let me know that it needs some help. The notification will sit in my phone’s status bar until I have some spare time to look at the photo, and manually type in the name of the DVD – which the app will then go and add to my queue.

This is still helpful though – I can trust that the app will somehow add the film to my queue, even if this means prompting me if it needs extra information.

It means I don’t forget to add it, because the app reminds me. And I don’t have to stand around typing in a name while I’m rushing around in town – if I need to do any typing at all, I can do it later when I have some spare time.

I’ve put a walkthrough of screenshots with an explanation of each stage on flickr.

(more…)