【问题标题】:how to play audio file in android如何在android中播放音频文件
【发布时间】:2011-11-09 15:23:56
【问题描述】:

我的 android 手机中有一个 mp3 文件,让它成为我 sdcard 某处的 xyz.mp3。 如何通过我的应用程序播放它?

【问题讨论】:

  • 您也可以将xyz.mp3放入res/raw/,然后通过R.raw.xyz引用。但是,您有两个选择:MediaPlayerSoundPool。为了有效的内存管理,您应该使用库来处理这些类:github.com/delight-im/Android-Audio

标签: android audio android-widget media-player


【解决方案1】:

您只需使用MediaPlayer 即可播放音频文件。查看this nice example 播放音频:

 public void audioPlayer(String path, String fileName){
    //set up MediaPlayer    
    MediaPlayer mp = new MediaPlayer();

    try {
        mp.setDataSource(path + File.separator + fileName);
        mp.prepare();
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

【讨论】:

  • 对于 GUI 你必须自己去帮助图像和整个布局。
  • "GUI 怎么样" LOL
  • 如何获取路径和文件名??
  • 你不应该使用“/”。您应该始终使用File.separator
  • 来电时音频是否静音?
【解决方案2】:

如果音频在本地原始资源中:

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you

从系统本地可用的 URI 播放:

Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

【讨论】:

    【解决方案3】:

    @Niranjan,如果您使用的是 res/raw 文件夹中的原始文件,即读取存储在项目中的文件,我们可以使用:

    mediaplayer.setDataSource(context, Uri.parse("android.resource://urpackagename/res/raw/urmp3name");
    

    如果您必须从 SD 卡使用:

     MediaPlayer mediaPlayer = new MediaPlayer();
     File path = android.os.Environment.getExternalStorageDirectory();
     mediaPlayer.setDataSource(path + "urmp3filename");
    

    查看这个相关问题:MediaPlayer issue between raw folder and sdcard on android

    【讨论】:

    • 如果你让我知道为什么-1,我会知道上面的答案有什么问题?
    • 可能 -1 是因为您发布了对原始问题的答案(即如何播放音频文件);如果您想回复 Niranjan 的评论,您应该在 Lalit 的回答下自己添加评论
    • 嗯......他们应该在评论中告诉我,我会改变它......无论如何,谢谢你让我知道...... .
    • 我宁愿看:试试 { mp.setDataSource(context, Uri.parse("android.resource://" + context.getPackageName() +"/res/raw/urmp3name") ); } catch (IOException e) { e.printStackTrace(); }
    【解决方案4】:
        public class MainActivity extends Activity implements OnClickListener {
        Button play;
        MediaPlayer mp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            setVolumeControlStream(AudioManager.STREAM_MUSIC);
            play=(Button)findViewById(R.id.button1);
            play.setOnClickListener(this);
    
        }
        @Override
        public void onClick(View arg0)
        {
            mp=MediaPlayer.create(getApplicationContext(),R.raw.song);// the song is a filename which i have pasted inside a folder **raw** created under the **res** folder.//
            mp.start();
    
    
        }
    
        @Override
        protected void onDestroy() {
            mp.release();
            super.onDestroy();
        }
    
    }
    

    【讨论】:

      【解决方案5】:

      https://stackoverflow.com/users/726863/lalit-poptani 的回放很棒,第一次成功了,但是因为我以前有文件的完整路径,所以我这样做了

      public void audioPlayer(String path){
              //set up MediaPlayer
              MediaPlayer mp = new MediaPlayer();
      
              try {
                  mp.setDataSource(path );
                  mp.prepare();
                  mp.start();
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      

      感谢http://www.helloandroid.com/tutorials/how-play-video-and-audio-android

      【讨论】:

        猜你喜欢
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 2017-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多