javaandroidaudiomp3

Playing MP3 files on an Android App?


I've tried many different ways, but none of them seem to work. This method gets no errors, but does nothing. I'm placing all of my sounds in a subdir under my main project. Most of the code I've tried was different ways like the MediaPlayer and SoundPooling. None of them worked for me and so I tried this. If anyone could correct this for me or get me to a tutorial, that would be great.

package me.javoris767.twds2soundboard;

import java.io.IOException;

import me.javoris767.twds2soundboard.R;
import android.view.View;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;


public class ClementinePage extends Activity {
MediaPlayer mp=new MediaPlayer();   
public boolean isPlaying;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_clementine_page);

}

public void playSound(String file) {
    AssetFileDescriptor afd = null;
    try {
        afd = getAssets().openFd(file);
        MediaPlayer player = new MediaPlayer();
        player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
                afd.getLength());

        player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            public void onPrepared(MediaPlayer p1) {
                p1.start();
                isPlaying = true;
            }
        });
}catch (IOException e) {
    e.printStackTrace();
    }
}

public void onNoClick(View v) {
    playSound("sounds/ohno.mp3");
}
}

Solution

  • Do something like this

    //initialising the two new buttons
        final Button btSong1 = (Button)findViewById(R.id.btnPlaySong1);
        final Button btSong2 = (Button)findViewById(R.id.btnPlaySong2);
    
        //initialising the two new media player instances
        song1 = new MediaPlayer();
        song1 = MediaPlayer.create(this, R.raw.song3);
    
        song2 = new MediaPlayer();
        song2 = MediaPlayer.create(this, R.raw.song4);
    
    
    
        //The code for the two buttons go here
    
        btSong1.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
            //This is where your code will go
                switch(stateOfPlaying){
                case 0: 
                    song1.start();
                    stateOfPlaying = 1;
                    btSong1.setText("Pause Song 1");
                    btSong2.setVisibility(View.INVISIBLE);
    
    
                    break;
                case 1:
                    song1.pause();
                    stateOfPlaying = 0;
                    btSong1.setText("Play Song 1");
                    btSong2.setVisibility(View.VISIBLE);
                    break;
                }//switch
    
            }//end of onClick
        });//btSong1
    
        btSong2.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
            //This is where your code will go
                switch(stateOfPlaying){
                case 0: 
                    song2.start();
                    stateOfPlaying = 1;
                    btSong2.setText("Pause Song 2");
                    btSong1.setVisibility(View.INVISIBLE);
    
    
    
                    break;
                case 1:
                    song2.pause();
                    stateOfPlaying = 0;
                    btSong2.setText("Play Song 2");
                    btSong1.setVisibility(View.VISIBLE);
                    break;
                }//switch   
    
            }//end of onClick
        });//btSong2