Android初学者之MediaPlayer多媒体播放器

Android初学者之MediaPlayer多媒体播放器,第1张

概述MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要Surfac

MediaPlayer 可以播放音频和视频,另外也可以通过VIDeoVIEw来播放视频,虽然VIDeoVIEw比MediaPlayer简单易用,但定制性不如用 MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceVIEw。 SurfaceVIEw比普通的自定义view更有绘图上的优势,它支持完全的OpenGL ES库。

main.xml:

<?xml version="1.0" enCoding="utf-8"?><linearLayout androID:ID="@+ID/linearLayout01"    androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent"    xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:orIEntation="vertical">    <Seekbar androID:ID="@+ID/Seekbar01" androID:layout_height="wrap_content"        androID:layout_wIDth="fill_parent"></Seekbar>    <linearLayout androID:ID="@+ID/linearLayout02"        androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content">        <button androID:ID="@+ID/button01" androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content" androID:text="播放音频"></button>        <button androID:ID="@+ID/button02" androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content" androID:text="停止播放"></button>    </linearLayout>    <Seekbar androID:ID="@+ID/Seekbar02" androID:layout_height="wrap_content"        androID:layout_wIDth="fill_parent"></Seekbar>     <SurfaceVIEw androID:ID="@+ID/SurfaceVIEw01"        androID:layout_wIDth="fill_parent" androID:layout_height="250px"></SurfaceVIEw>    <linearLayout androID:ID="@+ID/linearLayout02"        androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content">        <button androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content" androID:ID="@+ID/button03"            androID:text="播放视频"></button>        <button androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content" androID:text="停止播放" androID:ID="@+ID/button04"></button>    </linearLayout></linearLayout>


TestMedia.java

package com.testMedia; import java.io.IOException;  import java.util.Timer;import java.util.TimerTask;import androID.app.Activity;  import androID.media.AudioManager;import androID.media.MediaPlayer;import androID.os.Bundle;  import androID.vIEw.SurfaceHolder;import androID.vIEw.SurfaceVIEw;import androID.vIEw.VIEw;  import androID.Widget.button;  import androID.Widget.Seekbar;import androID.Widget.Toast;    public class TestMedia extends Activity {    /** Called when the activity is first created. */     private Seekbar skb_audio=null;    private button btn_start_audio = null;      private button btn_stop_audio = null;     private Seekbar skb_vIDeo=null;    private button btn_start_vIDeo = null;      private button btn_stop_vIDeo = null;    private SurfaceVIEw surfaceVIEw;     private SurfaceHolder surfaceHolder;          private MediaPlayer m = null;      private Timer mTimer;    private TimerTask mTimerTask;         private boolean isChanging=false;//互斥变量,防止定时器与Seekbar拖动时进度冲突     @OverrIDe     public voID onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentVIEw(R.layout.main);                   //----------Media控件设置---------//        m=new MediaPlayer();                 //播放结束之后d出提示        m.setonCompletionListener(new MediaPlayer.OnCompletionListener(){            @OverrIDe            public voID onCompletion(MediaPlayer arg0) {                Toast.makeText(testMedia.this, "结束", 1000).show();                m.release();            }        });               //----------定时器记录播放进度---------//        mTimer = new Timer();        mTimerTask = new TimerTask() {            @OverrIDe            public voID run() {                 if(isChanging==true)                    return;                                 if(m.getVIDeoHeight()==0)                    skb_audio.setProgress(m.getCurrentposition());                else                    skb_vIDeo.setProgress(m.getCurrentposition());            }        };         mTimer.schedule(mTimerTask, 0, 10);                 btn_start_audio = (button) this.findVIEwByID(R.ID.button01);          btn_stop_audio = (button) this.findVIEwByID(R.ID.button02);          btn_start_audio.setonClickListener(new ClickEvent());        btn_stop_audio.setonClickListener(new ClickEvent());        skb_audio=(Seekbar)this.findVIEwByID(R.ID.Seekbar01);        skb_audio.setonSeekbarchangelistener(new SeekbarChangeEvent());                 btn_start_vIDeo = (button) this.findVIEwByID(R.ID.button03);          btn_stop_vIDeo = (button) this.findVIEwByID(R.ID.button04);          btn_start_vIDeo.setonClickListener(new ClickEvent());        btn_stop_vIDeo.setonClickListener(new ClickEvent());        skb_vIDeo=(Seekbar)this.findVIEwByID(R.ID.Seekbar02);        skb_vIDeo.setonSeekbarchangelistener(new SeekbarChangeEvent());        surfaceVIEw = (SurfaceVIEw) findVIEwByID(R.ID.SurfaceVIEw01);        surfaceHolder = surfaceVIEw.getHolder();        surfaceHolder.setFixedSize(100, 100);        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);    }          /**   * 按键事件处理   */  class ClickEvent implements VIEw.OnClickListener{    @OverrIDe    public voID onClick(VIEw v) {        if(v==btn_start_audio)        {            m.reset();//恢复到未初始化的状态            m=MediaPlayer.create(testMedia.this, R.raw.big);//读取音频            skb_audio.setMax(m.getDuration());//设置Seekbar的长度            try {                                   m.prepare();    //准备            } catch (IllegalStateException e) {                         // Todo auto-generated catch block                              e.printstacktrace();                            } catch (IOException e) {                           // Todo auto-generated catch block                              e.printstacktrace();                            }                   m.start();  //播放        }        else if(v==btn_stop_audio || v==btn_stop_vIDeo)        {            m.stop();        }        else if(v==btn_start_vIDeo)        {            m.reset();//恢复到未初始化的状态            m=MediaPlayer.create(testMedia.this, R.raw.test);//读取视频            skb_vIDeo.setMax(m.getDuration());//设置Seekbar的长度            m.setAudioStreamType(AudioManager.STREAM_MUSIC);            m.setdisplay(surfaceHolder);//设置屏幕                         try {                m.prepare();                             } catch (IllegalArgumentException e) {                // Todo auto-generated catch block                e.printstacktrace();            } catch (IllegalStateException e) {                // Todo auto-generated catch block                e.printstacktrace();            } catch (IOException e) {                // Todo auto-generated catch block                e.printstacktrace();            }            m.start();        }    }  }     /**   * Seekbar进度改变事件   */  class SeekbarChangeEvent implements Seekbar.OnSeekbarchangelistener{     @OverrIDe    public voID onProgressChanged(Seekbar seekbar, int progress,            boolean fromUser) {        // Todo auto-generated method stub             }     @OverrIDe    public voID onStartTrackingtouch(Seekbar seekbar) {        isChanging=true;    }     @OverrIDe    public voID onStopTrackingtouch(Seekbar seekbar) {        m.seekTo(seekbar.getProgress());        isChanging=false;       }         } }
总结

以上是内存溢出为你收集整理的Android初学者之MediaPlayer多媒体播放器全部内容,希望文章能够帮你解决Android初学者之MediaPlayer多媒体播放器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1148783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存