如题;
代码如下:videoplayer.xml<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/skb_video"
/>
<SurfaceView
android:id="@+id/vdoplayer"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_gravity="center"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/vdoplayer"
android:id="@+id/videocontrol"
>
<Button
android:id="@+id/cmd_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="250dp"
android:layout_marginLeft="200dp"
android:text="@string/play"
/>
<Button
android:id="@+id/cmd_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="250dp"
android:layout_toRightOf="@id/cmd_play"
android:text="@string/pause"
/>
</LinearLayout>
</FrameLayout>VideoPlayer.javapackage www.lemon.mine;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.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.SeekBar;public class VideoPlayer extends Activity implements Callback,OnClickListener{
/** Called when the activity is first created. */
private Button cmd_play =null;
private Button cmd_pause = null;
private Boolean isChanging = true;
private MediaPlayer mp =null;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private Timer mTimer;
private TimerTask mTimerTask;
private LinearLayout ll = null;
private SeekBar skb_video = null;
private static final String tag = "mine";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
setContentView(R.layout.videoplayer);//设置布局
skb_video = (SeekBar)findViewById(R.id.skb_video);//进度条
cmd_play = (Button)findViewById(R.id.cmd_play);//播放按钮
cmd_play.setOnClickListener(this);
cmd_pause = (Button)findViewById(R.id.cmd_pause);//暂停按钮
cmd_pause.setOnClickListener(this);
Bundle bunde = this.getIntent().getExtras();
String videoPath = bunde.getString("filePath");//得到视频路径
mTimer = new Timer();//计时器
mTimerTask = new TimerTask() {
@Override
public void run() {
if(isChanging==true)
return;
if(mp.getVideoHeight()==0)
skb_video.setProgress(mp.getCurrentPosition());
}
};
mTimer.schedule(mTimerTask, 0, 10);
surfaceView = (SurfaceView)findViewById(R.id.vdoplayer);//得到播放view
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setFixedSize(176, 144);//确定大小 surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mp = new MediaPlayer();//设置媒体播放器
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer arg0) {
mp.release();
}
});
playVideo(videoPath);//播放视频
skb_video.setMax(mp.getDuration());//设置SeekBar的长度
skb_video.setOnSeekBarChangeListener(new SeekBarChangeEvent());
}
private void playVideo(String path){//播放视频
try {
mp.setDataSource(path);
mp.setDisplay(surfaceHolder);
mp.prepare();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
e.printStackTrace();
}//读取视频
mp.start();
}
@Override
public void onClick(View v) {//点击按钮事件
if (v == cmd_play) {
mp.start();
} else if (v == cmd_pause) {
mp.pause();
}
}
protected void onDestroy() {
super.onDestroy();
if(mp.isPlaying()){
mp.stop();
}
mp.release();
}
class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener{//进度条事件
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isChanging=true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mp.seekTo(seekBar.getProgress());
isChanging=false;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
代码如下:videoplayer.xml<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/skb_video"
/>
<SurfaceView
android:id="@+id/vdoplayer"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_gravity="center"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/vdoplayer"
android:id="@+id/videocontrol"
>
<Button
android:id="@+id/cmd_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="250dp"
android:layout_marginLeft="200dp"
android:text="@string/play"
/>
<Button
android:id="@+id/cmd_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="250dp"
android:layout_toRightOf="@id/cmd_play"
android:text="@string/pause"
/>
</LinearLayout>
</FrameLayout>VideoPlayer.javapackage www.lemon.mine;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.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.SeekBar;public class VideoPlayer extends Activity implements Callback,OnClickListener{
/** Called when the activity is first created. */
private Button cmd_play =null;
private Button cmd_pause = null;
private Boolean isChanging = true;
private MediaPlayer mp =null;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private Timer mTimer;
private TimerTask mTimerTask;
private LinearLayout ll = null;
private SeekBar skb_video = null;
private static final String tag = "mine";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
setContentView(R.layout.videoplayer);//设置布局
skb_video = (SeekBar)findViewById(R.id.skb_video);//进度条
cmd_play = (Button)findViewById(R.id.cmd_play);//播放按钮
cmd_play.setOnClickListener(this);
cmd_pause = (Button)findViewById(R.id.cmd_pause);//暂停按钮
cmd_pause.setOnClickListener(this);
Bundle bunde = this.getIntent().getExtras();
String videoPath = bunde.getString("filePath");//得到视频路径
mTimer = new Timer();//计时器
mTimerTask = new TimerTask() {
@Override
public void run() {
if(isChanging==true)
return;
if(mp.getVideoHeight()==0)
skb_video.setProgress(mp.getCurrentPosition());
}
};
mTimer.schedule(mTimerTask, 0, 10);
surfaceView = (SurfaceView)findViewById(R.id.vdoplayer);//得到播放view
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setFixedSize(176, 144);//确定大小 surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mp = new MediaPlayer();//设置媒体播放器
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer arg0) {
mp.release();
}
});
playVideo(videoPath);//播放视频
skb_video.setMax(mp.getDuration());//设置SeekBar的长度
skb_video.setOnSeekBarChangeListener(new SeekBarChangeEvent());
}
private void playVideo(String path){//播放视频
try {
mp.setDataSource(path);
mp.setDisplay(surfaceHolder);
mp.prepare();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
e.printStackTrace();
}//读取视频
mp.start();
}
@Override
public void onClick(View v) {//点击按钮事件
if (v == cmd_play) {
mp.start();
} else if (v == cmd_pause) {
mp.pause();
}
}
protected void onDestroy() {
super.onDestroy();
if(mp.isPlaying()){
mp.stop();
}
mp.release();
}
class SeekBarChangeEvent implements SeekBar.OnSeekBarChangeListener{//进度条事件
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isChanging=true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mp.seekTo(seekBar.getProgress());
isChanging=false;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
解决方案 »
- 求教如何判断android页面加载完毕
- 如何让webview响应键盘的回车事件?急!
- 为什么ubuntu10.04中eclipse关联android源码后,打开源码文件没有换行?
- 刚买的三星GT-S5660android机器用来开发遇到的问题,求大虾给出解决方法
- android静态壁纸概率性设置失败
- 如何把Gallery+Switcher相册功能写成一个共通类??
- 关于线程更新UI
- 客户端与服务器json交互问题
- listview下拉刷新,下拉的时候很卡,一钝一钝的
- 移位 、按位或 操作 ???
- 阿里云手机应用开发,调用JNI接口,调用memcpy()函数出错。
- in loader dalvik.system.PathClassLoader[/data/app/com.sl.pad-1.apk]
不知道为什么一个用固定值一个用wrap_content。
android:layout_width="wrap_content"
android:layout_height="200dp"