自己保留备份,增强记忆

 

这是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; @Override
public 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.com
loadurl(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);
}
};
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.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.3gp
loadurl(view, url, true);// 载入视频
} else {
loadurl(view, url, false);// 载入网页
}
// http://113.31.34.15:80/work/500/094/076/171/500.20120716165645.3gp return 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() {
@Override
public void onClick(View v) {
loadurl(wv,"http://m.hao123.com",false);
}
});
Button mMovie = (Button) findViewById(R.id.movie);
mMovie.setOnClickListener(new OnClickListener() {
@Override
public 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() {
@Override
public 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() {
@Override
public 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() {// 退出按钮
@Override
public void onClick(DialogInterface dialog, int i) {
// TODO Auto-generated method stub
VideoActivity.this.finish();// 关闭activity }
});
ad.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public 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();
} @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
// AppConnect.getInstance(this).finalize();
} }

 

播放器代码:

/**
*
* 播放器类
*/
public class VideoPlayerAcitity extends Activity { private Uri uri = null;
private VideoView mVideoView = null;
private LinearLayout mLinearLayout = null; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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() { @Override
public void onPrepared(MediaPlayer mp) {
if (mVideoView != null){
//开始播放
mVideoView.start();
mLinearLayout.setVisibility(View.GONE);
} }
});
if (mVideoView != null){
//显示控制栏
mVideoView.setMediaController(new MediaController(this));
} } }

Android短信管家视频播放器代码备份的更多相关文章

  1. Android短信备份及插入笔记

    实现备份短信到xml文件和像短信中插入一条数据 一.实现短信将备份到xml文件中 在布局文件中定义一个按钮,定义点击事件为copyClick MainActivity.java: package co ...

  2. Android 短信的还原

    上篇文章讲到<Android 短信的备份>,本文主要实现Android 短信的还原,即是将一条 布局文件: <RelativeLayout xmlns:android="h ...

  3. Android短信发送器(2)

    在上一篇的<Android短信发送器>当中.发送功能并不完好.当发送内容超过限定字数时,短信就会发送失败,此时就须要推断内容是否超过限制,假设不超过限制.就直接发送,反之.则对其进行处理再 ...

  4. Android短信监听实现,及Android4.4之后短信机制变更

    前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去    按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...

  5. 【mob】Android短信验证+源码

    在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...

  6. 一枚Android "短信小偷" 病毒的分析

    一.样本简介 样本来自于吾爱破解论坛链接地址为http://www.52pojie.cn/thread-410238-1-1.html,样本不是很复杂有空就分析了一下.Android病毒样本还是很有意 ...

  7. Android 短信验证码控件

    Android 短信验证码控件,便于项目中使用统一样式,统一提示改动.个人觉得挺好用的 <span style="font-size:18px;">public cla ...

  8. Android 短信的备份

    接着上文<Android 内容提供者的实现>,继续实战 打开File Exploer,找到mmssms.db数据库,导出 打开mmssms.db 新建项目,布局如下: <Relati ...

  9. [android] 短信发送器

    /*****************2016年4月23日 更新********************************/ 知乎:什么是 7 位元的字符? 英文字符难道不是 8 bit 是一个字 ...

随机推荐

  1. 一次问题追查----短字符串签名算法引发的bug

    近期开发代码, 出现了一些诡异现象.追查原因是公司使用的签名函数出现的问题. 问题: 代码使用的签名库函数, 对于<=4字节的字符串, 签名就是本身. #include<stdio.h&g ...

  2. C#高级编程六十六天----表达式树总结【转】

    https://blog.csdn.net/shanyongxu/article/details/47257139 表达式树总结 基础 表达式树提供了一个将可执行代码转换成数据的方法.如果你要在执行代 ...

  3. w​i​n​d​o​w​s​ ​s​e​r​v​e​r​ ​2​0​0​8​ ​r​2​ ​启​用​索​引(转)

    08r2的“windows search”服务默认是不安装的,要想启用索引执行下列步骤:        1.打开“服务器管理”——选中“角色”——右边选中“添加角色”——勾选“文件服务”.    2. ...

  4. IOS 沙盒与清除缓存

    SandBox,沙盒机制,是一种安全体系.我们所开发的每一个应用程序在设备上会有一个对应的沙盒文件夹,当前的程序只能在自己的沙盒文件夹中读取文件,不能访问其他应用程序的沙盒.在项目中添加的所有非代码的 ...

  5. 战斗bug技巧全攻略

    程序员不是有一幅这样的对联吗 上联:一个项目两部电脑三餐盒饭只为四千工资搞得五脏俱损六神无主仍然七点起床八点开会处理九个漏洞十分辛苦: 下联:十年编码九年加班八面无光忙的七窍生烟到头六亲不认五体投地依 ...

  6. 理解TensorFlow的Queue

    https://www.jianshu.com/p/d063804fb272 这篇文章来说说TensorFlow里与Queue有关的概念和用法. 其实概念只有三个: Queue是TF队列和缓存机制的实 ...

  7. Linq-批量删除方法

    linq中批量删除用DeleteAllOnSubmit,里面的参数是数据集 传入某要删除的ID列表,使用对象的Contains方法与数据库中值比较,相同就删除. //批量删除 public void ...

  8. Android 分析 Android 应用结构

    本文说明 Android 项目组成,虽然简单,但决不能忽视. 当你从简单 Hello World 程序,到会实现一些常见功能,比如,下拉(上拉)刷新最新(加载更多),消息处理(UI 通知更新),Vie ...

  9. Firebug Console Panel 控制台详解【转载+整理】

    本文内容 信息显示 信息显示的占位符 console.group 和 console.groupEnd 分组显示 console.dir console.dirxml console.assert c ...

  10. js undefined易错分析

    undefined 以下是错误写法: data = undefined; alert(undefined==false);//这样判断会输出false; if(data!=undefined || d ...