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();
        }
    }
     
}

 

转载于:https://www.cnblogs.com/sirius-swu/p/6815840.html

你可能感兴趣的:(android接收mjpg-streamer软件视频流)