当前位置: 首页 > 编程日记 > 正文

Android短信管家视频播放器代码备份

自己保留备份,增强记忆

这是video的类

public class VideoActivity extends Activity {/*** 解析网络页面*/private WebView wv;/*** 进度条类*/private ProgressDialog pd;/*** 异步处理消息*/private Handler handler;private static final int SHOW = 0;private static final int HIDE = 1;private static final int FLAG = 2;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
//        AppConnect.getInstance(this);    // 设置没有标题
        requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.video_main);Toast.makeText(this, "温馨提示:网页中所有的视频都可以直接播放哦!", 1).show();// 执行初始化函数
        init();//http://3g.youku.com//http://m.tudou.comloadurl(wv,"http://m.hao123.com",false);handler = new Handler() {public void handleMessage(Message msg) {// 定义一个Handler,用于处理下载线程与UI间通讯if (!Thread.currentThread().isInterrupted()) {switch (msg.what) {case SHOW:pd.show();// 显示进度对话框break;case HIDE:pd.hide();// 隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。break;case FLAG:flag = false;break;}}super.handleMessage(msg);}};}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();
//        AppConnect.getInstance(this).getPushAd();
    }public void init() {wv = (WebView) findViewById(R.id.webview);WebSettings webSettings = wv.getSettings();webSettings.setJavaScriptEnabled(true);// 设置支持JavaScript,非常重要webSettings.setAllowFileAccess(true);// wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上// 过滤调用第三方浏览器。并且解析视频网站播放地址,传给播放器wv.setWebViewClient(new WebViewClient() {public boolean shouldOverrideUrlLoading(final WebView view,final String url) {if (url.contains("3gp") || url.contains("mp4")) {// http://113.31.34.14:80/work/500/152/283/484/500.20120913082849.3gploadurl(view, url, true);// 载入视频} else {loadurl(view, url, false);// 载入网页
                }// http://113.31.34.15:80/work/500/094/076/171/500.20120716165645.3gpreturn true;}// 重写点击动作,用webview载入
});wv.setWebChromeClient(new WebChromeClient() {public void onProgressChanged(WebView view, int progress) {// 载入进度改变而触发if (progress == 100) {handler.sendEmptyMessage(HIDE);// 1,如果全部载入,隐藏进度对话框;2,显示加载进度
                }super.onProgressChanged(view, progress);}});Button mHome = (Button) findViewById(R.id.home);mHome.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {loadurl(wv,"http://m.hao123.com",false);}});Button mMovie = (Button) findViewById(R.id.movie);mMovie.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {loadurl(wv, "http://m.tudou.com/category.do?channelId=22&v=3&sid=a45fa79d9fc04306bcba762430e0eacc&cp=",false); }});Button mAnimation = (Button) findViewById(R.id.manimation);mAnimation.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {loadurl(wv, "http://m.youku.com/smartphone/channels?cid=97",false); 
//                AppConnect.getInstance(MainActivity.this).showOffers(MainActivity.this);
            }});Button mArts = (Button) findViewById(R.id.arts);mArts.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {loadurl(wv, "http://m.youku.com/smartphone/channels?cid=92",false); 
//                AppConnect.getInstance(MainActivity.this).showMore(MainActivity.this);
            }});pd = new ProgressDialog(VideoActivity.this);pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);pd.setMessage("数据载入中,请稍候!");}public boolean onKeyDown(int keyCode, KeyEvent event) {// 捕捉返回键if ((keyCode == KeyEvent.KEYCODE_BACK)) {ConfirmExit();// 按了返回键,但已经不能返回,则执行退出确认return true;}return super.onKeyDown(keyCode, event);}public void ConfirmExit() {// 退出确认AlertDialog.Builder ad = new AlertDialog.Builder(VideoActivity.this);ad.setTitle("退出");ad.setMessage("是否退出在线影音?");ad.setPositiveButton("是", new DialogInterface.OnClickListener() {// 退出按钮
                    @Overridepublic void onClick(DialogInterface dialog, int i) {// TODO Auto-generated method stubVideoActivity.this.finish();// 关闭activity
}});ad.setNegativeButton("否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int i) {// 不退出不用执行任何操作
            }});ad.show();// 显示对话框
    }private boolean flag = false;/*** 加载网络页面* @param view* @param url* @param isVideoUrl*/public void loadurl(final WebView view, final String url,final boolean isVideoUrl) {new Thread() {public void run() {if (handler != null)handler.sendEmptyMessage(SHOW);String uris = url;if (isVideoUrl) {//判断是否是播放地址,并启动播放的if (uris.contains("3gp") || uris.contains("mp4")) {if(!flag){flag = true;Uri uri = Uri.parse(uris);Log.i("yangguangfu", "uris="+uris);Intent intent = new Intent(VideoActivity.this,    VideoPlayerAcitity.class);intent.setDataAndType(uri, "video/*");
//                            intent.setType("video/*");
//                            intent.setData(uri);
//                            
//                            Intent intent = new Intent(Intent.ACTION_VIEW);
//                            intent.setDataAndType(uri,"video/*");
//                            intent.setData(uri);//                            
//                            //调器系统所有播放    
//                            Intent intent = new Intent(Intent.ACTION_VIEW);
//                            intent.setData(uri);
//                            intent.setType("video/*");//                            //调器系统所有播放    
//                            //android.intent.action.VIEW
//                            Intent intent = new Intent(Intent.ACTION_VIEW);
//                            intent.setDataAndType(uri, "video/*");
                            Log.i("yangguangfu", "startActivity");VideoActivity.this.startActivity(intent);handler.sendEmptyMessageDelayed(FLAG, 3000);}}} else {
//                    Intent intent = new Intent(Intent.ACTION_VIEW);
//                    intent.setDataAndType(uri,"video/*");
//                    intent.setData(Uri.parse(url));view.loadUrl(url);// 载入网页
                }}}.start();}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();
//        AppConnect.getInstance(this).finalize();
    }}

播放器代码:

/*** *  播放器类*/
public class VideoPlayerAcitity extends Activity {private Uri uri = null;private VideoView mVideoView = null;private LinearLayout mLinearLayout = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.video);//获取播放地址uri = getIntent().getData();//初始化视频显示控件mVideoView = (VideoView) findViewById(R.id.vv);mLinearLayout =(LinearLayout)findViewById(R.id.player_loading);if (uri != null) {if (mVideoView != null) {//加载播放地址
                mVideoView.setVideoURI(uri);}}if (mVideoView != null)mVideoView.setOnPreparedListener(new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {if (mVideoView != null){//开始播放
                        mVideoView.start();mLinearLayout.setVisibility(View.GONE);}}});if (mVideoView != null){//显示控制栏mVideoView.setMediaController(new MediaController(this));}}}

相关文章:

Python常用函数--文档字符串DocStrings

Python 有一个甚是优美的功能称作python文档字符串(Documentation Strings),在称呼它时通常会使用另一个短一些的名字docstrings。DocStrings 是一款你应当使用的重要工具,它能够帮助你更好地记录程序并让其更加易于理解。令人惊叹…

Go 分布式学习利器(17)-- Go并发编程之协程机制:Grountine 原理及使用

文章目录1. Thread VS Groutine2. Groutine 调度原理3. Groutine 示例代码关于Go的底层实现还需要后续持续研究,文中如有一些原理描述有误,欢迎指证。 1. Thread VS Groutine 这里主要介绍一下Go的并发协程相比于传统的线程 的不同点: 创建…

Java项目:美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm)

源码获取:博客首页 "资源" 里下载! 主要技术实现:spring、 springmvc、 springboot、mybatis 、session、 jquery 、 md5 、bootstarp.js tomcat、拦截器等。 具体主要功能模块如下: 1.用户模块管理:用户…

【leetcode】Roman to Integer

题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 解题思路: 首先我们要了解罗马数字怎么写的 个位数举例 I, 1 】II, 2】 III, 3】 IV, 4 】V, 5 】VI, 6】 VII, 7】 VIII,8 】…

Apache Traffic Server管理工具

Traffic Line是命令行程序,可以用来快速监视 Traffic Server 的性能和网络流量,也能配置 TS。Traffic Shell也是命令行工具,进入该 shell 后有自己一套语法,可代替 Traffic Line 完成监控、配置任务。通过 Traffic Line 和 Traffi…

npm使用记录

npm是一个 包管理工具。安装node之后就可以使用npm命令了,为了方便使用,通常我们还要装下 淘宝NPM镜像,之后就可以用cnpm命令了。 注意:以下提到的如-g --save等标签都可以放在 包名前面。 首先一个前端项目下载下来,需…

Go 分布式学习利器(18)-- Go并发编程之lock+WaitGroup实现线程安全

Go语言中通过Groutine 启动一个Go协程&#xff0c;不同协程之间是并发执行的&#xff0c;就像C/Java中线程之间线程安全是一个常见的问题。 如下Go 语言代码: func TestConcurrent(t *testing.T) {var counter int 0for i : 0;i < 5000; i {go func() { // 启动groutine 进…

Java项目:网上家具商城平台设计和实现(java+springboot+mysql+ssm)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 主要技术&#xff1a;springmvc springboot mybatis mysql jquery layui 等技术 具体功能模块&#xff1a; (1) 用户注册和登录登录功能&#xff1a; ①用户的注册功能 : 访问网站的人根据网站的提示注册…

Linux socket TIME_WAIT 优化

如发现系统存在大量TIME_WAIT状态的连接&#xff0c;通过调整内核参数解决&#xff0c;vim /etc/sysctl.conf编辑文件&#xff0c;加入以下内容&#xff1a;net.ipv4.tcp_syncookies 1net.ipv4.tcp_tw_reuse 1net.ipv4.tcp_tw_recycle 1net.ipv4.tcp_fin_timeout 30然后执行…

Android Handler的使用!!!

大家好我们这一节讲的是Android Handler的使用,在讲Handler之前&#xff0c;我们先提个小问题&#xff0c;就是如何让程序5秒钟更新一下Title.首先我们看一下习惯了Java编程的人&#xff0c;在不知道Handler的用法之前是怎么样写的程序,代码如下所示:view plaincopy to clipboa…

git之reset图解

https://blog.csdn.net/longintchar/article/details/81843048 1、三棵树。 此时如果我们运行 git status&#xff0c;会发现没有任何改动&#xff0c;因为现在三棵树完全相同。 修改文件 现在我们想要对文件进行修改然后提交它。我们将会经历同样的过程&#xff1b;首先在工作…

Go 分布式学习利器(19)-- Go并发编程 之 CSP(communicating sequential processes) 机制

文章目录前言CSP 特点CSP代码 演示1. 正常流程的代码2. CSP 未设置buffer 代码3. 设置指定大小的channel buffer总结前言 CSP 这个名词大家会比较陌生&#xff0c;但是说到future 熟悉C / JAVA 线程模型的伙伴可能就会很熟悉了&#xff0c; 通过future机制能够实现两个线程之间…

Java项目:学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 主要技术、spring、 springmvc、 springboot、 mybatis 、 jquery 、 layUI、md5 、bootstarp.js tomcat、、拦截器等项目 主要功能:登录、用户、菜单管理、角色管理、权限管理、立项申请、报名、结、经费…

update 改写 merge into

update语句改写成merge into有时会提高运行速度 看两个案例 1.根据业务将两个嵌套子查询改写成max&#xff0c;速度有3min提升到3s UPDATE OPER_792.LL_SCB_YDKB_20120730 A SET A.DCP (SELECT B.PROD_OFFER_NAME FROM OPER_792.YD_TC B WHERE A.SERV_ID B.SERV_ID AND B.TC_…

CCControlSwitch 、CCControlSlider、CCControlButton

/**bool hasMoved(); 这里获取的不是开关是否正在被用户拨动&#xff0c;而是开关最终的状态是由用户手动拨动开关进行的&#xff0c;*还是用户点击开关进行的状态更改*/CCControlSwitch* pSwitch CCControlSwitch::create(CCSprite::create("switch-mask.png"),CCS…

bzoj2961 共点圆 (CDQ分治, 凸包)

/* 可以发现可行的圆心相对于我们要查询的点是在一个半平面上&#xff0c; 然后我们要做的就是动态维护凸壳然后用这个半平面去切它 看看是否是在合法的那一面然后cdq分治就可以了代码基本是抄的&#xff0c;*/#include<cstdio> #include<algorithm> #include<c…

Rocksdb Iterator实现:从DBIter 到 TwoLevelIter 的漫长链路

文章目录1. 迭代器简单介绍2. 迭代器用户态相关接口3. 迭代器内部架构4. 迭代器的入口实现4.1 DBIter4.2 MergingIterator4.3 Memtable系列Iterator4.4 LevelIterator 和 TwoLevelIteratorps&#xff1a;本文的基础迭代器设计 以及 相关代码 是基于rocksdb 6.4.6版本进行描述的…

Java项目:OA办公自动化系统设计和实现(java+springboot+freemarker+mysql+maven+mybatis+jpa)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; java springbootOA办公自动化系统&#xff1a; 主要功能模块&#xff1a;系统、用户、角色、考勤、流程、公告、邮件、任务、日程、计划、文件、笔记、通讯录、讨论区等多个模块管理 使用Maven进行项目管理…

UIScrollView上面放一个UIScrollView或者UITableView拖动时候 View出现一闪一闪解决办法...

在项目中发现一个问题&#xff1a; 创建一个UIScrollView 上面放一个scrollView或者TableView&#xff0c;拖动scrollview或TableView 画面出现一闪一闪的情况。 解决办法设置一下UIScrollView的contentSize 如果你是上下滑动scrollView.contentSize CGSizeMake(0, self.view.…

理解koa-router 路由一般使用

阅读目录 一&#xff1a;理解koa-router一般的路由二&#xff1a;理解koa-router命名路由三&#xff1a;理解koa-router多个中间件使用四&#xff1a;理解koa-router嵌套路由五&#xff1a;分割路由文件回到顶部一&#xff1a;理解koa-router一般的路由 koa-router是koa的路由库…

Go 分布式学习利器(20)-- Go并发编程之多路选择和超时控制,channel的关闭和广播

Select 多路选择 基本使用语法如下&#xff1a; select { case ret : <-retCh1: //阻塞事件&#xff0c;等待channel1的消息t.Logf("result %s \n",ret) case ret : <-retCh2:t.Logf("result %s \n", rest) default :t.Error("return empty&q…

Java项目:网盘系统设计和实现(java+ssm+jpa)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 很多同学都有自己的网盘&#xff0c;方便存储一些java学习教程。该毕业设计实现了一个简易的网盘&#xff0c;包含文件上传和文件分享等功能。 后端技术采用了spring&#xff0c;spring mvc&#xff0c;JPA&…

快速学习的方法论

大多数人认为学习的快慢取决于学习者的天赋&#xff0c;实际上研究表明学习方法起着至关重要的作用。更深层次的知识加工&#xff0c;与时而反复的温故知新&#xff0c;在某些情况下会加倍你的学习效率。最近学习了如何快速学习的方法论&#xff0c;分享给大家。 是否能加速理解…

C#拉姆达(=)表达式

前言&#xff1a; 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(>)表达式 介绍&#xff1a; "Lambda表达式"是一个匿名函数&#xff0c;是一种高效的类似于函数式编程的表达式&#xff0c;Lambda简化了开发中需要编写…

Python爬虫入门教程 57-100 python爬虫高级技术之验证码篇3-滑动验证码识别技术

滑动验证码介绍 本篇博客涉及到的验证码为滑动验证码&#xff0c;不同于极验证&#xff0c;本验证码难度略低&#xff0c;需要的将滑块拖动到矩形区域右侧即可完成。 这类验证码不常见了&#xff0c;官方介绍地址为&#xff1a;https://promotion.aliyun.com/ntms/act/captchaI…

FlameScope 更高级全面的火焰图

FlameScope 更高级全面的火焰图 文章目录FlameScope 更高级全面的火焰图安装步骤安装问题fix使用方式网飞(Netflix)开发的火焰图工具能够更好得呈现出一段时间内的服务器on/off cpu 的热力图。安装步骤 $ git clone https://github.com/Netflix/flamescope $ cd flamescope $ …

sql 基础--mysql 5 (6)

12.子查询 子查询进行过滤 mysql> select msg from pw_luck where name wang5-> ; ------ | msg | ------ | 1001 | | 1000 | | 1000 | | 100 | | 100 | ------ 5 rows in set (0.03 sec)mysql> select uid from pw_luck where msg in (select msg from pw_luck w…

Java项目:就业管理系统设计和实现(java+springboot+ssm)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 就业管理系统: 该毕业设计采用了spring boot&#xff0c;spring&#xff0c;spring mvc&#xff0c;mybatis作为后端技术框架&#xff0c;这些组合稳定抗打&#xff0c;前端使用了layui&#xff0c;界面美观…

算法设计与分析之循环与递归

前言&#xff1a;循环与递归可以说是算法设计中最基本但却也是最重要的工具方法。循环和递归对于学习过高级程序设计语言的人来说都并不陌生&#xff0c;但还是有必要仔细的探究一下循环和递归之间的相似和区别。循环与递归最大的相似之处莫不是在于他们在算法设计中的工具作用…

面向对象与软件工程---团队作业1

1.队伍名称&#xff1a; 遥遥万里&#xff08;还有很长路要走的意思&#xff09; 2.队员信息&#xff1a; 陈雄&#xff08;组长&#xff09; 学号&#xff1a;1700509024 博客园链接&#xff1a;https://www.cnblogs.com/bearchan/ 廖鹏辉 学号&#xff1a;1700802007 博客园…