Posts tagged ‘mobile’

Healthcare videos running on standard mobiles


Many people have asked us about how to run the videos we’ve demonstrated in the OppiaMobile app on standard mobile phones (not Android smartphones), so this afternoon I had a go at converting the Basic Skills video from Global Health Media Project to run on my old Nokia 6230i (I’m not sure exactly how old this phone is as I got it second hand over 6 years ago). The original low-res version I downloaded from the GHMP website was 33Mb, which is too large to fit on the 32Mb MMC card my phone has, but with a bit of conversion I was able to get this down to just over 5Mb and still be good enough quality to watch on the small screen. For those interested the full technical details of how I converted the videos is below. If you’d like to download the final 5Mb version you can get it here.

Here’s a video of the video running on my Nokia, I’ve also show the basic skills video running on the HTC sensation – just to give a comparison with screen sizes and video/audio quality:

There are lots of reasons why we’ve focused on using Android phones for OppiaMobile – but I’ll leave them for another posting.

The technical details for converting the videos:

For my first attempts at converting the videos I used WinFF (note that I use Ubuntu on my desktop so all the details below is specific to this OS), this converted the videos fine and they played well on my laptop, but when I copied over to my phone I wasn’t getting any sound. Turns out that my phone doesn’t support the AAC audio encoding format, but AMR encoding. To get WinFF or other video conversion tools to process the video with AMR as the audio encoding, I needed to compile ffmpeg with the opencore-amr library. Follow these instructions to do this on your machine.

I then also found this tool for converting videos: Mobile Media Convertor. My first attempts weren’t too successful, I kept getting the error message “Error while opening encoder for output stream #0:1 – maybe incorrect parameters such as bit_rate, rate, width or height” then when I finally got it to convert it still didn’t play on my mobile. Finally I got it figured out and the settings I needed to use in mobile media convertor were:

Audio Frequency: 8000
Audio channels: 1
Video Size: 176:144
Audio Codec: libopencore_amrnb

To set these, press the ‘advanced’ button after selecting the ‘Mobile phone – 3GP video’ conversion option.

Using these settings (almost 6 minute) video was down to 5.3Mb – the quality isn’t great when viewing full screen on my laptop – but it’s perfectly fine for my Nokia phone.

New OppiaMobile video

I’ve just uploaded an updated OppiaMobile preview video, showing some of the changes we’ve made over the last couple of months, especially with the updated interface design and with our platform name. I’ve also launched the OppiaMobile website, so has some extra information pages especially for course authors and for developers.

For those interested, I used an Android screen recording app to create the video – was easy to use and could record my voice at the same time (though it requires a rooted phone to work). With the previous demo videos I’ve made of apps running the mobile, it’s always been tricky to get my digital camera to focus on the screen properly and also so there aren’t reflections from the mobile screen. Although I think it looks good, I think I still prefer videos where you can see the whole phone and it being manipulated. One issue I found was that when I was demonstrating the videos running, they automatically play in landscape mode, but the rest of the video is in portrait, so I needed to cut and rotate this part of the demo. I’d be interested to hear if you think a video of the full phone (and my hands) or a screencast recording is preferable as a demo of the app.

Finally… a name for our mobile learning app: Oppia Mobile

oppiaSince we’ve been working on our mobile learning app, we’ve not really had a good name for it, and have just been referring to it as ‘our mobile learning app’, and we really wanted to come up with a nice name for the platform. Selecting and finding a good name is pretty tough, especially¬† a short one that isn’t some convoluted acronym. We also didn’t want the name to be specific to a particular field (such as health), as although most of our current content is health related, we can also use the platform for other subject areas (such as the Open Education MOOC).

So… the name we have settled on is “Oppia Mobile”, for info ‘oppia’ means ‘to learn’ in Finnish, and as far as we can tell it doesn’t mean anything strange or bad in any other language – but please let us know if it does.

We’ve registered the domain, but currently this just redirects to the app download page in Google Play. I’ll get a proper site set up in the coming weeks. It feels good that we now have a name we can use to refer to the platform.


Using Android Text to Speech

To help some of the health workers use the mobile learning application – especially those who may have trouble reading English, we thought it may be useful to give them the facility to have the page content read out using text-to-speech. This has been quite easy to get set up and running (basic instructions), but a couple of things I found may help others trying to get text-to-speech up and running in their apps:

  • I found the onActivityResult method was not being called, but this was due to my variable “MY_DATA_CHECK_CODE” not being set to 0 – once it was set to 0 it worked fine. Also if I used the built in “RESULT_OK” this didn’t work either. See here for more explanation.
  • I wanted to read out the HTML from a webview widget and I thought I’d need to write a load of code to strip out the html headers, tags etc (otherwise the names of the tags and attribute get read out too). But actually it was really simple, using the line: “android.text.Html.fromHtml(instruction).toString()” (more)

It all seems to work quite well, although with the built in voices I find it certainly sounds computer generated, and if I set the speed of the voice to very slow it sounds drunk. So I’m a little unsure if it’s really going to help the health workers, but it’s not taken me much time to set up and maybe it could be useful for some of them.

Adding gamification to quizzes and mobile learning

I’ve just begun to add some gamification into mQuiz and our mobile learning application. We’ve been thinking quite a lot about badging for the mobile learning modules and perhaps how we could apply this to quizzes too. However, for me, awarding badges for just completing a single quiz, seems to cheapen somehow the value of the badges. So I’ve decided to try out a dual approach of points and badges and see how that works. You gain points for creating/taking quizzes and for completing activities in the mobile learning app, but you only gain a badge for completing all the activities in a given module (or perhaps creating a certain number of quizzes).

So far I’ve only implemented the basic points scoring system (I’ve retrospectively added points to those who have previously been using mQuiz), and the scores only appear on the leaderboard on the homepage, but shouldn’t be too much work to get this more integrated (for example showing your score in the mobile app etc).

For those interested, the scoring currently works like this:

  • 100 – creating an account
  • 200 – creating a quiz
  • 20 – first time you attempt (someone else’s) quiz
  • ? – percentage score you got for a quiz on your first attempt. E.g. if you score 75% on your first attempt you get 75 points
  • 50 – bonus if you get 100% on your first attempt at a quiz
  • 10 – each subsequent attempt at a quiz (max. once per day per quiz)
  • 5 – someone attempting a quiz you created (max. once per day per quiz per user)
  • 10 – completing an activity in the mobile learning app (max. once per day per activity)

I’ve tried to encourage people to try and get as high a score as possible on their first attempt, although you are rewarded for trying the quiz repeatedly (on different days), and I also wanted to encourage people to create popular quizzes – hence the points when someone attempts a quiz you created.

I’m not sure I’ve got all the points quite right yet, so will see how this works and I may make some adjustments over time. I’m sure there are a few ways to cheat this (I’ve thought of a few already), especially with the API to create quizzes.

Next steps are to get the points, leaderboards etc displaying in the mobile app…

New mQuiz and mobile learning app released

I’ve just released the new version of mQuiz. For those of you who have previously signed up to mQuiz and/or the mobile learning app, the key change is that you will need to reset your password (the new version of mQuiz uses a more secure way of storing passwords) and upgrade the mobile learning app on your Android phone.

To reset your password, go to:, enter your email/username and a new password will be emailed to you. Once you log in, you can reset your password to something more memorable. If you are using the mobile learning app, after you upgrade the app, you will need to log in using your updated password.

The key changes to mQuiz are:

  • Quiz creation/editing. You can now add different question types (not only multiple choice) and add feedback to give to the user.
  • Rewritten in Django application framework. This should make the app faster, more robust/stable and easier to add new features.

The key changes to the mobile learning app are:

  • Improved interface
  • Better management for media/video files
  • more info and screenshots here

Finally, I should add that this is all still a work in progress, there are many, many more features and improvements I’m looking to make. If you find anything isn’t working as expected, or if you have any comments/suggestions then please either post a comment below or email me.

Updated mobile learning app on Google Play

I’ve just made the updated training application available on Google Play, you can get it from here:

As before, when you first start the app you’ll be asked to login or register and then you can install some of the modules to test out (once logged in you’ll see the link to ‘install modules’). For initially logging in and installing the modules, you’ll need a data/wifi connection, but after this the app will work fully offline.

Also (and as before), the video content is not included in the module packages (mainly to keep the download size down). For trying out the videos, you can download them from here (all the .m4v files): – just copy these files directly into the /digitalcampus/media/ directory on your phone SD card.

If you have any problems/comments etc then please leave a message below.

Video of updated training content app

Over the last few days I’ve made quite a few updates to the app. The key difference has been to add the functionality to switch languages. Here’s a quick video of the app in action now:

The updated app package is available here if you’d like to try this out for yourself.

I’ve also started working on the server side where we can track the user activity. So far I’ve only made a couple of very basic pages, just for demo purposes, which show graphs of the recent activity for each module and another page which gives a list of the users for each module and their progress so far:

Graph of recent activity in modules

Table showing detail of which users are taking part in the module, their progress so far and the last time they accessed the content

We need to think a little more about what information is useful to show here, for the tutors/supervisors/managers etc and also to work out how we may be able to present this information on the mobile device – similarly to how we developed the mobile scorecard application for patient management.

New mobile HEAT application

As I mentioned in my last post, I’ve recently been rewriting the mobile HEAT application and I now have a first version ready for people to test out. You can get the app here for installing on you Android phone. As it’s just a first version, I’d really appreciate any feedback (either email me directly or post a comment below), which is also why I’ve just posted it up here, rather than making it available on the Google Play store – which I’ll do once it’s been tested a little more.

Few notes comments on how to use the app and what it does:

  • As with the previous version, you’ll need a MQuiz login account (though you can register for this directly in the app). So you do need an active internet connection on your phone for this step.
  • Unlike the previous version, this app comes with no course content. This was one of the main reasons for rewriting this app: to decouple the content from the app. So after you’ve first logged in, click on the ‘manage modules’ button and you can get a list of the available modules you can install, so you can select which content you’d like to download. You’ll also need an active internet connection for doing this, though I have built in a way in which you can just put the course package directly on the phone SD card and it will auto install.
  • Once you’re logged in and have downloaded some content, an active internet connection is no longer needed.
  • For testing out the video content (in the “video demo” course), the videos are not included in the course download package (as it makes the download packages too large). If you’d like to test the video content, please download the .m4v files and place them all in the /mtrain/media/ directory on the phone sd card.

There are 3 main areas I’d really appreciate feedback on:

  1. Tracking: as you navigate through the content (play videos and take assessment exercises) the app records your activity to submit back to the server (for example, so your course tutor/supervisor can see how you’re doing). The app tries to do this whenever you complete an activity (so connects to the internet at this point), but it may be that you’re offline at the time. Note that a text page is only considered as being completed if you have spent at least 3 seconds on the page before moving to the next one (to at least give some pretence that you may actually have read the content ;-)). To cover the possibility that you may be offline when using the app, but you still want your activity logged, the app also installs a service to try to connect once an hour to submit your activity, even if you’re not using the app. I’m a little unsure that this is the best approach, since I’m not too keen on applications connecting to the internet in the background, but I haven’t yet thought of a better way to handle this. I may just add a preference to allow you to decide if this service is allowed to connect or not. But any comments/thoughts on this appreciated.
  2. Navigation: once inside a course module, I’d like some feedback on the navigation between the activities for each section in the course. Currently you can’t see a full list of all the activities for a given section, without clicking on the previous/next arrow buttons, as I wanted to avoid the user needing to go through another list selection page to get to the activity, but I’m not sure that what I’ve done so far is quite right.
  3. App name: I’m not too keen on the app name ‘mTrain’, so any suggestions for alternative names welcome!

In the next days, for those of you who don’t have an Android phone to test this on, I’ll post up a video of the app in action.

Rewriting Mobile HEAT application

I’ve spent the last few days starting to rewrite the mobile HEAT application. The two main reasons for doing this are:

  1. To create the app as a native Android app. The original app was using PhoneGap and although I really like the fact that the app can be written in HTML5 (and so easier to port to other mobile operating systems), I was just finding that the app ran far to slowly. It would take several seconds just to load a page and it made the app really annoying to use. The fact that we could create an app for other mobile operating systems isn’t a huge bonus for us, it’s likely that we’d be providing the hardware for users of this system, unlike, say Moodle Mobile, which has recently announced it’s moving from a native app to an HTML5 app.
  2. I wanted the app to be a general mobile training content application, so it’s just a shell app into which you can drop or download the specific modules you want to use (although I could have implemented this in the previous PhoneGap/HTML5 version)

Here are a few screenshots:

Homepage showing list of installed modules

Module index page

Activity page

Quiz activity

With the new app I can drop in new training content zip files (generated by an output script in Moodle) and it will automatically load in the app. I can track my progress with a given module and the activities within a module. I’ve made a new navigation for the activities in each section, the previous app had a set of tabs to navigate, but this meant there was a limit on the length of the tab text and number of tabs before it started wrapping and nasty. Not sure if what I’ve now got is exactly right, but it seems a lot more flexible for having more activities within a given section, and for longer titles.

Although there is still much work to be done, I much prefer the new application already, being a lot quicker, it just feels a lot nicer to use, plus I find it really handy to be able to drop in training modules for installing. The main areas for me to focus on next are:

  • Submitting tracking and activity output back to the server
  • Selection and downloading of modules (rather than needing to manually copy zip files onto the sdcard)
  • Figure out how to switch languages within the app

Once I get the app a bit more finished I’ll make it available for download so you can test it out.