This is a fix for external player support on the latest Android version of XBMC. This fixes the possibility to run MX Player on the latest Gotham build. Not interested in the technical details? Scroll to the bottom of the article for the download link.
I’ve mentioned before that one of the great things about XBMC is that it can be customized in order to run external players on Android. Although the xbmc team has made awesome progress on hardware acceleration recently, it seems many popular android mini PCs run on somewhat unsupported chipsets (AllWinner and Rockchip). This means hardware acceleration can be choppy at best for these devices. This issue applies for example to the MK802 family (MK802 I and II run on an Allwinner CPU, while MK802 III and IV run on a Rockchip CPU).
So for these devices that don’t get the benefit of hardware acceleration in xbmc, the ability to be able to launch an external player (such as the awesome MX Player) while still getting the great xbmc interface is definitely a great thing.
Unfortunately, “external player” support on Android for XBMC has been broken almost as soon as it got submitted to their repository, after a cleanup that messed a few things up.
This is why I had been recommending an old build from last year, in this article. That xbmc build did have a patch with a fix for external player support. As I’ve also mentioned, the “XAF” builds are too heavy for most of the Android mini PCs. The binary of the XAF builds is close to 100MB, while a regular xbmc apk is closer to 50MB.
I finally got the courage to learn git, get the Android sdk, ndk, install a virtual machine running linux, figure out how to get adb to recognize my chinese Mini PC, and fix the issue in the xbmc code.
The technical details can be found here. Basically the StartActivity function from the xbmc android code was not creating the correct intent, and was also messing up the URI parameter.
How to install and use
The apk can be downloaded below. I’ve mentioned it in the past, but on some mk802 devices and other clones, the internal storage is extremely small, and XBMC requires a lot of it. You should make sure you have at least 250MB free on your internal storage or the first run might not even work.
To install it, you might need to uninstall your previous xbmc install first. My build is a debug build and cannot be installed on an official build before uninstalling that one first.
In order to use MX Player in xbmc, you need to create a file playercorefactory.xml and put it in /sdcard/Android/data/org.xbmc.xbmc/files/.xbmc/userdata. Details here.
A sample playercorefactory.xml can be found here. Since libstagefright (hardware acceleration) is available in this build, I think it would be possible (recommended) to tweak that file in order to run the external player only for files above a given resolution. SD works fine in XBMC, and 720p is also acceptable with libstagefright (that’s for people on rockchip CPUs, maybe not on AllWinner). Maybe I’ll submit such a file here one day.
If you’ve done things correctly, mx player should now start when you launch a video in xbmc. Tadaa, you got the latest nightly build with external player support back
Except the fact that this is a debug build (which, by the way, most builds are except the ones from the official xbmc devs), this is probably today the best build you can find if you are running on an mk802 III, IV, or one of their many clones (mk809, tronsmart, etc…) : it has libstagefright support and the latest and greatest code from the xbmc repository, none of the additional crapware/addons from the xaf build, and is much more recent than the previous version I recommended. Also, since it has both external player support and libstagefright, it currently is “better” than the latest official builds
Download here. Enjoy and let me know if you run into issues
Now that I fixed xbmc on my mk802 III, and with the addition of my method to watch Netflix with no lag from outside the US, I’m getting closer to having the perfect Smart TV for less than $50