Android Studio 实现播放本地/网络视频_android studio rtsp 播放-程序员宅基地

技术标签: android  Android  

目的

利用Android Studio 设计一个可以对本地视频或网络视频进行播放、暂停、停止的视频播放器。

工具及环境

使用Java语言编写代码, 在Android Studio平台上进行开发。

功能设计

先对界面视图和功能按钮进行设计,再实现加载视频进行播放,暂停,停止视频的功能。

VideoView

简介

简单介绍一下VideoView:

  • VideoView是使用MediaPlayer来对视频文件进行控制的。
  • VideoView只支持mp4、avi、3gp格式的视频,支持格式相对单一,VideoView支持的格式可以参考MediaPlayer。
  • VideoView可以播放网络视频,支持的网络视频的协议为:Http协议和RTSP协议两种。

常用方法

Android VideoView类为我们提供了十分方便的视频播放API,其主要方法如下:

  • setVideoPath:设置要播放的视频文件的位置
  • start:开始或继续播放视频
  • pause:暂停播放视频
  • resume:将视频从头开始播放
  • seekTo:从指定的位置开始播放视频
  • isPlaying:判断当前是否正在播放视频
  • getCurrentPosition:获取当前播放的位置
  • getDuration:获取载入的视频文件的时长
  • setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源
  • setVideoURI(Uri uri):以Uri的方式设置视频源,可以是网络Uri或本地Uri
  • setMediaController(MediaController controller):设置MediaController控制器
  • setOnCompletionListener(MediaPlayer.onCompletionListener l):监听播放完成的事件
  • setOnErrorListener(MediaPlayer.OnErrorListener l):监听播放发生错误时候的事件
  • setOnPreparedListener(MediaPlayer.OnPreparedListener l):监听视频装载完成的事件

更多功能详见: 官方文档.

代码解释

本地视频播放器

activity_main.xml

这里的布局文件我用的是LinearLayout布局进行嵌套操作。整体的LinearLayout布局包含TextView和VideoView,嵌套的LinearLayout布局包含Play按钮和Stop按钮。外层布局是垂直(android:orientation=“vertical”),内层布局是水平(android:orientation=“horizontal”)。

  • TextView:作为播放器的标题。设置TextView控件在其父控件中位于水平居中的位置并且控件外边距距离父布局顶端20dp。
<TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Video Player"
        android:textSize="30sp"
        android:layout_marginTop="20dp"/>
  • VideoView:视频播放器。设置VideoView控件在其父控件中位于居住的位置并且控件外边距距离父布局顶端40dp。
 <VideoView
        android:id="@+id/video"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_gravity="center"
        android:layout_marginTop="40dp"/>
  • Button:设置两个用来控制视频播放和停止的按钮。
<Button
        android:id="@+id/playbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Play"
        android:layout_gravity="center"
        android:textSize="25sp"   />
<Button
        android:id="@+id/stopbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Stop"
        android:layout_marginLeft="30sp"
        android:layout_gravity="center"
        android:textSize=
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fjnu_se/article/details/106725010

智能推荐

spring security oauth2之refresh token_spring security refresh token-程序员宅基地

文章浏览阅读9.6k次。oAuth2.0认证服务器生成的Access_token是有有效期限制的默认为12个小时,refresh_token默认为三十天。如果Access_token提示过期,可以根据refresh_token获取新的Access_token下面介绍如何生成refresh_token,并根据refresh_token获取新的Access_token:authorizedGrantTypesoa..._spring security refresh token

Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏! | 附代码-程序员宅基地

文章浏览阅读7.2k次,点赞19次,收藏70次。作者 | 李秋键责编 | Carol封图 | CSDN 下载自视觉中国近几年来Python语言得到了快速发展,而Pygame作为Python开发应用和游戏必备的库更是展现了Python的..._python吃豆人实验原理

炸弹人(枚举解决)-程序员宅基地

文章浏览阅读327次。题目描述:现有关卡:游戏者只有一枚炸弹,且炸弹可以杀死杀伤范围内所有敌人。请问炸弹放在哪个位置,可以消灭最多的敌人。题目的抽象化墙用#表示,敌人用G表示,空地用.表示上代码#include<bits/stdc++.h>using namespace std;int main(){ char a[20][21];//建立一个二维字符数组,表示x行y列 i...

PhpStorm中如何使用database工具_phpstorm database显示字段备注-程序员宅基地

文章浏览阅读529次。http://blog.csdn.net/knight_quan/article/details/519830291.简介:PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速导航以及即时错误检查等功能大大提高了编码效率。它以其独特的开发便利性,短时间内赢得了大量PHPer的青睐。MySQL是一个关系_phpstorm database显示字段备注

JavaScript DOM的增、删操作,并实时显示到表格中(JS代码含详细注释)_js新增记录,查找网站,表格显示-程序员宅基地

文章浏览阅读353次。JavaScript DOM的增、删操作,并实时显示到表格中一、说明二、实现代码三、一点备注一、说明给所有的a标签绑定事件判断点击的del属于哪一行数据删除当前行的tr节点获取添加表中的所有input数据添加tr和td节点向新建的td节点中添加数据(数据来源与4.)给新建的行中的a标签绑定事件二、实现代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> _js新增记录,查找网站,表格显示

苏州大学2008年复试上机真题_2008苏州大学837复试机试c语言-程序员宅基地

文章浏览阅读225次。题目描述:文件中按文本方式存放了一段其他文章,其中有若干长度小于15的英文单词,单词之间用空格分开,无其他符号。顺序读取这段文章的不同的单词(大小写敏感),同时在读取的过程中排除所有的单词THE以及变形,即这些单词不能出现在读取的结果中。将读取的所有单词的首字母转大写后,输出到文件中,每个单词一行。代码:..._2008苏州大学837复试机试c语言

随便推点

51按键外部中断控制流水灯_case 0xfe: return 0; case 0xfd: return 1; case 0xf-程序员宅基地

文章浏览阅读2.1w次,点赞28次,收藏218次。实验二 外部按键输入一、实验目的1、了解单片机检测口方法2、了解单片机外部中断原理3、了解按键输入原理二、实验内容1、完成按键扫描控制流水灯2、完成按键外部中断控制流水灯三、实验原理四、实验电路与程序1、软件实验一:按键扫描控制流水灯1)实验要求:读取四个按键的输入,检测到按下后控制灯流动一段时间,然后继续读取按键输入。2)实验目的:1. 掌握按键消抖方法;2. 掌握单片机端口检测方法3)实验说明:通过本实验,可以了解单片机读取IO口电平的方法,同时也可以了解单片机编程,调试方_case 0xfe: return 0; case 0xfd: return 1; case 0xfb: return 2; case 0xf7

Android画文字自动换行实现技巧-程序员宅基地

文章浏览阅读609次。package com.dcs.tools;import java.util.Vector;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.view.K..._android drawtext 换行

小程序中遇见文件过大的话就需要分包-程序员宅基地

文章浏览阅读331次。{ "pages": [ "pages/index/index", ], "subPackages": [   { "root": "A/", "pages": [ "pages/kaisuo/kaisuo" ] },    {..._分包引入组件

Android studio 打包apk release版本 安装闪退_andriod打包闪退-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏7次。使用gradle配置signconfigrelease 中minifyEnabled true这一行导致输出的apk安装后运行失败 资源未找到改成:minifyEnabled false 正常运行 特此记录_andriod打包闪退

react父组件调用子组件方法_razor父组件调用子组件方法更新没有反应-程序员宅基地

文章浏览阅读4.2k次。把子组件的参数回传到父组件中,并且赋值给子组件的一个实例方法.参考React中文网: http://www.css88.com/react/docs/refs-and-the-dom.htmlimport React, {Component} from 'react';export default class Parent extends Component { render() {..._razor父组件调用子组件方法更新没有反应

cad细等线体不显示_CAD字体显示问号或全部不显示,处理方法-程序员宅基地

文章浏览阅读3k次。引言:CAD一搬使用仿宋字体,用这字体的好处:1、笔画粗细均匀,有长、方、扁三体;2、“仿宋_GB2312”字体(即CAD仿宋0.7字体)是印刷字体的一种,适用于各类打印、印刷工作;[]注:电脑自带的“仿宋”字体不是“仿宋_GB2312”字体,要带GB2312字样后缀才是CAD常用的字体],这个要分清整;3、该字体具有安装方便、特点鲜明的优势。电脑没有“仿宋_GB2312”字体,就上百度搜一下,如..._cad细等线体显示不出来

推荐文章

热门文章

相关标签