易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
首页
/
操作系统
/
Linux
/
Android应用开发之视频播放器
资源:ImageButton所用图片4张Strings:
<string
name
=
"app_name"
>
MyVideoPlayer
</string>
<string
name
=
"video_text"
>
视频文件
</string>
<string
name
=
"notfoundsdcard_error"
>
找不到Sd卡
</string>
<string
name
=
"notfoundfile_error"
>
找不到视频文件
</string>
布局
<?xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<LinearLayout
xmlns:Android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:background
=
"#FFFFCC"
android:orientation
=
"vertical"
>
<TextView
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"@string/video_text"
/>
<EditText
android:id
=
"@+id/videoFileEt"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"cat.3gp"
/>
<TableLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:gravity
=
"center"
android:stretchColumns
=
"*"
>
<TableRow
>
<ImageButton
android:id
=
"@+id/playBtn"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/play"
/>
<ImageButton
android:id
=
"@+id/pauseBtn"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/pause"
/>
<ImageButton
android:id
=
"@+id/resetBtn"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/reset"
/>
<ImageButton
android:id
=
"@+id/stopBtn"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/stop"
/>
</TableRow>
</TableLayout>
<SurfaceView
android:id
=
"@+id/surfaceView"
android:layout_width
=
"fill_parent"
android:layout_height
=
"240dip"
/>
</LinearLayout>
Activity
package
cn.class3g.videoplayer;
import
java.io.File;
import
java.io.IOException;
import
android.app.Activity;
import
android.media.AudioManager;
import
android.media.MediaPlayer;
import
android.os.Bundle;
import
android.os.Environment;
import
android.util.Log;
import
android.view.SurfaceHolder;
import
android.view.SurfaceHolder.Callback;
import
android.view.SurfaceView;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.EditText;
import
android.widget.ImageButton;
import
android.widget.Toast;
public
class
VideoPlayerActivity
extends
Activity
implements
OnClickListener {
private
static
final
String TAG =
"VideoPlayerActivity"
;
private
ImageButton playBtn, pauseBtn, resetBtn, stopBtn;
private
EditText fileEt;
private
SurfaceView videoSv;
private
MediaPlayer mediaPlayer;
private
SurfaceHolder holder;
private
int
position =
0
;
File videoFile =
null
;
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
mediaPlayer =
new
MediaPlayer();
}
private
void
findViews() {
fileEt = (EditText)
this
.findViewById(R.id.videoFileEt);
playBtn = (ImageButton)
this
.findViewById(R.id.playBtn);
pauseBtn = (ImageButton)
this
.findViewById(R.id.pauseBtn);
resetBtn = (ImageButton)
this
.findViewById(R.id.resetBtn);
stopBtn = (ImageButton)
this
.findViewById(R.id.stopBtn);
playBtn.setOnClickListener(
this
);
pauseBtn.setOnClickListener(
this
);
resetBtn.setOnClickListener(
this
);
stopBtn.setOnClickListener(
this
);
videoSv = (SurfaceView)
this
.findViewById(R.id.surfaceView);
holder = videoSv.getHolder();
holder.setFixedSize(
176
,
144
);
// 设置分辨率
/* 下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前 */
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//holder.addCallback(new SurfaceCallback());
}
public
void
onClick(View v) {
if
(Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) {
String fileName = fileEt.getText().toString().trim();
videoFile =
new
File(
Environment.getExternalStorageDirectory(), fileName);
if
(videoFile.exists()) {
try
{
switch
(v.getId()) {
case
R.id.playBtn:
playVideo(videoFile);
break
;
case
R.id.pauseBtn:
// if(mediaPlayer.isPlaying()){
// mediaPlayer.pause();
// }else{
// mediaPlayer.start();
// }
if
(mediaPlayer.isPlaying()){
position = mediaPlayer.getCurrentPosition();
mediaPlayer.pause();
}
break
;
case
R.id.resetBtn:
if
(mediaPlayer.isPlaying()){
mediaPlayer.seekTo(
0
);
}
else
{
playVideo(videoFile);
}
break
;
case
R.id.stopBtn:
if
(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
break
;
}
}
catch
(Exception e) {
Log.e(TAG, e.toString());
}
}
else
{
showToast(R.string.notfoundfile_error);
}
}
else
{
showToast(R.string.notfoundsdcard_error);
}
}
private
void
playVideo(File videoFile)
throws
IOException {
mediaPlayer.reset();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(videoFile.getAbsolutePath());
mediaPlayer.setDisplay(holder);
mediaPlayer.prepare();
mediaPlayer.start();
}
private
void
showToast(
int
resId) {
Toast.makeText(
this
, resId,
1
).show();
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图