android接收mjpg-streamer软件视频流
[代码]主要实现代码
package cn.dong.mjpeg; import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL; import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.Window;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView; public class surface extends Activity implements Runnable{
private SurfaceHolder holder;
private Thread mythread;
private Canvas canvas;
URL videoUrl;
private String url;
private int w;
private int h;
HttpURLConnection conn;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.surface); url = getIntent().getExtras().getString("CameraIp"); w = getWindowManager().getDefaultDisplay().getWidth();
h = getWindowManager().getDefaultDisplay().getHeight(); SurfaceView surface = (SurfaceView)findViewById(R.id.surface); surface.setKeepScreenOn(true);// 保持屏幕常亮
mythread = new Thread(this);
holder = surface.getHolder();
holder.addCallback(new Callback() { @Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub } @Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mythread.start();
} @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub }
}); }
private void draw() {
// TODO Auto-generated method stub
try {
InputStream inputstream = null;
//创建一个URL对象
// url = "http://192.168.8.1:8083/?action=snapshot";
videoUrl=new URL(url);
//利用HttpURLConnection对象从网络中获取网页数据
conn = (HttpURLConnection)videoUrl.openConnection();
//设置输入流
conn.setDoInput(true);
//连接
conn.connect();
//得到网络返回的输入流
inputstream = conn.getInputStream();
//创建出一个bitmap
bmp = BitmapFactory.decodeStream(inputstream);
canvas = holder.lockCanvas();
canvas.drawColor(Color.WHITE);
RectF rectf = new RectF(0, 0, w, h);
canvas.drawBitmap(bmp, null, rectf, null);
holder.unlockCanvasAndPost(canvas);
//关闭HttpURLConnection连接
conn.disconnect();
} catch (Exception ex) {
} finally {
}
} @Override
public void run() {
// TODO Auto-generated method stub
while(true){
draw();
}
} }
android接收mjpg-streamer软件视频流的更多相关文章
- 如何将Android Studio与华为软件开发云代码仓库无缝对接(二)
上篇文章:如何将Android Studio与华为软件开发云代码仓库无缝对接(一) 上一章讲了,如何用Android Studio以软件开发云代码仓库为基础,新建一个项目.接下来,这一章继续讲建好项目 ...
- 基于Android的闹钟的软件
一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...
- 项目:Android平台txt阅读软件
项目:Android平台txt阅读软件 项目组成员:20145107李长达.20145110屠轶成.20145120黄玄曦.20145122程智崟 Need: 从古至今,阅读都是人类生活中的一大部分, ...
- Android接收wifi路由器发送过来的一组字节数据
1.字节数组转换为字符串 byte[] byBuffer = new byte[20];... ...String strRead = new String(byBuffer);strRead = S ...
- android接收短信——framework处理流程(android 5.1)
modem层不懂,所以直接从RIL.java开始.以电信卡接收短信为例 modem通知RIL.java中的 RILReceiver处理接收信息 class RILReceiver implements ...
- Android接收短信
Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver ...
- Android接收系统广播
Android内置了很多系统级别的广播,我们可以在应用程序中通过监听这些广播来得到各种系统的状态信息.比如手机开机完成后会发出一条广播,电池的电量发生变化会发出一条广播,时间或时区发生改变也会发出一条 ...
- android: 接收和发送短信
8.2 接收和发送短信 收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这 项功能,而 Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个 A ...
- Android 接收短信
启动程序时启动一个service,在service里注册接收短信的广播,当手机收到短信里,打印出短信内容跟电话号码. package com.lmy.SmsListener; import andro ...
随机推荐
- Leetcode 87.扰乱字符串
扰乱字符串 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = "great" 的一种可能的表示形式. 在扰乱这个字符串 ...
- 【BZOJ1014】火星人prefix(splay,Hash)
题意: . 思路: ; ..,..]of longint; sum,size,fa,a,b,id,mi:..]of longint; n,m,i,x,y,s,k,j,cnt,root:longint; ...
- MyBatis3-缓存使用
一级缓存和二级缓存的区别: 1.一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为同一个SqlSession,当Session flush或close之后,该Sessi ...
- Install nginx-clojure on CentOS 7
Install nginx-clojure on CentOS 7 1. install open-jdk-7 sudo yum install java-1.7.0-openjdk-devel 2. ...
- [Vue] Setup custom keyCode
Vue provide some shortcut methods: @mousemove.stop is comparable to e.stopPropogation() @mousemove.p ...
- Fedora下克隆Octopress博客
我在自己的github上搭建了一个Octopress博客(http://songlee24.github.io/),用于不定期的写一些学习笔记和心得体会.但是有时候由于换了电脑或者重装了linux系统 ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- 数据分析在web交互设计中的作用 页面跳出率 100% 原因分析
通过分析访问的路径,发现,访问者访问其他页面,直接跳出 页面跳出率 100% 说明: 连作者都发现的导航路径不清晰 对导航进行改版:清晰.明了
- Chrome格式化JavaScript
在network或者source的tab中找到对应的JavaScript文件 重点在右下角的{}图标,点击一下,就会帮你自动格式化了 https://plus.google.com/+AddyOsma ...
- java dom4j 读写XML
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Config id ...