android手机客户端连接pc,获取pc用摄像头拍下来的照片,连续播放出来问题.docandroid手机客户端连接pc,获取pc用摄像头拍下来的照片,连续播放出来问题.doc
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import java.io.OutputStr...
android手机客户端连接pc,获取pc用摄像头拍下来的照片,连续播放出来问
.doc
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringBufferInputStream; import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener; import android.view.animation.AnimationUtils;
import android.widget.Button; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.TextView; import android.widget.ViewSwitcher;
public class MyImageSwicherUsage extends Activity implements Runnable, OnClickListener {
Looper lop=null;
protected static final int GUIUPDATEIDENTIFIER = 0x101;
public static boolean boole = true; Handler handler = new Handler();
Bitmap bmImg;
ImageView imView;
PrintWriter pw = null;
BufferedInputStream inStream=null; boolean isstart = true;
static Socket server=null;
static Message ms=null;
public static boolean isBool() {
return boole;
}
public static void setBool(boolean bool) { boole = bool;
}
public boolean isIsstart() {
return isstart;
}
public void setIsstart(boolean isstart) { this.isstart = isstart;
}
Button next, stop;
int id = 0;
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
initiaView();
}
private void initiaView() {
next = (Button) findViewById(R.id.nextButton); stop = (Button) findViewById(R.id.stopButton); next.setOnClickListener(this);
stop.setOnClickListener(this);
}
public void run() {
//id = fitNext(id);
//switcher.setImageResource(resource[id]); //handler.postDelayed(this, 2000); try{
server = connect();
if(isstart){
Log.i("TAG", "......success....."); if(pw==null){
pw = getOutputStream(server);
}
pw.println("Start_Capture_Jpg");// 1客户端发出Start_Capture_Jpg请求命令,在服务器端获取这个命令,然后服务器端启动服务,传给客户端数据图片
pw.flush();
byte[] imageData;// 图像数据
byte[] buf = null; // 包头信息
byte[] fuhao=null;
int count = 0;
BufferedInputStream inStream = getInputStream(server); while(isstart) {
buf = new byte[6];
fuhao=new byte[4];
String dataLengthstr = "";
int dataLength=0;
count = inStream.read(buf, 0, buf.length); inStream.read(fuhao,0,fuhao.length); if ((count == 6) && (buf != null)) { dataLengthstr = new String(buf);
Log.i("dataLengthstr",dataLengthstr); try{
dataLength = Integer.parseInt(dataLengthstr); }catch(Exception e){
}
// 先收4个字节,bytes2int函数解析出数据包长度
}
//Thread.sleep(1000);
imageData = new byte[dataLength-4];
count = inStream.read(imageData, 0, imageData.length); Log.i("imageDate", imageData.length+"-----"); returnBitMap(imageData);
imView = (ImageView) findViewById(R.id.imview);
Log.i("ImageView", imView+"-----");
imView.setImageBitmap(returnBitMap(imageData)); handler.post(new Runnable() {
@Override
public void run() {
imView.invalidate();
Log.i("imView.invalidate();",imView+"-----");
}
});
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("returnBitMap", returnBitMap(imageData)+"-----");
//ms=new Message();
//ms.what = MyImageSwicherUsage.GUIUPDATEIDENTIFIER;
//handler.sendMessage(handler.obtainMessage());
//this.thread();
//setContentView(imView);
//imView=null;
//imageData=null;
//handler.wait(20);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//if(pw!=null)
//pw.close();
}
// handler.postDelayed(this, 5000);
}
//画图
public Bitmap returnBitMap(byte[] b) { Bitmap bitmap = null;
try {
InputStream is = new ByteArrayInputStream(b);
bitmap = BitmapFactory.decodeStream(is); is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
//启动线程
public void start() {
handler.postDelayed(this, 2000); this.setIsstart(true);
// handler.postDelayed(this, 5000);
}
//结束
public void stop() { // setBool(false); this.setIsstart(false); try {
if(pw==null){
return;
}
pw.println("Close_Capture_Jpg");// 1客户端发出Start_Capture_Jpg请求命令,在服务器端获
取这个命令,然后服务器端启动服务,传给客户端数据图片 pw.flush();
isstart = false;
} catch (Exception e) { e.printStackTrace(); } finally {
try {
if(pw!=null){
pw.close();
}
server.close();
server=null;
} catch (Exception e) { e.printStackTrace(); }
}
}
/*
* public OnClickListener listener = new OnClickListener(){ k
* };//OnClickListener */
//点击按钮事件
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) { case R.id.nextButton: // id = fitNext(id); // switcher.setImageResource(resource[id]);
this.start();
break;
case R.id.stopButton:
{
stop();
Log.i("stop stop","stop..........."); }
break;
// switch
}// onClic
}
// socket 编程
public Socket connect() {// 连接socket
try {
if(server==null)
server = new Socket("192.168.0.48", 5000); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
return server;
}
private PrintWriter getOutputStream(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true); }
private BufferedInputStream getInputStream(Socket socket)
throws IOException {
InputStream socketIn = socket.getInputStream(); return new BufferedInputStream(socketIn); }
}
本文档为【android手机客户端连接pc,获取pc用摄像头拍下来的照片,连续播放出来问题.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。