C# 또는 자바에서 이미지를 전송해 주면 안드로이드에서 받아서 실시간으로 뿌려주려고 합니다..(SurfaceView 를 통해 뿌려줍니다.)
처음 4바이트에는 Length가 들어가고 그 이후에 이미지 Data를 전송하게 됩니다.
안드로이드쪽 소스코드를 보면.. 아래와 같습니다.
FileDown_flag = true;
Thread th = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(SmartHomeVideoFileDown_flag){
try {
Thread.sleep(300);
if(index == 11){index = 0;}
String source = "img"+index+".jpeg"; //생성되는 이미지 이름
index++;
File local = new File("/sdcard/smt_cctv/" + source); //해당 경로에 파일 생성
fout = new FileOutputStream(local);
bout = new BufferedOutputStream(new DataOutputStream(fout));
bin = new DataInputStream(smtSc.getInputStream());
DataOutputStream returnOut = new DataOutputStream(smtSc.getOutputStream());
byte headerBuffer[] = new byte[4];
byte LengthBuffer[] = new byte[512];
//read Header(header 에는 BodySize가 옴.)
int size=bin.read(headerBuffer);
//returnOut.write(headerBuffer);
//int bodysize=Integer.valueOf(body);
for(int i=0;i<4;i++){
Log.i("headerBuffer confirm",""+headerBuffer[i]);
}
Log.i("allBuffer Size",""+size);
long bodysize = hexChange(headerBuffer); //16진수 bodysize를 10진수로 얻어옴
//if(bodysize > 10000){Log.i("full","full"); continue;}
//returnOut.write(headerBuffer);
//Log.i("headerBuffer","write OKOK");
Log.i("bodysize : ",""+bodysize);
long readsize=0;
//read body
while(readsize < bodysize && SmartHomeVideoFileDown_flag){ //bodySize보다 작을 때 까지 파일에 Write.
int rsize =0;
try {
rsize = bin.read(LengthBuffer);
bout.write(LengthBuffer,0,rsize);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
readsize += rsize;
Log.i("rsize : ",""+rsize);
Log.i("readsize : ",""+readsize);
}
bout.flush();