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();
}
}
}
浙公网安备 33010602011771号