[代码]主要实现代码

  1. package cn.dong.mjpeg;
  2.  
  3. import java.io.InputStream;
  4. import java.net.HttpURLConnection;
  5. import java.net.URL;
  6.  
  7. import android.app.Activity;
  8. import android.content.pm.ActivityInfo;
  9. import android.graphics.Bitmap;
  10. import android.graphics.BitmapFactory;
  11. import android.graphics.Canvas;
  12. import android.graphics.Color;
  13. import android.graphics.RectF;
  14. import android.os.Bundle;
  15. import android.view.SurfaceHolder;
  16. import android.view.Window;
  17. import android.view.SurfaceHolder.Callback;
  18. import android.view.SurfaceView;
  19.  
  20. public class surface extends Activity implements Runnable{
  21. private SurfaceHolder holder;
  22. private Thread mythread;
  23. private Canvas canvas;
  24. URL videoUrl;
  25. private String url;
  26. private int w;
  27. private int h;
  28. HttpURLConnection conn;
  29. Bitmap bmp;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. requestWindowFeature(Window.FEATURE_NO_TITLE);
  33. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  34. // TODO Auto-generated method stub
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.surface);
  37.  
  38. url = getIntent().getExtras().getString("CameraIp");
  39.  
  40. w = getWindowManager().getDefaultDisplay().getWidth();
  41. h = getWindowManager().getDefaultDisplay().getHeight();
  42.  
  43. SurfaceView surface = (SurfaceView)findViewById(R.id.surface);
  44.  
  45. surface.setKeepScreenOn(true);// 保持屏幕常亮
  46. mythread = new Thread(this);
  47. holder = surface.getHolder();
  48. holder.addCallback(new Callback() {
  49.  
  50. @Override
  51. public void surfaceDestroyed(SurfaceHolder holder) {
  52. // TODO Auto-generated method stub
  53.  
  54. }
  55.  
  56. @Override
  57. public void surfaceCreated(SurfaceHolder holder) {
  58. // TODO Auto-generated method stub
  59. mythread.start();
  60. }
  61.  
  62. @Override
  63. public void surfaceChanged(SurfaceHolder holder, int format, int width,
  64. int height) {
  65. // TODO Auto-generated method stub
  66.  
  67. }
  68. });
  69.  
  70. }
  71. private void draw() {
  72. // TODO Auto-generated method stub
  73. try {
  74. InputStream inputstream = null;
  75. //创建一个URL对象
  76. // url = "http://192.168.8.1:8083/?action=snapshot";
  77. videoUrl=new URL(url);
  78. //利用HttpURLConnection对象从网络中获取网页数据
  79. conn = (HttpURLConnection)videoUrl.openConnection();
  80. //设置输入流
  81. conn.setDoInput(true);
  82. //连接
  83. conn.connect();
  84. //得到网络返回的输入流
  85. inputstream = conn.getInputStream();
  86. //创建出一个bitmap
  87. bmp = BitmapFactory.decodeStream(inputstream);
  88. canvas = holder.lockCanvas();
  89. canvas.drawColor(Color.WHITE);
  90. RectF rectf = new RectF(0, 0, w, h);
  91. canvas.drawBitmap(bmp, null, rectf, null);
  92. holder.unlockCanvasAndPost(canvas);
  93. //关闭HttpURLConnection连接
  94. conn.disconnect();
  95. } catch (Exception ex) {
  96. } finally {
  97. }
  98. }
  99.  
  100. @Override
  101. public void run() {
  102. // TODO Auto-generated method stub
  103. while(true){
  104. draw();
  105. }
  106. }
  107.  
  108. }

android接收mjpg-streamer软件视频流的更多相关文章

  1. 如何将Android Studio与华为软件开发云代码仓库无缝对接(二)

    上篇文章:如何将Android Studio与华为软件开发云代码仓库无缝对接(一) 上一章讲了,如何用Android Studio以软件开发云代码仓库为基础,新建一个项目.接下来,这一章继续讲建好项目 ...

  2. 基于Android的闹钟的软件

    一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...

  3. 项目:Android平台txt阅读软件

    项目:Android平台txt阅读软件 项目组成员:20145107李长达.20145110屠轶成.20145120黄玄曦.20145122程智崟 Need: 从古至今,阅读都是人类生活中的一大部分, ...

  4. Android接收wifi路由器发送过来的一组字节数据

    1.字节数组转换为字符串 byte[] byBuffer = new byte[20];... ...String strRead = new String(byBuffer);strRead = S ...

  5. android接收短信——framework处理流程(android 5.1)

    modem层不懂,所以直接从RIL.java开始.以电信卡接收短信为例 modem通知RIL.java中的 RILReceiver处理接收信息 class RILReceiver implements ...

  6. Android接收短信

    Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver ...

  7. Android接收系统广播

    Android内置了很多系统级别的广播,我们可以在应用程序中通过监听这些广播来得到各种系统的状态信息.比如手机开机完成后会发出一条广播,电池的电量发生变化会发出一条广播,时间或时区发生改变也会发出一条 ...

  8. android: 接收和发送短信

    8.2    接收和发送短信 收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这 项功能,而 Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个 A ...

  9. Android 接收短信

    启动程序时启动一个service,在service里注册接收短信的广播,当手机收到短信里,打印出短信内容跟电话号码. package com.lmy.SmsListener; import andro ...

随机推荐

  1. [NOIP2004]FBI树

    题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三 ...

  2. 《Spring in action》之Spring之旅

    Spring框架作用是简化java开发的复杂性.下面是spring in action 对spring初步介绍. 一.主要有4种关键策略: 1. 基于POJO的轻量级和最小侵入性编程 . 2. 通过依 ...

  3. @Autowired中无法注入RestTemplate的问题

    1.在启动类中添加 @Beanpublic RestTemplate restTemplate(){ return new RestTemplate();} 即可解决无法注入RestTemplate的 ...

  4. maven更改镜像路径为阿里镜像,以便下载速度快

    1.maven更改镜像路径为阿里镜像,以便下载速度快 2.maven每更新一次镜像地址,都会重新下载一次包 3. 怎么配maven链接阿里云的镜像详细步骤 修改maven根目录下的conf文件夹中的s ...

  5. 使用DBMS_REDEFINITION在线切换普通表到分区表

    随着数据库数据量的不断增长,有些表须要由普通的堆表转换为分区表的模式.有几种不同的方法来对此进行操作.诸如导出表数据,然后创建分区表再导入数据到分区表.使用EXCHANGE PARTITION方式来转 ...

  6. C++学习之动态数组类的封装

    动态数组(Dynamic Array)是指动态分配的.可以根据需求动态增长占用内存的数组.为了实现一个动态数组类的封装,我们需要考虑几个问题:new/delete的使用.内存分配策略.类的四大函数(构 ...

  7. 【转】Linux 查看CPU信息、机器型号等硬件信息

    测试机器的硬件信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c       8  Intel(R) Xeo ...

  8. Linux VM环境配置

    1. 直接打 ifconfig ,显示 bash: ifconfig: command not found 打入全路径,查看IP     /sbin/ifconfig 2. 主机ping不通虚拟机, ...

  9. 将分布式-队列的实现交给redis

    import requestsimport reimport timefrom redis import Redisimport threading REDIS_HOST, REDIS_PORT, P ...

  10. html5音频视频专题

    html5音频视频专题 总结 1. 操作的就是video和audio两个对象,这两个对象有他们的属性和方法,通过对象的id就可以操作他们 <audio src="../video/琴箫 ...