实现音乐播放的一些方式

本文介绍如何在Android应用中实现音乐播放器功能,包括两种创建MediaPlayer的方法:通过.create静态方法加载raw目录下的音频文件和new MediaPlayer加载不同来源的音频文件(如SD卡、assets目录)。此外还介绍了音乐播放、暂停、停止等操作及资源释放的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

音乐资源的名字:不能有中文,不能有空格,不能有特殊符号,尽量不要全是数字 

音乐播放器:MediaPlayer创建的方式一:

一般如果需要添加一个背景音乐,,可以使用这种方式

Java代码:

public class MainActivity extends Activity {
	private MediaPlayer player;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 1.创建音乐播放器的对象,,,,,通过.create方式去创建
		/*
		 * 1.这种创建方式,在音乐停止了以后,再去开始播放,会发生 (-38,0)这个异常------资源问题异常
		 * 2.当前应用(页面)退出以后,,音乐应该停止
		 */
		// 加载音乐资源的方式1:raw目录下的音乐资源
		player = MediaPlayer.create(MainActivity.this, R.raw.onemorenight);
	}
	/*
	 * 播放
	 */
	public void play(View view) {
//		player.reset();
		// 开始播放
		player.start();
	}
	/*
	 * 暂停
	 */
	public void pause(View view) {
		if (player.isPlaying()&&player!=null) {
			player.pause();
		}
	}
	/*
	 * 停止
	 */
	public void stop(View view) {
		if (player!=null) {
			player.stop();
		}
	}
	/**
	 * 页面销毁,,音乐也要停止
	 */
	@Override
	protected void onDestroy() {
		if (player!=null) {
			//销毁音乐资源
			player.release();
			//垃圾回收
			player=null;
		}
		super.onDestroy();
	}
}

创建音乐播放器的方式二: new MediaPlayer 的方式 

Java代码:

public class MainActivity extends Activity {

	private MediaPlayer player;
	private boolean flag=false;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 1.创建音乐播放器的对象
		player = new MediaPlayer();
	}
	/*
	 * 开始播放
	 */
	public void play(View view) {
		//进行判断,,状态值
		if (flag) {//处于暂停状态
			player.start();//继续播放
			flag=false;
		} else {
			try {
			//重置资源 *****
			player.reset();
			// 2.加载音乐资源-----path:音乐资源的路径
			//加载音乐资源2:加载sd卡下的音乐资源
//			player.setDataSource(Environment.getExternalStorageDirectory()+"/CheapThrills.mp3");
			//加载音乐资源3:加载assets目录下的音乐资源
			AssetFileDescriptor openFd = getAssets().openFd("sugar.mp3");
			player.setDataSource(openFd.getFileDescriptor(), openFd.getStartOffset(), openFd.getLength());
			//3.准备
//			player.prepare();//同步的准备
			player.prepareAsync();//异步的准备
			//4.播放
			//player.start();//如果当前音乐没播放,,直接播放,,,如果处于暂停状态,继续播放
			//准备完成的监听
			player.setOnPreparedListener(new OnPreparedListener() {
				@Override
				public void onPrepared(MediaPlayer mp) {
					player.start();
				}
			});
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	/*
	 * 暂停
	 */
	public void pause(View view) {
		if (player!=null&&player.isPlaying()) {
			player.pause();
			//更改状态值
			flag=true;
		}
	}
	/*
	 * 停止
	 */
	public void stop(View view) {
		if (player!=null) {
			player.stop();
		}
	}
	/**
	 * 释放资源
	 */
	@Override
	protected void onDestroy() {
		if (player!=null) {
			player.release();//释放音乐资源
			player=null;
		}
		super.onDestroy();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值