how to read a sound file (mp3) - android

how to open and read a sound file ?
My purpose is when click on Button read music open and I listen this file
I do not know how to open an mp3 file and read this file contenut
how, which the permission is there a tutorial and thank you in advance

If I understand you correctly you just want to play a local MP3 file. Correct?
You should read the official API guides. It will tell you everything you need to know!
Here are a few snippets from the guide:
How you might play from local storage:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
What permissions do you need?
Internet Permission - If you are using MediaPlayer to stream network-based content, your application must request network access.
Wake Lock Permission - If your player application needs to keep the screen from dimming or the processor from sleeping, or uses the MediaPlayer.setScreenOnWhilePlaying() or MediaPlayer.setWakeMode() methods, you must request this permission.

Related

Android Visualizer won't pick up audio from Spotify streaming music

I'm making an Android audio visualizer app for streaming Spotify music. I'm using Spotify's android-streaming-sdk which creates a local service (no need to have the Spotify app installed) and it plays music from within the app. I'm having a difficult time getting Androids Visualizer library to pick up any audio from Spotify (it works fine if I use a local .mp3 file).
//Start playing spotify track
player.playUri(MainActivity.operationCallback,
VisualizerModel.getInstance().getTrackURI(), 0, 0);
.... other code ....
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
int audioSessionId = mediaPlayer.getAudioSessionId();
visualizer = new Visualizer(audioSessionId);
visualizer.setCaptureSize(audioSampleSize);
visualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate(), true, true);
visualizer.setEnabled(true);
If I run this, everything compiles and runs okay, but the visualizer does not pick up any audio. This makes me thing that the audio sessionId is not the same one as Spotify is playing on. However, if I switch the audioSessionId to 0 (which should listen to all the audio sessions mixed from what I understand) it crashes with this error:
E/AudioEffect: set(): AudioFlinger could not create effect, status: -1
E/visualizers-JNI: Visualizer initCheck failed -3
E/Visualizer-JAVA: Error code -3 when initializing Visualizer.
According to their documentation that error means: Operation failed due to bad object initialization.
I'm targetting API 24 (Android 7.0).
Please let me know if you have suggestions or an alternative to using Android's Visualizer library. I feel like my main problem is that I'm not sure how to find the audioSessionId that Spotify is playing on, and because Spotify's android-streaming-sdk is in beta (and not mentioned on their website) there is virtually no documentation on it from what I can see on Github.
Thank you for taking the time to read my issue!
I was facing the same error. Adding "android.permission.RECORD_AUDIO" to manifest and requesting for runtime permissions fixed the issue.
to protect privacy of certain audio data (e.g voice mail) the use of the visualizer requires the permission android.permission.RECORD_AUDIO
Also
Creating a Visualizer on the output mix (audio session 0) requires permission Manifest.permission.MODIFY_AUDIO_SETTINGS
Android docs for Visualizer class

Android: how to play an mp3(URL) file using the any of the installed apps

I have URL poins to mp3 file
what I need is when the user click a certain button in my layout I want the android OS to display a list of the installed apps that can handle this URL
can this done or I should use the MediaPlayer class?
To open a url, android system will show browsers list. But i think you need apps which can stream music. I dont think there is any system app that can do it. or else you can download music when user clicks on button and then open music players by media intent or mediaplayer class.
MediaPlayer mMediaPlayer = new MediaPlayer();
FileInputStream fileStream = new FileInputStream("your song.mp3");
mMediaPlayer.setDataSource(fileStream.getFD());
Try this

Can I use phonegap to play audio through the earpiece speaker?

Can anyone please show me how and where can I modify the Phonegap source to play audio through the earpiece?
Try this code:
private AudioManager m_amAudioManager;
m_amAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
m_amAudioManager.setMode(AudioManager.MODE_IN_CALL);
m_amAudioManager.setSpeakerphoneOn(false);
Also need to add new permission:
MODIFY_AUDIO_SETTINGS
Either put this code in your activity start (onCreate()) or you need to write a plugin to enable/disable it based on your requirement from the javascript.
Check this post for more
Android - Getting audio to play through earpiece

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