在Android应用上播放MP3文件?

时间:2014-04-28 23:41:59

标签: java android audio mp3

我尝试了很多不同的方法,但似乎都没有。这种方法没有错误,但什么也没做。我将所有声音放在我主项目下的子目录中。我尝试过的大多数代码都是不同的方式,比如MediaPlayer和SoundPooling。他们都没有为我工作,所以我尝试了这个。如果有人能为我纠正这个问题或者让我参加一个教程,那就太好了。

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");
}
}

2 个答案:

答案 0 :(得分:0)

做这样的事情

//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

答案 1 :(得分:0)

我建议不要在Android中使用MP3文件,因为它似乎更好地处理OGG。你能做到吗?