• media player


    MusicActivity

    package com.audio;


    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 MusicActivity 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(MusicActivity.this, R.raw.big);
            
            /*  运行播放音乐的按钮  */
            mButton01.setOnClickListener(new ImageButton.OnClickListener(){


    @Override
    /*  覆盖Onclick事件    */
    public void onClick(View v) {
    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){
    mTextView01.setText(e.toString());
    e.printStackTrace();
    }
    }
            
            });
            
            /*  停止播放  */
            mButton02.setOnClickListener(new ImageButton.OnClickListener(){


    @Override
    public void onClick(View v) {
    try{
    if( mMediaPlayer01 != null ){
    /*  停止播放   */
    mMediaPlayer01.stop();
    /*  改变TextView为停止播放状态   */
    mTextView01.setText(R.string.str_close);
    }
    }catch(Exception e){
    mTextView01.setText(e.toString());
    e.printStackTrace();
    }
    }
            
            });
            
            /*  暂停播放   */
            mButton03.setOnClickListener(new ImageButton.OnClickListener(){


    @Override
    public void onClick(View v) {
    try{
    if( mMediaPlayer01 != null ){
    /*  是否为暂停状态=否   */
    if(bIsPaused == false){
    /*  暂停播放   */
    mMediaPlayer01.pause();
    /*  设置Flag为true表示 Player状态为暂停   */
    bIsPaused = true;
    /* 改变TextView为暂停播放 */
    mTextView01.setText(R.string.str_pause);
    }else{
    /*  回复播出状态   */
    mMediaPlayer01.start();
    /*  设置Flag为false表示 Player状态为非暂停   */
    bIsPaused = false;
    /* 改变TextView为暂停播放 */
    mTextView01.setText(R.string.str_start);
    }
    }
    }catch(Exception e){
    mTextView01.setText(e.toString());
    e.printStackTrace();
    }
    }
            
            });
            
            /* 当MediaPlayer.OnCompletionLister会运行的Listener */
            mMediaPlayer01.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

    @Override
    /* 覆盖文件播出完毕事件 */
    public void onCompletion(MediaPlayer mp) {
    try{
    /*
     * 解除资源与MediaPlayer的赋值关系 让资源可以为其它程序利用
     */
    mMediaPlayer01.release();
    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) {
    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() {
    try{
    /* 再主程序暂停时解除资源与MediaPlayer的赋值关系 */
    mMediaPlayer01.release();
    }catch(Exception e){
    mTextView01.setText(e.toString());
    e.printStackTrace();
    }
    super.onPause();
    }
            
    }

    main.xml

    <?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"
        />
        <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 
            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 
            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"
         />
        "
    </RelativeLayout>

    androidmanifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.audio"
        android:versionCode="1"
        android:versionName="1.0" >


        <uses-sdk android:minSdkVersion="14" />


        <application
            android:icon="@drawable/icon"
            android:label="@string/app_name" >
            <activity
                android:name=".MusicActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />


                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="7" />


    </manifest>

    values目录下面:

    color.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>


       <drawable name="black">#000</drawable>
       <drawable name="white">#FFFFFFFF</drawable>


    </resources>

    strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>


        <string name="hello">mp3播放器</string>
        <string name="app_name">mp3播放器</string>
        <string name="str_start">正在播放音乐</string>
        <string name="str_close">停止播放音乐</string>
        <string name="str_pause">暂停播放音乐</string>
        <string name="str_OnCompletionListener">播放完毕</string>
        <string name="str_OnErrorListener">出错</string>


    </resources>

  • 相关阅读:
    算法--有序矩阵查找指定数
    算法--三色排序(经典的荷兰国旗问题)
    算法--两个有序数组合并
    Latex 学习之旅
    Windows 下安装 tensorflow & keras & opencv 的避坑指南!
    platform 模块
    `__pycache__` 是什么
    Markdown 实现首行缩进
    LaTex 小技巧
    LaTeX算法排版 笔记
  • 原文地址:https://www.cnblogs.com/xingmeng/p/2397596.html
Copyright © 2020-2023  润新知