class PdfThread extends Thread{
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void run() {
try {
pdfClient = new Socket("192.168.0.69", 5500);
while(true){
try {
byte[] buf = new byte[1024];
while(pdfClient.getInputStream().read(buf)>0){
System.out.println(pdfClient.getInputStream());
Bitmap bitimg = BitmapFactory.decodeStream(pdfClient.getInputStream());
System.out.println(bitimg);
final Drawable drawable = new BitmapDrawable(getResources(), bitimg);
System.out.println("오고있니");
runOnUiThread(new Runnable() {
public void run() {
about_bt.setBackground(drawable);
}
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
위와 같이 코드를짰고, 서버에서 정상적으로 보내는것으로 보입니다.
10-24 17:33:04.350 29344-29373/com.ebookfrenzy.TeacherClient I/System.out﹕ java.net.PlainSocketImpl$PlainSocketInputStream@3ca2929f
SkImageDecoder::Factory returned null
이런식으로 프린트를 찍어봤는데 어떤 값이 들어있는걸로 확인되고.. 이것을 그대로 비트맵 팩토리 디코드스트림에 넣었는데... null값을 반환해서 그림이 안그려지는것 같습니다. 어떻게 해야 null값을 반환하지 않고 정상적으로 받아서 그릴수 있을까요....ㅠㅠ 참고로 오고있니 라는 것이 한 300번쯤 반복됩니다.( jpg파일이 300kb정도되서 300번 반복되는것일겁니다.) 그때마다 무언가 값이 들어오고, 비트맵 팩토리는 null값을 보냅니다. 또한, 서버는 그냥 .jpg파일을 FileInputStream으로 열고 그것을 그대로 버퍼에 읽어서 1024byte단위로 보냅니다.