Android 视频播放器 VideoView 的使用,播放本地视频 和 网络 视频
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="app.com.myapplication.LocalVideoActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp"> <VideoView android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> </RelativeLayout>
2、代码部分
package app.com.myapplication; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; public class LocalVideoActivity extends AppCompatActivity { private VideoView videoView ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_local_video); //本地的视频 需要在手机SD卡根目录添加一个 fl1234.mp4 视频 String videoUrl1 = Environment.getExternalStorageDirectory().getPath()+"/fl1234.mp4" ; //网络视频 String videoUrl2 = Utils.videoUrl ; Uri uri = Uri.parse( videoUrl2 ); videoView = (VideoView)this.findViewById(R.id.videoView ); //设置视频控制器 videoView.setMediaController(new MediaController(this)); //播放完成回调 videoView.setOnCompletionListener( new MyPlayerOnCompletionListener()); //设置视频路径 videoView.setVideoURI(uri); //开始播放视频 videoView.start(); } class MyPlayerOnCompletionListener implements MediaPlayer.OnCompletionListener { @Override public void onCompletion(MediaPlayer mp) { Toast.makeText( LocalVideoActivity.this, "播放完成了", Toast.LENGTH_SHORT).show(); } } }
package app.com.myapplication; /** * Created by ${zyj} on 2016/4/19. */ public class Utils { public static final String videoUrl = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" ; }
3、效果展示

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android http 的使用
1、okHttp https://github.com/square/okhttp 2、okhttp-utils https://github.com/hongyangAndroid/okhttp-utils 3、NoHttp https://github.com/yanzhenjie/NoHttp 4、okhttp-OkGo https://github.com/jeasonlzy/okhttp-OkGo 5、最原生的http package www.yiba.com.wifisdk.http; import android.os.Build; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpUR...
- 下一篇
Android ThreadUtil 线程公共类,判断是否在主线程/ 子线程执行 相关操作
前言:通常,我们写的公共的模块给别人用,但是这个模块又必须在特定的线程中执行。 比如,一个加载网络图片的的方法,需要在子线程中执行。 /** * 加载网络图片 */ private void loadImage() { try { //用延时3秒操作来模拟网络操作 Thread.sleep( 3000 ); } catch (InterruptedException e) { e.printStackTrace(); } } 但是其他的同事在使用的时候,可能一不小心就在主线程中执行了 loadImage() 方法。这样就势必造成了界面卡顿。 为了避免这种情况,我们需要一个线程判断的工具 ThreadUtil 来帮助我们处理。 当前线程是主线程,抛出异常,不去加载 当前线程是子线程,继续执行,完成加载 package com.app; import android.os.Looper; /** * Created by ${zyj} on 2016/6/7. */ public class ThreadUtil { /** * Throws an {@link java...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主