Android的MediaPlayer多媒体播放器.doc_第1页
Android的MediaPlayer多媒体播放器.doc_第2页
Android的MediaPlayer多媒体播放器.doc_第3页
Android的MediaPlayer多媒体播放器.doc_第4页
Android的MediaPlayer多媒体播放器.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android 的 MediaPlayer 多媒体播放器MediaPlayer 可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用 MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView。 SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库。 标签: MediaPlayer SurfaceView Android SDK 代码片段(3)图片 程序截图代码 main.xmlview source print?01 02 06 08 10 12 14 15 1718 20 22 25 27 28代码 TestMedia.javaview source print?001package com.testMedia; 002003import java.io.IOException; 004import java.util.Timer; 005import java.util.TimerTask; 006import android.app.Activity; 007import android.media.AudioManager; 008import android.media.MediaPlayer; 009import android.os.Bundle; 010import android.view.SurfaceHolder; 011import android.view.SurfaceView; 012import android.view.View; 013import android.widget.Button; 014import android.widget.SeekBar; 015import android.widget.Toast; 016017018public class TestMedia extends Activity 019/* Called when the activity is first created. */020021private SeekBar skb_audio=null; 022private Button btn_start_audio = null; 023private Button btn_stop_audio = null; 024025private SeekBar skb_video=null; 026private Button btn_start_video = null; 027private Button btn_stop_video = null; 028private SurfaceView surfaceView; 029private SurfaceHolder surfaceHolder; 030031private MediaPlayer m = null; 032private Timer mTimer; 033private TimerTask mTimerTask; 034035private boolean isChanging=false;/互斥变量,防止定时器与SeekBar拖动时进度冲突 036Override037public void onCreate(Bundle savedInstanceState) 038super.onCreate(savedInstanceState); 039setContentView(R.layout.main); 040041/-Media控件设置-/ 042m=new MediaPlayer(); 043044/播放结束之后弹出提示 045m.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 046Override047public void onCompletion(MediaPlayer arg0) 048Toast.makeText(testMedia.this, 结束, 1000).show(); 049m.release(); 050 051); 052053/-定时器记录播放进度-/ 054mTimer = new Timer(); 055mTimerTask = new TimerTask() 056Override057public void run() 058if(isChanging=true) 059return; 060061if(m.getVideoHeight()=0) 062skb_audio.setProgress(m.getCurrentPosition(); 063else064skb_video.setProgress(m.getCurrentPosition(); 065 066; 067068mTimer.schedule(mTimerTask, 0, 10); 069070btn_start_audio = (Button) this.findViewById(R.id.Button01); 071btn_stop_audio = (Button) this.findViewById(R.id.Button02); 072btn_start_audio.setOnClickListener(new ClickEvent(); 073btn_stop_audio.setOnClickListener(new ClickEvent(); 074skb_audio=(SeekBar)this.findViewById(R.id.SeekBar01); 075skb_audio.setOnSeekBarChangeListener(new SeekBarChangeEvent(); 076077btn_start_video = (Button) this.findViewById(R.id.Button03); 078btn_stop_video = (Button) this.findViewById(R.id.Button04); 079btn_start_video.setOnClickListener(new ClickEvent(); 080btn_stop_video.setOnClickListener(new ClickEvent(); 081skb_video=(SeekBar)this.findViewById(R.id.SeekBar02); 082skb_video.setOnSeekBarChangeListener(new SeekBarChangeEvent(); 083surfaceView = (SurfaceView) findViewById(R.id.SurfaceView01); 084surfaceHolder = surfaceView.getHolder(); 085surfaceHolder.setFixedSize(100, 100); 086surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 087 088089/* 090* 按键事件处理 091*/092class ClickEvent implements View.OnClickListener 093Override094public void onClick(View v) 095if(v=btn_start_audio) 096 097m.reset();/恢复到未初始化的状态 098m=MediaPlayer.create(testMedia.this, R.raw.big);/读取音频 099skb_audio.setMax(m.getDuration();/设置SeekBar的长度 100try 101m.prepare(); /准备 102 catch (IllegalStateException e) 103/ TODO Auto-generated catch block 104e.printStackTrace(); 105 catch (IOException e) 106/ TODO Auto-generated catch block 107e.printStackTrace(); 108 109m.start(); /播放 110 111else if(v=btn_stop_audio | v=btn_stop_video) 112 113m.stop(); 114 115else if(v=btn_start_video) 116 117m.reset();/恢复到未初始化的状态 118m=MediaPlayer.create(testMedia.this, R.raw.test);/读取视频 119skb_video.setMax(m.getDuration();/设置SeekBar的长度 120m.setAudioStreamType(AudioManager.STREAM_MUSIC); 121m.setDisplay(surfaceHolder);/设置屏幕 122123try 124m.prepare(); 125126 catch (IllegalArgumentException e) 127/ TODO Auto-generated catch block 128e.printStackTrace(); 129 catch (IllegalStateException e) 130/ TODO Auto-generated catch block 131e.printStackTrace(); 132 catch (IOException e) 133/ TODO Auto-generated catch block 134e.printStackTrace(); 135 136m.start(); 137 138 139 140141/* 142* SeekBar进度改变事件 143*/144class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener 145146Override147public void onProgressChanged(SeekBar seekBar, int progress, 148boolean fromUser) 149/ TODO Auto-generated method stub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论