2014-04-28 117 views
0

我已经尝试了很多不同的方式,但他们都没有工作。这个方法没有错误,但什么都不做。我将我的所有声音放在我的主项目下的一个子目录中。我尝试过的大多数代码都是不同的方式,如MediaPlayer和SoundPooling。他们都没有为我工作,所以我尝试了这一点。如果有人能为我纠正这个问题,或者让我接受一个教程,那会很棒。在Android应用上播放MP3文件?

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

回答

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 
+0

我对** R.raw.song **/** R.id.btnPlaySong1 **行有个疑问。你如何设置这些?我不太了解它。 – user1947638

+0

要在您的应用中使用媒体,请在'res'文件夹中创建一个名为'raw'的文件夹,并将您的音频文件放在那里'btnPlaySong1'是该按钮的ID。 –

+0

现在工作吗? –

0

我建议针对Android的使用MP3文件,因为它似乎是处理OGG好得多。你能做这个吗?

+0

是的,我可以很容易地转换它们。 – user1947638