android 如何实现音乐播放

 我来答
历仲韩馀02Q
推荐于2016-01-18 · TA获得超过7210个赞
知道小有建树答主
回答量:1099
采纳率:81%
帮助的人:143万
展开全部

   在Android平台下,要实现声音的播放是十分容易实现的,只要生成一个MediaPlayer对象,并调用它的相关方法,就能改变对声音播放进行控制。MediaPlayer对象有一下各种状态:

     熟悉了MediaPlayer对象的各种状态后以及转换条件,就能很好的控制媒体播放。

   例如:播放res/raw文件夹中的歌曲十分简单,只需写如下代码:

 MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);

mp.start();
   也可以指定音乐文件的位置来进行播放,例如,在sdcard根目录下有有一首歌曲:test.mp3。则可以这样播放:
        MediaPlayer mp = new MediaPlayer();
       String song = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test.mp3";
       try {
           mp.setDataSource(song);
           mp.prepare();
           mp.start();
       } catch (Exception e) {
           e.printStackTrace();
       }

      建议在播放音乐的时候把MediaPlayer放在Service中,因为如果放在Activity中会使得界面特别卡。而且音乐不能放到后台里播放,一旦退出Activity,音乐就会暂停播放。

      可以在Activity中布局相关的界面,例如按钮等。然后通过这个Activitiy来启动这个Service。要通过UI与Service交互,可以通过Intent对象传递消息。更复杂一些,要实现Service向Activity发送消息,并利用这些消息来更新UI,这可以用广播机制,例如告诉Activity是否正在播放,播放进度,当前播放歌曲条目等信息。

  例如以下实例代码:

  /*Activity中*/

@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       btnPlay = (Button)findViewById(R.id.btnPlay);
       btnPause = (Button)findViewById(R.id.btnPause);
       btnPlay.setOnClickListener(new OnClickListener() {
           
           @Override
           public void onClick(View v) {
               Intent intent = new Intent(MainActivity.this,SoundService.class);
               intent.putExtra("playing", true);
               startService(intent);
           }
       });
       
       btnPause.setOnClickListener(new OnClickListener() {
           
           @Override
           public void onClick(View v) {
               Intent intent = new Intent(MainActivity.this,SoundService.class);
               intent.putExtra("playing", false);
               startService(intent);
           }
       });
   }
}

 

播放音乐的Service代码:

package com.yzy.sound;
 
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
 
public class SoundService extends Service {
   private MediaPlayer mp;
 
   @Override
   public void onCreate() {
       super.onCreate();
       mp = MediaPlayer.create(this, R.raw.test);
   }
 
   @Override
   public void onDestroy() {
       super.onDestroy();
       mp.release();
       stopSelf();
   }
 
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
       boolean playing = intent.getBooleanExtra("playing", false);
       if (playing) {
           mp.start();
       } else {
           mp.pause();
       }
       return super.onStartCommand(intent, flags, startId);
   }
 
   @Override
   public IBinder onBind(Intent intent) {
       return null;
   }
 
}

匿名用户
2011-08-12
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
80057973
2011-08-13 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:120万
展开全部
你的题目大家都不是很清楚啊 ,播放音乐 播放器。。自己写程序?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式