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

曾经终败给现在 2022-08-19 13:19 198阅读 0赞

1、布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent" >
  5. <Button
  6. android:id="@+id/button1"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="开始" />
  10. </LinearLayout>

2、MainActivity

  1. public class MainActivity extends Activity {
  2. private Thread thread;// 声明一个线程对象
  3. private static MediaPlayer mp = null;// 声明一个MediaPlayer对象
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. Button button = (Button) findViewById(R.id.button1);
  9. button.setOnClickListener(new OnClickListener() {
  10. @Override
  11. public void onClick(View v) {
  12. ((Button) v).setEnabled(false);// 设置按钮不可用
  13. // 创建一个用于播放背景音乐的线程
  14. thread = new Thread(new Runnable() {
  15. @Override
  16. public void run() {
  17. playBGSound();// 播放背景音乐
  18. }
  19. });
  20. thread.start();// 开启线程
  21. }
  22. });
  23. }
  24. private void playBGSound() {
  25. if (mp != null) {
  26. mp.release();// 释放资源
  27. }
  28. mp = MediaPlayer.create(MainActivity.this, R.raw.music);
  29. mp.start();// 开始播放
  30. // 为MediaPlayer添加播放完事件监听器
  31. mp.setOnCompletionListener(new OnCompletionListener() {
  32. @Override
  33. public void onCompletion(MediaPlayer mp) {
  34. try {
  35. Thread.sleep(5000);// 线程休眠五秒钟
  36. } catch (InterruptedException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. });
  41. }
  42. @Override
  43. protected void onDestroy() {
  44. if (mp != null) {
  45. mp.stop();// 停止播放
  46. mp.release();// 释放资源
  47. mp = null;
  48. }
  49. if (thread != null) {
  50. thread = null;
  51. }
  52. super.onDestroy();
  53. }
  54. }

发表评论

表情:
评论列表 (有 0 条评论,198人围观)

还没有评论,来说两句吧...

相关阅读