Heads up: this involves things that I assume void any warranty, and most people would find it much easier and less frustrating to buy a portable DVD player. Also, I can't hand-hold anyone else that wants to try it, I'm just saying that this worked for me with a bit of tinkering.
I'm using a Nexus 7 second gen, released in 2013. It developed touchscreen issues following the Android 4.4 update, so I'd already unlocked the bootloader to apply sfhub's ts10 image as described on XDA Developers and touched on in my last blog post.
I've wanted to play DVDs on a tablet for as long as I've had one. And when I say DVDs I don't mean ripping them to MP4 or ISO images or VIDEO_TS folders because I have no intention of spending weeks copying hundreds of discs, even if storage is cheap now. I want to be able to play a newly acquired disc on a tablet whilst wandering around the house, without doing anything more than having another device switched on.
One option is using a Samsung SE-208BW Optical SmartHub to wirelessly stream DVD... buuuuut they're available cheaply because they're A) unreliable and B) work by setting up a separate wireless network. I've had a couple; one burnt out, and both struggled to push MPEG-2 at full resolution in a form even the new Nexus 7 wouldn't struggle with. Piggybacking a PC drive is far preferable.
On the Android side, VLC has just added ISO support, but XBMC (soon to be Kobi) is ahead of the game -- it'll play ISO files or VIDEO_TS folders by selecting the VIDEO_TS.IFO in the root. Unfortunately the latter only works with the files on a device at the moment, not on a networked share. You can get around this by mounting the share so that the tablet sees it as a local folder. Or you could, if Google were friendlier towards SMB/CIFS support... I might have the details wrong here, but I think Android 4.2 stopped offering CIFS as standard and 4.3 started blocking loadable kernel modules that would allow users to set up functionality easily themselves.
The solution turned out to be to replace the OS kernel.
First of all, I wasn't sure if any of what I was going on to do would be affected by the experimental ART runtime previewed in Kitkat, which I'd been trying, so I reverted to Dalvik.
Having already unlocked the bootloader the next step was to get root access, and it was quickly obvious the easiest way to do that was geohot's recent Towelroot exploit. Let's not dwell on the fact this reveals Android security to be a bit of a joke, eh? It's probably not a good idea to use tablets for logging into anything sensitive.
(At this point I had an abortive play with CifsManager and a pack of cifs.ko/md4.ko/nls_utf8.ko kernel modules before realising that stock Kitkat doesn't support loadable modules.)
Having established that a replacement kernel was needed, I used Koush's ClockworkMod ROM Manager to backup files and install stuff. This was a bit hit and miss. I tried a kernel by vorcers first on the basis it's essentially stock apart from adding CIFS support. For whatever reason that didn't work, so after a precautionary revert to the stock kernel with Nexus Root ToolkitM I tried flar2's ElementalX and that worked fine with Mount Manager and CifsManager. Mount Manager is nicer because it'll deal with automatically reconnecting the mounted shares. I'm not entirely sure if BusyBox is required, but it's recommended. ElementalX also adds the option of tap/slide-to-wake, which I disabled due to the warnings about impact on battery life, and various other things... most I left as stock, apart from increasing the read-ahead i/o buffer which I figure might help with accessing shares.
So far so good. Shares mounted, XBMC more or less happy testing with a film that arrived in the mail recently and it plays, as do some others. But most discs were causing XBMC to skip back to the file selection window without even an error message. Perhaps unsurprisingly, it's the "indie" films that probably don't have any specific copy protection schemes on them that are working.
Way back when, when DVD Decrypter was in its hey-day there used to be a bit of software called DVD43 that sat between Windows and any software accessing the drive and removed "protections" designed to stop you playing your legally purchased content. The version currently available doesn't seem to be the old application, just a plug-in for copying software that supports it. This is where Slysoft's AnyDVD comes in, and as a bonus it allows you to limit the rate at which particularly noisy DVD drives spin discs.
All told, various apps from the Play Store, donations to developers of things that worked and a basic legit copy of AnyDVD added up to a chunk of the cost of a decent portable DVD player, but that wasn't really the point. It was an educational day's worth of fiddling and much more productive than previous attempts to figure out a way to play DVDs from an optical drive. It's satisfying to get things working and I'm in no rush to have the forthcoming Android L on this tablet, as from previews the interface changes look rather naff.
The only problem then seemed to be the cheap "mini" USB wifi adapter I was using, which got hot and suffered from short drop-outs not sufficiently long to break downloads but which appeared responsible for occasional stuttering with streaming video files played via ES File Explorer and DicePlayer. I've snagged a refurb Belkin F5D8055 v2, which (touch wood) is behaving reliably with stock i/o mode and readahead set to 256.
Whilst I was on a roll, I used Nova Launcher to make the BBC Weather widget the background of my homescreen with a few icons layered over it and hid the dock. For all its faults, I do like the customisability of Android, and it didn't take much playing with iOS to establish that the relative lack of it would drive me nuts.
For sharing the contents of the tablet back to a network, for things like transferring screenshots, I opted for Sambadroid and sharing "/" rather than faffing around with Kitkat's multi-user path rewriting.