I bought my Nexus 7 tablet a bit late in the game, in 2013, when everyone else was buying the new Nexus 7 2013 edition. Although being a model behind has its obvious drawbacks, the benefits can include a device with all the initial problems resolved (avoiding the first adopter’s problems with software and hardware), a cheaper price and usually a year’s worth of reviews and discussions to read prior to making the purchase. However, like everything else, one has to buy carefully.
There have been a couple of updates from Google on the software front since the tablet has been released, including the update to Lollipop (Android 5.1.1). This update, as you may already know, has caused a lot of grief to a lot of people, by making some tablets unusably slow, including mine (oh, why didn’t I say “no” to the update dialog). Far from making it a better experience (something one expects from a software update), it turns the tablet into something you do not want to use and there is no going back to previous version.
I have been leaving the tablet unused for quite a few months now, since it takes a few minutes just to get past the lock screen, so yesterday I decided to load a custom ROM, namely Cyanogenmod to make it my daily device again. This, as it happened, gave me a new set of problems to deal with, namely:
After flashing a new recovery image, namely TWRP-3.0.0-0-signed.zip, the device will boot into recovery, but cannot mount any of the partitions such as data and system, which results in a failed attempt to install Cyanogenmod and Gapps (Google Apps package).
I tried the multirom version as discussed in this web page, but it does not even boot (I think it was meant for the later models of Nexus 7).
I tried to flash a CWM recovery image for Nexus 7 as listed on this web page and it has the same problem mounting partitions as the TWRP recovery software.
So what to do? After a few hair pulling moments, I decided to give TWRP another try, this time, thinking that this device has been around for a while, I decided to flash an older version of TWRP, namely version 2.8.6. I thought, surely, if the newer version does not work, then the older version may not work? Wrong. TWRP version 2.8.6 recovery image worked perfectly. I was able to wipe the System partition, flash Cyanogenmod version 10.2 and Gapps (make sure you get the correct version of Gapps) and root the device successfully. Now I am looking forward to using my old Nexus 7 tablet as a daily device again.
Plug in another USB device (such as a flash drive) and the computer should reconnect the keyboard and trackpad again. Sometimes it takes a couple of tries. There are also more permanent solutions such as removing the Android File Transfer Agent app.
Have you been working on an app and you decided to deploy your android app to your phone, only to find out that when you plug the phone into one of the USB ports, the Android File Transfer app pops up and then you find that your built-in keyboard and trackpad does not work? Or worse, have you ever wanted to just charge your phone only to find out that you computer’s keyboard and trackpad stops working when you plug the phone into the USB port? Continue reading “Fix the annoying Android File Transfer bug on the Macbook”
I was working on a project recently where I had to create a Cordova Android app that could play video embedded in the “assets/www” directory. This proved to be quite challenging and it seems that there are a lot of hurdles to make this happen. There are many questions on stackoverflow here and here , amongst many, regarding this issue and there are a lot of problems faced by developers as Android gets updated, with many new workarounds needing to be found.
For a while, I was able to use the Cordova Html5Video Plugin and it worked well, except there is a limited amount of video properties and events available and it is a little awkward, since videos have to be placed in a special directory, which are then placed in the sdcard partition of the device. When I tested this on my device, videos can be accessed from the device’s camera and video roll, which kind of begs the question why the user would watch the video in the app, if they can access the video clips directly outside. I am sure there are workarounds that can be applied in this case, but since this method stops working for me on devices above API 19, it feels kind of broken and messy.
I also was wanting to find a way to work with JSC3D to enable showing some 3D models in a Cordova application. Since JSC3D does not work unless the model is served over http, I was thinking that would it not be nice to have a mini server serving the files from inside the Cordova app? After working through a bit of Google magic, I found this project on Github, called Cordova-httpd, which is exactly what I was looking for.
Suddenly I realised that a lot of the problems with inline video in Cordova could be solved in the same way. One could create a folder for the video files and then serve them using the httpd server into the app. The only thing that would have to be modified were the src attribute of the video elements, which could be set at run time using the “deviceready” event of Cordova.
I have tested this on devices running Android 4.4 through to Android 5.1. So far so good. On older devices with Android versions prior to 4.4, I have tested this same method using Crosswalk API. I hope you find this information useful.