[Xoom Android Development] dinomight:
UPDATE 6-13-2011 !! HUGE UPDATE.... OTG DRIVES NOW SUPPORTED !! https://market.android.com/details?id=com.skidmrk.umswatcherotg

So it's been a long time since i've checked in. This is mostly due to where i was in the development of the new version. I couldn't really work on fixes when i'd rewritten the entire codebase. Well your waiting should be worth the wait. If you have the old version installed from the market you'll have an update waiting. After the update it will tell you there is a new version for Android 3.1 devices. It will take you to the market to download a new app "UMS Watcher OTG" I know this is kinda dumb not currently the android marketplace will not allow for device or os specific version. So i had to make a 2nd app specifically for 3.1 devices. (Since 3.1 is the first build to offically support OTG mode.)(i retained the old version for pre 3.1 devices)

All of the features of the old version should still exist. But now the mounting dialogs are all handled within app. You'll notice this time we actually have a full interface. More than just the simple settings page. UMS mounting should work just fine. Hopefully this will resolve all of the issues people have been having. At least i think it will. If there are still issues i will now be able to work on it since i'm done with the current code.

With the new version installed you'll be greeted with a dialog anytime you plug in a drive via an otg cable. This will then set UMS watcher otg as the default handler for that device. Then any time you plug that device in again it will automatically open the app. This is where you'll really see changes in the app. You will see each of your attached devices enumerated in an expandable list. If you expand any of the drives you'll see the partitions. You can mount and unmount any partition. When mounting you'll be asked the partition type and target mount point. I attempt to auto-detect the partition fs type but i'm not able to differentiate between versions of ext, and between versions of hfs/hfs+. Each partition's settings will be saved. and is keyed to the uuid of the partition. if you format/partition the drive those uuid's change. When finding the mountpoint you can browse the entire file system and even create new directories within app (i can't tell you how much time i spent working out an in app directory browser.) You will also notice partition sizes and disk usage. Note: you won't see disk usage until the partition is mounted (not really an easy way around it). You should be able to have as many simultaneous drives attached, (with as many partitions as you want).

You should know that the fs types are only supported if you're kernel has the modules for them. Tiamat currently has fat/ntfs/ext/hfs/hfs+ modules so all of these should work. The kernel modules will be loaded on demand, so no need to worry about loading them manually.

BIG NOTE:::: HFS+ DOES NOT CURRENTLY WORK.

This appears to be an issue with the kernel module, I'll start working with BRD to get it sorted out.

Checkout the about page to see all of the features.

With this big of a code change there are bound to be bugs. I'll work on them as quickly as posisble, email me or post here when you find any.

This has been a huge amount of work. (lots of learning) The code has gone up in size by almost 2 orders of magnitude. and has been hours and hours of work, so enjoy and if you do a review on the market would be nice. I really didn't anticipate the amount of downloads that i got on V1. >4000 . I also couldn't believe the different types of device, or locales. On that note if anyone wants to help me localize to other languages I'd really appreciate the help. (Google Translate might have to do).

As before any bugs or feature requests can go here or can be emailed to me at apps <at> skidmrk <dot> com . I really hope people like this and use it. (i'd hate to have all the work go out for nothing.)

Thanks to everyone who have helped out so far.

-D

==============================================

UPDATE 5-20-2011 !! TIAMAT UMS KERNEL FOR 3.1 HAS ARRIVED !!

Ok BRD sent me his 3.1 kernel with ums compiled in. I've attached it below.(install via CMR, following the instructions in the tiamat kernel post)

I haven't finished the updates to the app to add ntfs/fat/etc mounting. Things ended up getting a little busy. I should have an update for the app come sunday/monday (going camping for the weekend)

BRD tells me he can't really support the ums stuff any more so i guess i'll take over ums builds (assuming i can figure it all out).

Getting very close to 1000 market downloads. Wow i didn't ever expect that many. I noticed that we have quite a few people with non english locales. Does anyone want to offer translations. I can and will localize (i feel it's important).

Also any requests for the new app version. So far i have a request for unified otg mounting interface. Localization, Kernel Detection and Download. Anything else you'd like to see?

Enjoy the new kernel (and you can thank BRD for it... i didn't really do anything to build it).

Also you don't need to reinstall my app. Once you install the new kernel it will start working again.

=================================================

UPDATE 5-10-2011 !! We're on the market !!

Nothing new yet (waiting on the otg cable) but now you can get the app via the market:

https://market.android.com/details?id=com.skidmrk.umswatcher

Please use this market link for downloads. It will be easier to keep your app updated ... i will however continue post the apks here and use this post to work with users (bug and features).

I haven't had a chance to test this on 3.1 because i've not yet updated... not to mention there isn't a kernel yet for 3.1.

As always feedback is much appreciated.

UPDATE 5-9-2011 NEW VERSION (new features)

Yeah for updates.

I finally figured out how to detect when something mounts the usb mass storage, so now the notification changes depending on the state of the usb mass storage. Finally it has the exact same behavior as android normally has.

I implemented the requested feature of automounting the usb mass storage. I'm not sure how many people would want it but it's there now (and kinda cool)

I've actually hooked in to the private api calls that android uses to mount usb storage (same call used in the native mount app). I figure that is a very safe way to do automounting. (and was a pain in the but to figure out)

Also out of necessity there is now an app you can run. This is just a page for managing settings. It doesn't have to be run for this app to work. Currently there is the "automount" setting and the "show notifications" setting. I figure with the automount feature this might serve useful on other devices for just that function, so those people can disable the notifications. I'll post this on the market as soon as i figure out how. (free of course).

As far as other devices go i tested it on my droid 1 and it works fine (for both notifications and automount). Feel free to test it on whatever you like.

Let me know if there are any other feature you want. I thought able customizing the notification (with sound, led, or vibrate) but that didn't make it in this build.

As before let me know what you think. Feedback can only make this better.

----------

For people still on tiamat 1.4.0 that want to use usb mass storage, have i got an app for you. I found it tedious to use the recommended scripter. So I saw this as an opportunity to write my first albeit basic application.

So attached you'll find it "Usb Mass Storage Watcher". The app listens for usb connections and when it detects one it will add the "mount usb" notification just like the standard android interface. Click on it and it will bring up the mount usb app.

The app does not need to be run at startup or ever really. When it is installed it registers itself as a listener for the usb connection events. It gets called by android os when those event happen. So basically it operates exactly like android is supposed to.

Special thanks to:

Kevin(at)TeslaCoil

LouZiffer(at)SDX

for their ShellCommand (su/sh) class.

Let me know what you think. I'd really like feedback.

-D