android接收mjpg-streamer软件视频流
16lz
2021-01-26
[代码]主要实现代码
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(); } } }
转载于:https://www.cnblogs.com/sirius-swu/p/6815840.html
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- setonClickListener()的解释
- 检测Android是否连接WIFI
- Android实例三:学习Service
- android中Button显示两行字体(spannable)
- EditText中inputType="number"还可输入字母的设置
- android 发送e-mail实例
- Android(安卓)蓝牙客户端实现
- Android输入法弹出流程