0

デスクトップの画面画像をAndroidデバイスに転送するためにwifiを使用するアプリを開発しています。画像をバイト配列としてPCからAndroidデバイスに転送できますが、AndroidデバイスのImageViewコンポーネントで画像を表示できません。以下はサーバー(PC)とクライアント(Androidデバイス)からの2つのコード:

サーバー

DataOutputStream ds=new DataOutputStream(soc.getOutputStream());
Rectangle rect= new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot rb=new Robot();
img=rb.createScreenCapture(rect);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.write(img, "PNG",baos);
byte[] image=baos.toByteArray();
baos.flush();
baos.close();
System.out.println(image.length);
ds.writeInt(image.length);
ds.write(image);
ds.flush();
ds.close();

クライアント

DataInputStream bis=new DataInputStream(csoc.getInputStream());
int imgsize=bis.readInt();
byte[] img=new byte[imgsize];
int m;
while((m=bis.read())!=-1){
bis.read(img,0,img.length);
}
bis.close();
BitmapFactory.Options op=new BitmapFactory.Options();
op.inSampleSize=8;
Bitmap bmpim=BitmapFactory.decodeByteArray(img,0,img.length);
imv.setImageBitmap(BitmapFactory.decodeByteArray(img,0,img.length,op));//imv is ImageView object
4

1 に答える 1

0

入力ストリームが有効であることを考慮して、このように試すこともできます

DataInputStream bis=new DataInputStream(csoc.getInputStream());
    imageView=new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
    imageView.setAdjustViewBounds(true);
    imageView.setImageBitmap(BitmapFactory.decodeStream(bis));
// Add this imageView to existing parent layout
// parentLayout.addView(imageView);
于 2013-01-16T06:25:51.707 に答える