image view에 이미지를 띄우려고 하는데요 임베디드에서 전송하는 데이터는 이미지의 16byte 씩 문자열로 보내고, 문자열은 받은 스마트폰은 문자열을 나눠 정수로 변환 후 바이트로 바꾸어 buffer에 넣는 방식으로 하였구요 buffer의 사이즈는 8000000로 구성했습니다.
private void updataThread() {
String[] temp132 = data.split(" ");
if(temp132[0].equals("I")) {
for(int imct=1; imct<=((temp132.length)-1); imct++){
yyy = Integer.parseInt(temp132[imct]);
output2.append("yyy : " + yyy);
buffer[count10] = (byte) yyy;
++count10;
}
}
}
이 부분은 이미지를 출력하기 위해 버튼을 구성하였습니다.
그런데 이렇게 출력을 하면 SKImage::Decode Factory returned null 라는 오류 메세지가 발생하네요 ㅠㅠ
어디를 수정해야하죠? ㅜ
Button btn4 = (Button) findViewById(R.id.img);
btn4.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//byte[] buffer = stream.toByteArray();
Log.w("size : ", String.valueOf(buffer.length));
Bitmap bitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
image.setImageBitmap(bitmap);
}
});
-------------- 수정, 추가 내용
제가 설명이 제대로 안드린것 같아요 ..
일단 문자열에 I는 이미지를 분류하려고 추가하였구요(이 부분은 다른 통신도 하기 위해서 헤더(?)를 주었습니다.) 핸드폰에서 실질적으로 받는 것은 I를 제외한 데이터를 변환하도록 하였는데 보시면 아시겠지만 %d로 구문하여 file에서 불러온 것을 정수로 표현한 데이터를 문자열로 보내기 때문에 받은 문자열을 정수로 바꾸고 바이트로 변경하였어요 ㅜㅜ
"I %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n" 이렇게 전송하였습니다
아래 코드는 임베디드에서 전송하는 부분입니다
printf("file size [%d]\n", fsize);
fsize2 = htonl(fsize);
printf("file size [%d] \n", fsize2);
fclose(camera);
while(nsize != fsize){
fpsize = fread(buf, 1, 16, file);
nsize = nsize + fpsize;
sprintf(str1, "I %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13], buf[14], buf[15]);
fsize4 = strlen(str1);
send(connSock[0], str1, fsize4, 0);
}