Android虚拟机播放音乐实例

1

package dfzy.EX099;

import dfzy.EX099.R;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class EX099 extends Activity
{
  /* 声明一个 ImageButton,TextView,MediaPlayer变量 */
  private ImageButton mButton01, mButton02, mButton03;
  private TextView mTextView01;
  private MediaPlayer mMediaPlayer01;
  /* 声明一个Flag作为确认音乐是否暂停的变量并默认为false */
  private boolean bIsPaused = false;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    /* 通过findViewById构造器创建TextView与ImageView对象 */
    mButton01 = (ImageButton) findViewById(R.id.myButton1);
    mButton02 = (ImageButton) findViewById(R.id.myButton2);
    mButton03 = (ImageButton) findViewById(R.id.myButton3);
    mTextView01 = (TextView) findViewById(R.id.myTextView1);

    /* onCreate时创建MediaPlayer对象 */
    mMediaPlayer01 = new MediaPlayer();
    /* 将音乐以Import的方式存储在res/raw/always.mp3 */
    mMediaPlayer01 = MediaPlayer.create(EX099.this, R.raw.big);

    /* 运行播放音乐的按钮 */
    mButton01.setOnClickListener(new ImageButton.OnClickListener()
    {
      @Override
      /* 覆盖OnClick事件 */
      public void onClick(View v)
      {
        // TODO Auto-generated method stub
        try
        {

          if (mMediaPlayer01 != null)
          {
            mMediaPlayer01.stop();
          }
          /*
           * 在MediaPlayer取得播放资源与stop()之后
           * 要准备Playback的状态前一定要使用MediaPlayer.prepare()
           */
          mMediaPlayer01.prepare();
          /* 开始或回复播放 */
          mMediaPlayer01.start();
          /* 改变TextView为开始播放状态 */
          mTextView01.setText(R.string.str_start);
        } catch (Exception e)
        {
          // TODO Auto-generated catch block
          mTextView01.setText(e.toString());
          e.printStackTrace();
        }
      }
    });

    /* 停止播放 */
    mButton02.setOnClickListener(new ImageButton.OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub
        try
        {
          if (mMediaPlayer01 != null)
          {
            /* 停止播放 */
            mMediaPlayer01.stop();
            /* 改变TextView为停止播放状态 */
            mTextView01.setText(R.string.str_close);
          }

        } catch (Exception e)
        {
          // TODO Auto-generated catch block
          mTextView01.setText(e.toString());
          e.printStackTrace();
        }
      }
    });

    /* 暂停播放 */
    mButton03.setOnClickListener(new ImageButton.OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub
        try
        {
          if (mMediaPlayer01 != null)
          {
            /* 是否为暂停状态=否 */
            if (bIsPaused == false)
            {
              /* 暂停播放 */
              mMediaPlayer01.pause();
              /* 设置Flag为treu表示 Player状态为暂停 */
              bIsPaused = true;
              /* 改变TextView为暂停播放 */
              mTextView01.setText(R.string.str_pause);
            }
            /* 是否为暂停状态=是 */
            else if (bIsPaused == true)
            {
              /* 回复播出状态 */
              mMediaPlayer01.start();
              /* 设置Flag为false表示 Player状态为非暂停状态 */
              bIsPaused = false;
              /* 改变TextView为开始播放 */
              mTextView01.setText(R.string.str_start);
            }
          }
        } catch (Exception e)
        {
          // TODO Auto-generated catch block
          mTextView01.setText(e.toString());
          e.printStackTrace();
        }
      }
    });

    /* 当MediaPlayer.OnCompletionLister会运行的Listener */
    mMediaPlayer01
        .setOnCompletionListener(new MediaPlayer.OnCompletionListener()
        {
          // @Override
          /* 覆盖文件播出完毕事件 */
          public void onCompletion(MediaPlayer arg0)
          {
            try
            {
              /*
               * 解除资源与MediaPlayer的赋值关系 让资源可以为其它程序利用
               */
              mMediaPlayer01.release();
              /* 改变TextView为播放结束 */
              mTextView01.setText(R.string.str_OnCompletionListener);
            } catch (Exception e)
            {
              mTextView01.setText(e.toString());
              e.printStackTrace();
            }
          }
        });

    /* 当MediaPlayer.OnErrorListener会运行的Listener */
    mMediaPlayer01.setOnErrorListener(new MediaPlayer.OnErrorListener()
    {
      @Override
      /* 覆盖错误处理事件 */
      public boolean onError(MediaPlayer arg0, int arg1, int arg2)
      {
        // TODO Auto-generated method stub
        try
        {
          /* 发生错误时也解除资源与MediaPlayer的赋值 */
          mMediaPlayer01.release();
          mTextView01.setText(R.string.str_OnErrorListener);
        } catch (Exception e)
        {
          mTextView01.setText(e.toString());
          e.printStackTrace();
        }
        return false;
      }
    });
  }

  @Override
  /* 覆盖主程序暂停状态事件 */
  protected void onPause()
  {
    // TODO Auto-generated method stub
    try
    {
      /* 再主程序暂停时解除资源与MediaPlayer的赋值关系 */
      mMediaPlayer01.release();
    } catch (Exception e)
    {
      mTextView01.setText(e.toString());
      e.printStackTrace();
    }
    super.onPause();
  }
}

raw下添加一个big.mp3文件

3

主布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  android:id="@+id/widget32"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/white"
  xmlns:android="http://schemas.android.com/apk/res/android"
>
  <TextView
    android:id="@+id/myTextView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textColor="@drawable/black"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
  >
  </TextView>
  <ImageButton
    android:id="@+id/myButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/play"
    android:layout_below="@+id/myTextView1"
  >
  </ImageButton>
  <ImageButton
    android:id="@+id/myButton3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/pause"
    android:layout_alignTop="@+id/myButton1"
    android:layout_toRightOf="@+id/myButton1"
  >
  </ImageButton>
  <ImageButton
    android:id="@+id/myButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/stop"
    android:layout_alignTop="@+id/myButton1"
    android:layout_toRightOf="@+id/myButton3"
  >
  </ImageButton>
</RelativeLayout>


4 还有 图片文件,字段定义文件string.xml,颜色字段文件color.xml,这些不是核心的就不写了

5 显示结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静山晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值