Skip to main content

Refreshing Android MediaStore

The Android MediaStore maintains the metadata of audio, video and image files in the underlying filesystem for convenient consumption by relevant Android apps (eg. music player).

The problem is when manipulating the SD card content with an Android file manager, sometimes the metadata cache becomes out of sync with the actual filesystem. So for example if you rename or delete a folder using a file manager, then connect the device via a USB cable to your PC to be accessed via MTP, the old folder may appear in Windows Explorer. Clicking "Refresh" does not work to update the content. The only way to refresh the cache is to reboot the device.

Another method I found recently is to run an app that forces MediaStore to refresh its cache. There are many apps available for this purpose if you search for "rescan sd" in the app store. A lot of them won't work with Android 6.x (Mashmallow) and will crash when you try. One ad-free app that works  under Mashmallow is Rescan SD Card.



It is a very simple app, but it does take a while to rescan the entire SD card. For my case with a few thousand files, it took 3 to 4 minutes to complete the process.

On the topic of MTP, it is a horrible protocol for file transfer. We used to have USB mass storage, where the SD card is mounted as a drive under Windows Explorer. But this is all but gone in the latest devices and can only be found in some custom ROMs.

Anyway, mounting the SD card as a drive has its own problems because it needs to dismount the storage from Android apps during the usage duration, which can cause all sorts of unexpected problems. Recent devices mostly only support PTP (which is practically useless for anything) and MTP.

MTP is horrible because it is extremely finicky. It can hang when transferring large files. It can hang when you are just renaming a folder. When it hangs, the only workaround is to reboot the device.

Why not use wireless? Wireless transfer apps such as AirDroid or SendAnywhere is not practical when you are trying to transfer large files (eg. video files > 500MB). In addition, when you are out and about, and your PC is connected to a WiFi hotspot, while your phone is connected to 4G, it is a pain to juggle the connections so that the quota on your 4G broadband will not be affected. Simplest is to use a USB cable, which is fast and reliable. Too bad the underlying protocol is garbage.

We need a better standard for wired file transfer over USB, and so far none is forthcoming.

Comments

Popular posts from this blog

Update: Line adapter for Ozito Blade Trimmer

Update (Dec 2021): If you access to a 3D printer, I would now recommend this solution , which makes it super easy to replace the trimmer line. I have been using it for a few months now with zero issue.

Cooling mod for the X96 Air

I realized after my Ugoos box died that overheating is a big problem with cheap Android TV boxes. A teardown of the Ugoos box shows that it does not have any heatsink or fan at all!  The X96 Air does have a heatsink, but the heatsink is located at the bottom of the casing with no ventilation. In this default configuration, with the ambient room temperature at 25c and playing a 1080p video, I was seeing the CPU temperature at 67c. I drilled a couple of holes at the bottom of the casing. The CPU temperature fell to 59c with the box raised about 2cm with plastic blocks. I retrieved an old 5V laptop fan: Then cut and strip away a spare USB cable: Solder the red and black wires on the fan and the cable: Secure the fan to the bottom of the casing with double-sided tape, then plug the fan into the box's USB connector. Here's a view of the box with some 3D-printed risers installed at the bottom to give the mounted fan sufficient clearance: The CPU now runs at 43c, a huge drop from the ...

Installing and customizing CoreELEC in X96 Air

I previously installed CoreELEC on another TV Box ( Ugoos X3 Pro ), which unfortunately died after only 9 months during the summer (due to the unit overheating, which I learned is a common problem for cheap Android TV boxes). So this time I purchased a X96 Air  (4GB/32Gb) and had to do the whole thing again. So this is a note-to-self in case I ever have to install CoreELEC again on some other device. Installation of CoreELEC is simple enough by following this guide . Basically, it involves downloading and writing the firmware to a microSD card using usbimager . Then insert the microSD card, reset the unit and hold the reset until the logo appears. The unit will then proceed to boot into CoreELEC. First thing is to connect to WiFi, then enable SSH. This allows me to login via ssh and execute: ceemmc -x from the terminal. This writes CoreELEC to the built-in eMMC storage, after which I am able to remove the microSD card and reboot the unit into CoreELEC via the built-in sto...