1、安卓视频播放器代码Java代码部分:package .iotek;import java.io.IOException;import java.util.Random;import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager.NameNotFoundException;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaP
2、layer.OnBufferingUpdateListener;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.os.Handler;import android.view.GestureDetector.OnGestureListener;import android.view.Gravity;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.
3、view.SurfaceView;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.ImageButton;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParam
4、s;import android.widget.PopupWindow;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;import android.widget.Toast;public class PlayVideo extends Activity implements OnGestureListener, OnClickListener,/ 监听 OnBufferingUpdateListener,/ 当网
5、络缓冲数据流变化的时候唤起的播放事件 OnCompletionListener,/ 当媒体资源在播放的时候到达终点时唤起的播放事件 MediaPlayer.OnPreparedListener, SurfaceHolder.Callback/ 回调函数 / 视频高和宽 int videoWidth; int videoHeight; / 按钮 ImageButton play; /定义快进按钮 ImageButton fastPlay; /定义快退按钮 ImageButton fastBack; / 控制栏 LinearLayout layout_control; LinearLayout l
6、ayout_prograss; LinearLayout videoBack; / 用来播放媒体 MediaPlayer mediaPlayer; / 显示媒体 SurfaceView surView; / 用来控制SurfaceView SurfaceHolder surHolder; / 路径 String path; / 是否是播放状态 boolean boTing = true; /获取播放的位置 int num; /点击屏幕次数 int count; /第一次点击 int firClick; /第二次点击 int secClick; /通过flag判断是否全屏 boolean fla
7、g; /播放进度条 SeekBar seekbar; /显示时间组建 TextView showTime; /播放文件的时间 int minute; int second; /进度条进度 int progress; /线程控制 MyThread mt; /声音控制 SeekBar sound; /声音进度 int soundId; /显示音量 TextView showSound; /接取拖动进度条 int videoLength; boolean f = true; /播放尺寸 /按钮隐藏时间 int hint = 5000; /用于接取点击ListView位置 int position;
8、/声称随机数 Random random; /通过buttonFlag判断按钮背景 boolean buttonFlag = true; /显示视频总时间 TextView allTime; TextView distant; PopupWindow popuWindow; View view; boolean popFlag ; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); th
9、is.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.video); / 产生对象 view = this.getLayoutInflater().inflate(R.layout.popuwindow, null); /得到布局的ID videoBack = (LinearLayout)view.findViewById(R.id.videoback); / 产生对象 pla
10、y = (ImageButton) view.findViewById(R.id.video_bu_bofang); layout_control = (LinearLayout)findViewById(R.id.layout_control); layout_prograss= (LinearLayout)findViewById(R.id.layout_prograss); seekbar = (SeekBar)view.findViewById(R.id.seekbar); showTime = (TextView)view.findViewById(R.id.showtime); f
11、astPlay = (ImageButton)view.findViewById(R.id.fastplay); fastBack = (ImageButton)view.findViewById(R.id.fastback); sound = (SeekBar)view.findViewById(R.id.sound); showSound = (TextView)view.findViewById(R.id.showsound); surView = (SurfaceView) findViewById(R.id.surfaceview_1); allTime = (TextView)vi
12、ew.findViewById(R.id.alltime); distant = (TextView)findViewById(R.id.distant); surHolder = surView.getHolder(); popuWindow = new PopupWindow(view, LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); / 设置回调函数 surHolder.addCallback(this); / 设置风格 surHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFE
13、RS); /bu_boFang.setVisibility(View.INVISIBLE); / 设置按键监听 play.setOnClickListener(this); /快进监听 fastPlay.setOnClickListener(this); /快退按钮监听 fastBack.setOnClickListener(this); /new随机数对象 random = new Random(); /接取到播放列表中点击的位置 position = VideoList.position; try /获取ShareActivity上下文 VideoList.context = create
14、PackageContext(.iotek, Context.CONTEXT_IGNORE_SECURITY); VideoList.share = VideoList.context.getSharedPreferences(setupadapter, VideoList.context.MODE_WORLD_READABLE); VideoList.editor = VideoList.share.edit(); catch (NameNotFoundException e) e.printStackTrace(); /对读取的信息进行判断 if (VideoList.share.getS
15、tring(hinttime, 5秒).equals(5秒) hint = 5000; if (VideoList.share.getString(hinttime, 5秒).equals(10秒) hint = 10000; if (VideoList.share.getString(hinttime, 5秒).equals(15秒) hint = 15000; /设置全屏播放 surView.setOnTouchListener(new OnTouchListener() Override public boolean onTouch(View v, MotionEvent event)
16、/ TODO Auto-generated method stub / handler.sendEmptyMessageAtTime(0x11, 3000); if(MotionEvent.ACTION_DOWN = event.getAction() count+; if(count = 1) new countClear().start(); firClick = (int) System.currentTimeMillis(); if (!popFlag) / / / popuWindow = new PopupWindow(view, LayoutParams.FILL_PARENT,
17、LayoutParams.WRAP_CONTENT); popuWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0); popFlag = true; handler.removeMessages(0x11); handler.sendEmptyMessageDelayed(0x11, hint); /设置layout显示 / if (!flag) /* layout_control.setVisibility(View.VISIBLE); layout_prograss.setVisibility(View.VISIBLE);*/ /点击surf
18、aceView延时3S发送信息 /* handler.removeMessages(0x11); handler.sendEmptyMessageDelayed(0x11, hint);*/ / else if (count = 2) secClick = (int) System.currentTimeMillis(); if(secClick - firClick 1000) flag = !flag; count = 0; if(flag) distant.setHeight(0); surView.setLayoutParams(new LinearLayout.LayoutParam
19、s(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); surHolder.setFixedSize(480, 760); if (!popFlag) / popuWindow = new PopupWindow(view, LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); popuWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0); popFlag = true; handler.removeMessages(0x11); hand
20、ler.sendEmptyMessageDelayed(0x11, hint); / 开始播放 / mePlayer.start(); else if (VideoList.share.getString(size, 4:3).equals(4:3) surView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 360); surHolder.setFixedSize(480, 360); distant.setHeight(250); if (!popFlag) / popuWindow =
21、new PopupWindow(view, LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); popuWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0); popFlag = true; handler.removeMessages(0x11); handler.sendEmptyMessageDelayed(0x11, hint); if (VideoList.share.getString(size, 4:3).equals(16:9) surView.setLayoutParams(n
22、ew LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 270); surHolder.setFixedSize(480, 270); distant.setHeight(250); if (!popFlag) / popuWindow = new PopupWindow(view, LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); popuWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0); popFlag = true; handl
23、er.removeMessages(0x11); handler.sendEmptyMessageDelayed(0x11, hint); count = 0; firClick = 0; secClick = 0; return true; ); /监听进度条进度 seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() Override public void onStopTrackingTouch(SeekBar seekBar) videoLength = seekBar.getProgress(); / int
24、q = mediaPlayer.getCurrentPosition(); mediaPlayer.seekTo(videoLength); /获取进度条当前的位置/ int dest = seekBar.getProgress(); /设置播放器当期的播放位置 / mediaPlayer.seekTo(num); Override public void onStartTrackingTouch(SeekBar seekBar) Override public void onProgressChanged(SeekBar seekBar, int progress, boolean from
25、User) /得到seekbar的进度 /* seekbar.setProgress(progress); videoLength = seekBar.getProgress();*/ ); sound.setOnSeekBarChangeListener(new OnSeekBarChangeListener() Override public void onStopTrackingTouch(SeekBar seekBar) / TODO Auto-generated method stub int i= seekBar.getProgress(); mediaPlayer.setVolu
26、me(i/100f,i/100f); Override public void onStartTrackingTouch(SeekBar seekBar) / TODO Auto-generated method stub Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) / TODO Auto-generated method stub int i= sound.getProgress(); showSound.setText(音量:+i); handler.remo
27、veMessages(0x11); handler.sendEmptyMessageDelayed(0x11, hint); ); private void playVideo() / 构建MediaPlayer对象 mediaPlayer = new MediaPlayer(); try / 设置媒体文件路径 mediaPlayer.setDataSource(VideoList.path); / 设置通过SurfaceView来显示画面 mediaPlayer.setDisplay(surHolder); / 准备 mediaPlayer.prepare(); distant.setHei
28、ght(200); / 设置事件监听 mediaPlayer.setOnBufferingUpdateListener(this); mediaPlayer.setOnCompletionListener(this); mediaPlayer.setOnPreparedListener(this); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); seekbar.setMax(mediaPlayer.getDuration(); /设置当前播放音量最大 soundId = sound.getProgress(); mediaPlayer.setVolume(soun
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1