package com.FJICC.lzm;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.graphics.PixelFormat;
import android.media.MediaPlayer;
import android.net.Uri;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.MediaController;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
public class multimedia_player extends Activity {
private VideoView mVideoView01;
private String strVideoPath = "";//视频存放的路径
private String TAG = "HIPPO_VIDEOVIEW";
private boolean fullscreen = false;//全屏/窗口播放切换标志
/* 判断是否安装存储卡flagfalse */
private boolean bIfSDExist = false;
////返回键按钮,返回上一级Activity
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
Intent i =new Intent();
i.setClass(multimedia_player.this,multimedia.class);
startActivity(i);
finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.multimedia_player);
/* 判断存储卡是否存在*/
if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
{
bIfSDExist = true;
showDialog(1);
}
else
{
bIfSDExist = false;
mMakeTextToast
(
getResources().getText(R.string.str_err_nosd).toString(),
true
);
}
//获取VideoView对象
mVideoView01 = (VideoView)findViewById(R.id.myVideoView1);
//设置视频播放器,准备函数
mVideoView01.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
// TODO Auto-generated method stub
// mTextView01.setText(strVideoPath);
setTitle(strVideoPath.toString());
}
});
//设置视频播放完毕动作,可以在内部设置是否重复播放
mVideoView01.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer arg0)
{
// TODO Auto-generated method stub
mMakeTextToast
(
getResources().getText(R.string.str_complete).toString(),
true
);
}
});
}
//媒体播放动作函数
private void playVideo(String strPath)
{
if(strPath!="")
{
/*调用VideoURI方法,指定解析路径 */
mVideoView01.setVideoURI(Uri.parse(strPath));
/* 设置控制Bar,显示在Context中*/
mVideoView01.setMediaController(new MediaController(multimedia_player.this));
mVideoView01.requestFocus();
/*调用VideoView.start()自动播放*/
mVideoView01.start();
if(mVideoView01.isPlaying())
{
/* start()后,仍需要preparing() */
//mTextView01.setText("Now Playing:"+strPath);
setTitle(strVideoPath.toString());
Log.i(TAG, strPath);
}
}
}
/**媒体重新从头播放函数 */
private void resetVideo()
{
if(mVideoView01!=null)
{
mVideoView01.seekTo(0);
}
}
//提示消息Toast弹出消息函数
public void mMakeTextToast(String str, boolean isLong)
{
if(isLong==true)
{
Toast.makeText(multimedia_player.this, str, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(multimedia_player.this, str, Toast.LENGTH_SHORT).show();
}
}
//添加OptinMenu函数
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
//参数说明:menu.add((int groupId, int itemId, int order, charsequence title).setIcon(drawable ID)
// 1、组别,如果不分组的话就写Menu.NONE,
// 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
// 3、顺序,哪个菜单项在前面由这个参数的大小决定
// 4、文本,菜单项的显示文本
menu.add(0,2,0,"输入文件名");
menu.add(0,0,1,"返回");//
menu.add(0,1,2,"播放视频");
menu.add(0,3,3,"全屏/窗口切换");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId())//菜单序号
{
case 0://返回上级
{
////返回上一级Activity
Intent i =new Intent();
i.setClass(multimedia_player.this,multimedia.class);
startActivity(i);
finish();
}
break;
case 1://播放视频
{
playVideo(strVideoPath);
}
break;
case 2://输入播放的文件名称 在SD卡的/DIMC文件夹下;或者输入网络视频地址
{
showDialog(0);
}
break;
case 3://全屏/窗口切换
{
if(!fullscreen){//设置RelativeLayout的全屏模式
RelativeLayout.LayoutParams layoutParams=
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
mVideoView01.setLayoutParams(layoutParams);
fullscreen = true;//改变全屏/窗口的标记
}else{//设置RelativeLayout的窗口模式
RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(320,240);
lp.addRule(RelativeLayout.CENTER_IN_PARENT);
mVideoView01.setLayoutParams(lp);
fullscreen = false;//改变全屏/窗口的标记
}
}
break;
}
// return true;
return super.onOptionsItemSelected(item);
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
final View v = View.inflate(this, R.layout.multimedia_set, null);
final EditText videoPath = (EditText) v.findViewById(R.id.videoPath);
switch(id){
case 0:
{
Dialog dialog0 = new AlertDialog.Builder(this)
.setTitle("视频文件名称")
.setView(v).setMessage("请输入视频文件名称")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// 播放本地视频
//视频文件放置在SD卡下的DCIM目录下,这里设置为默认路径
//resetVideo();//重头播放,这个可以在播放完了后,执行,就可以实现循环播放了
strVideoPath= "file:///sdcard/DCIM/"+videoPath.getText().toString();//此时只需输入文件名称如:test.3gp;
//播放网络视频
//播放网络视频需要 输 入 视 频 网 络 地 址://在权限中需加入 INTERNET权限和WAKE_LOCK权限
//http://www.baudu.media.ooxx/test.mp4
//strVideoPath=pathTV.getText().toString();//此时输入的为 视频(3gp/mp4/H.264)网络地址
setTitle("Playing" + strVideoPath);
}
}).create();
return dialog0;
}
case 1:{
videoPath.setText(" ");
videoPath.setEnabled(false);
Dialog dialog1 = new AlertDialog.Builder(this)
.setTitle("播放器提示").setMessage("请点击Option键进行视频载入")
.setView(v)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
}).create();
return dialog1;
}
default:
return null;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.23" >
<VideoView
android:id="@+id/myVideoView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
相关推荐
Android 使用videoview播放Rtsp视频 demo http://blog.csdn.net/huanzhongying/article/details/53032909
Android之VideoView播放视频
VideoView全屏 左右控制声音亮度
这个Demo包括:播放网络视频卡顿监听、缓冲加载动画、实时下载速度、以及大小屏切换,略微实现了功能,还不够完善
android videoview视频播放
Androidstudio 环境下的源码。 编译不通过请修改 project的build.gradle 的 classpath 'com.android.tools.build:gradle:1.5.0' app的build.gradle的 compileSdkVersion 23 buildToolsVersion "23.0.3" default...
简单的android videoView视频播放,希望对大家会有帮助!
本Demo中MediaView继承自Framelayout,自定义了一个组合控件,实现了在线和本地视频的半屏全屏播放功能;以及进入后台暂停,回到前台接着播放;全屏隐藏系统状态栏和虚拟键,半屏时展示
监听视频缓冲和显示实时下载速度,以及视频大小屏切换,其中使用的MyVideoView,继承自VideoView,除了能随意指定大小,别的都一样,换成VideoView也是一样使用的
android studio VideoView本地视频播放
android视频播放,利用VideoView播放视频,编译环境为AndroidStudio,如果没有该编译器可以查找单独代码文件进行查看
Android播放视频,包含系统自带VideoView控件,和自定义VideoView控件,可全屏播放,案例包含了本地视频和网络视频。
android安卓videoView 横屏,全屏显示,videoView的原码中对videoView播放的视频做了一定的处理导致视频不能按你以为的形式呈现在videoView中。
利用android下的videoview播放rtsp链接的demo,地址为rtsp://217.146.95.166:554/live/chXXyqvga.3gp,其中XX为频道,可手动调换。
为了在Android应用中播放视频,Android提供了VideoView控件,它就是一个位于android.widget包下的控件,它的作用与ImageView类似,只是ImageView用于显示图片,而VideoView用于播放视频。 使用VideoView播放视频的...
我们使用videoview时 会发现,它自动保持原有比例,但是却无法达到全屏显示的效果。所以,这个时候查看了videoview的源码后就好办了,我们可以重写它。 具体的都在DEMO里,大家下载起来看看吧。
Android VideoView,快速使用VideoView。。
本文将讲解使用VideoView播放本地视频,使用起来相对简单,在其中添加了MediaController类来实现更多的视频控制功能。
VideoView is a native Android video player. android videoview 实战
本Demo实现了自定义样式的MediaController以及结合VideoView的半屏视频播放和全屏视频播放