While working on an Android App, I had to integrate the Camera API. User can take a photo from App and process it. With Android the Photo that you click cannot be accessed until the media scanner runs and index it. It is possible to triggeer programatically the Media Scanner in Android. Check the below code snippet:
Here we are using sendBroadcast method from Activity class to send a broadcast message to an Intent. For our need we have used ACTION_MEDIA_MOUNTED intent which will invoke the media scanner. Also note that we have passed the path (URI) of our external storage directory.
So in your app whenever you want to trigger Media scanner, simply invoke the above intent via broadcast message.
Following is a Demo App to achieve this.
The App will be very simple. It will have a button “Trigger Media Scanner”. On its click we will invoke the above sendBroadcast() code to trigger media scanner.
Step 1: Create Basic Android Project in Eclipse
Create a Hello World Android project in Eclipse. Go to New > Project > Android Project. Give the project name as MediaScannerDemo and select Android Runtime 2.1 or sdk 7. I have given package name
Once you are done with above steps, you will have a basic hello world Android App.
Step 2: Change the Layout
For our demo, we need simple layout. Just one button Trigger Image Scanner which does the job.
Open layout/main.xml in your android project and replace its content with following:
Step 3: Android Java Code to trigger Image Scanner Intent
MediaScannerDemoActivity class and add following code in
OnCreate() method, we have added an
OnClickListener to button. In the listener class, we added logic to trigger media scanner and also a Toast message to show user that scanner has been triggered.
Screen shots of Android App
And that’s all! Just execute the app in Android emulator or real device and see following output.
On click of Trigger Media Scanner button, the media scanner is invoked which we can see in Title bar.
Download Source Code