Playing audio files in android - android

I need to play long audio files using the Android SDK. I am aware of the MediaPlayer framework shipped by Android, but I was wondering wether the built-in "Music Player" application could be invoked, so I don't have to write my own player GUI and code.

Yes, you can.
Set up an intent like this:
act=android.intent.action.VIEW dat=file:///mnt/sdcard/song_name.mp3 typ=audio/mpeg3
Action: VIEW
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri
.parse("file:///mnt/sdcard/song_name.mp3"),
"audio/mpeg3");
startActivity(intent);

Related

Android: Launch music player service from application

I know that it is possible to launch the music player using an intent using either of the follow:
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(YOUR_SONG_URI);
intent.setDataAndType(Uri.fromFile(file), "audio/*");
startActivity(intent);
or
Intent intent = new Intent(MediaStore.CATEGORY_APP_MUSIC);
startActivity(intent);
However is it possible to start the default music player as a SERVICE rather than an activity? Moreover, is it possible to send actions to that service once it has been created?
However is it possible to start the default music player as a SERVICE rather than an activity?
No, in part because there is no requirement for the user's chosen music player to even have a service. Moreover, the ACTION_VIEW Intent action is only generally supported by activities.
Moreover, is it possible to send actions to that service once it has been created?
Not generally.
There thousands of "music player" apps for Android, any of which can be the "default" for a given user and device. You are welcome to ask each and every one of them if they offer some sort of command-based interaction with some sort of music-playing Service to allow third-party apps to control their player. Some might. Most won't.

Android - how to open an audio-stream url with an external app?

I want to give the user the choice of opening an audio stream url with an audio player that he already have installed.
The following code works as so far that the user getting a list of installed audio apps and can choose between then.
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(stream.getAudio()), "audio/*");
startActivity(intent);
But it will open an intent that lives inside my app only. Therefor the playback will stop if the user closes my app. How can I change the behaviour so that not an new activity is started but the whole app is launched and is detached from my app.
I guess it's because the audio player is opened in the same task stack of your app.
Try Intent.FLAG_ACTIVITY_NEW_TASK to start it as a new task, like:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
See Tasks and Back Stack to learn more.

Controlling android music player by my own application

I want to write some application to control android music player :)
For example when i shake phone -> player should change music next one. Is it possible without rooting my phone?
I think it is possible, here is a snippet for a performing playback through Intent.
Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
startActivity(intent);
or
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(YOUR_SONG_URI);
intent.setDataAndType(Uri.fromFile(file), "audio/*");
startActivity(intent);
Source: Android launching music player using intent
You have to check if there are more Intents you can use by googleing (loading a playlist, etc.).
To control any 3rd party application it first have to be willing to let you to. It is usually done by exposing public API of any sort, so other app would know how to do that. If music player of your choice offers that, then "yes" is the answer. If it does not, then usually it means "no", and rooting is not necessarily a magical solution either. If there's no API or any other communication channel exposed (even non publicly) then achieving your goal would be tricky.

Intent to play sound from raw folder

I want to use the systems audio/video player to play a sound from my raw folder but I keep on getting the same "No activity found to handle Intent" message (exception) when firing the intent.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("android.resource://mypackagename/" + R.raw.audiofile), "audio/*");
startActivity(intent);
Any ideas? Thanks!
The way the intent system works is that your app is basically saying, "Hey Android, I have this url and I want to view it. Is there an app on the phone that will do that?"
For http urls, you've got your browser installed on the phone, for google play urls it'll show you the google play store as an option, etc etc. If you don't have an app on your phone that will handle audio resources (which there isn't one installed by default whatever that means for android).
Just like Dirk said, you have to use the MediaPlayer to play your resources. The MediaPlayer page is pretty sweet: http://developer.android.com/reference/android/media/MediaPlayer.html
Please try the following (Where soundfile is the name of the file in the raw folder without extension. Use only lowercase characters, please):
MediaPlayer player = MediaPlayer(this,R.raw.soundfile);
player.prepare();
player.start();
.
.
.
player.stop();
player.reset();
player.release();
player = null;
Found here.

How to access the default MediaPlayer

I have a link to a audio file. I don't want to create a object using my code for a Mediaplayer and play it, but instead I want to call the inbuilt MediaPlayer app of my android mobile. Is this possible at all. Any help is much appreciated.
Try this:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(audioFileUri, "audio/*");
startActivity(intent);
Or change the last line to startActivity(Intent.createChooser(intent, "play music")); to display a app chooser to finish the task.
I have used this piece of code and find that it doesn't work for the audio files for /raw folder. I guess this happens because the player can't get access to the resource from developer's package.

Categories

Resources