开启一个新线程播放背景音乐

1、布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始" />


</LinearLayout>

2、MainActivity

public class MainActivity extends Activity {

	private Thread thread;// 声明一个线程对象
	private static MediaPlayer mp = null;// 声明一个MediaPlayer对象

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button = (Button) findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				((Button) v).setEnabled(false);// 设置按钮不可用
				// 创建一个用于播放背景音乐的线程
				thread = new Thread(new Runnable() {
					@Override
					public void run() {
						playBGSound();// 播放背景音乐
					}
				});
				thread.start();// 开启线程
			}
		});
	}

	private void playBGSound() {
		if (mp != null) {
			mp.release();// 释放资源
		}
		mp = MediaPlayer.create(MainActivity.this, R.raw.music);
		mp.start();// 开始播放
		// 为MediaPlayer添加播放完事件监听器
		mp.setOnCompletionListener(new OnCompletionListener() {
			@Override
			public void onCompletion(MediaPlayer mp) {
				try {
					Thread.sleep(5000);// 线程休眠五秒钟
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		});
	}

	@Override
	protected void onDestroy() {
		if (mp != null) {
			mp.stop();// 停止播放
			mp.release();// 释放资源
			mp = null;
		}
		if (thread != null) {
			thread = null;
		}
		super.onDestroy();
	}

}


你可能感兴趣的:(开启一个新线程播放背景音乐)