Sahil
Sahil

Reputation: 1983

Handling Media Files in Android by installed apps

I have an app which records Audio and video. Then there is a list in the app which displays these recorded files. When user clicks on one of this file, I would like to display an option of apps that user can choose to play this clicked file. An example of it is shown below.

enter image description here

All the examples I have looked on internet is of using a media player which I am already doing but I would like the pause, stop etc function to be handled by an already available app in the users device.

Is this possible to do? If so how?

Upvotes: 1

Views: 239

Answers (2)

Sahil
Sahil

Reputation: 1983

I found the answer by readin up on the internet.

First prepare the file location and then open an intent with the data at this location

Uri fileURi = Uri.parse(tempFileURi); //i.e. /storage/emulated/0/Android/data/com.sahilsaid.appname/files/Music/Recording200.3gp
File file = new File(fileURi.toString());

 if (file.exists()) {
    Uri finalFileUri = Uri.fromFile(file);
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setDataAndType(finalFileUri, URLConnection.guessContentTypeFromName(finalFileUri.toString()));
    startActivity(intent);

 }

You will also need to modify your AndroidManifest.xml file and add intent-filter as suggested above by @Aky

   <activity
        android:name=".exampleActivity"
        android:label="@string/title_activity_example">
        <intent-filter>
            <action android:name="android.intent.action.GET_CONTENT" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.OPENABLE" />
            <data android:mimeType="audio/*"/>
        </intent-filter>
    </activity>

For more info visit this article:

https://software.intel.com/en-us/blogs/2014/03/20/video-playing-with-android-media-player

Upvotes: 1

Akshay Chordiya
Akshay Chordiya

Reputation: 4841

I guess your Activity which handles Audio and Video should have this in AndroidManifest. The below intent-filer is for Audio files, similarly you can add for Video files for the same Activity.

<activity ...>
        <intent-filter>
            <action android:name="android.intent.action.GET_CONTENT" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.OPENABLE" />
            <data android:mimeType="audio/*"/>
        </intent-filter>
</activity>

EDIT: For your Activity

Suppose you show a list of audio files and user is suppose to click one. So when the user clicks some item. You just need to set the result. Ex.

    setResult(RESULT_OK, new Intent().setData(YOUR_URI));

The 2nd param is just the data which we need to pass to the calling Application basically we pass the URI of the data.

EDIT 2: The RESULT_OK is inherited variable of Activity. You don't need to define it.

I hope it helps you.

Upvotes: 1

Related Questions