2

Android携帯電話からコンピューターに文字列を送信したり、その逆を行ったりすることができます。しかし、自分のコンピューターから画像を送信して携帯電話に表示したいのですが。私の場合、コンピューターがサーバーで、携帯電話がクライアントです。

これはサーバー側の私のコードの一部です:

socket = serverSocket.accept();
dataOutputStream = new DataOutputStream(socket.getOutputStream());
captureScreen("C:\\Users\\HP\\Desktop\\capture.png");

File f = new File("C:\\Users\\HP\\Desktop\\capture.png");
byte [] buffer = new byte[(int)f.length()];
dataOutputStream.write(buffer,0,buffer.length);
dataOutputStream.flush(); 

captureScreen()これは、サーバーのスクリーンショットを正常に取得し、上記のパスに.PNG画像として保存する方法であることに注意してください。

さて、Android携帯電話であるクライアント側で、私がImageViewコントロールを持っている場合、コンピュータから送信された画像をとして読み取り、それを?InputStreamに表示する方法ImageView

さらに、画像を正常に書き込みましたdataOutputStreamか?誰か助けてくれたら嬉しいです!

4

2 に答える 2

3

setImageBitmap(Bitmap bm)ImageViewの を呼び出すことができます。

http://developer.android.com/reference/android/widget/ImageView.html

クライアントに画像データを取得する方法: 選択したソリューションによって異なりますが、技術的には、純粋な Java に使用するものと同じライブラリを使用できます。

を使用して、ストリームからandroid.graphics.BitmapFactoryを作成できます。Bitmap

http://developer.android.com/reference/android/graphics/BitmapFactory.html

Bitmap bitmap1 = BitmapFactory.decodeStream(inputStream);
Bitmap bitmap2 = BitmapFactory.decodeFile(filename);
于 2013-03-03T23:45:38.747 に答える
1

これは何ですか ?

    byte [] buffer = new byte[(int)f.length()];
    dataOutputStream.write(buffer,0,buffer.length);

バッファ バイト配列のサイズを宣言しましたが、空です! ファイルをバイトに変換してから、次のように OutputStream に転送する必要があります。

    byte[] buffer = System.IO.File.ReadAllBytes("C:\\Users\\HP\\Desktop\\capture.png");

(C#のコード)そして、あなたがしたように送信します:

     dataOutputStream.write(buffer,0,buffer.length);
     dataOutputStream.flush();

ファイル受信のためにこれを試してください:

    public void fileReceived(InputStream is)
throws FileNotFoundException, IOException {
Log.i("IMSERVICE", "FILERECCC-1");


if (is!= null) {
    FileOutputStream fos = null;
    BufferedOutputStream bos = null;
    try {
        fos = new FileOutputStream("/sdcard/chats/gas1.jpg/");
        bos = new BufferedOutputStream(fos);
        byte[] aByte = new byte[1024];
        int bytesRead;

        while ((bytesRead = is.read(aByte)) != -1) {
            bos.write(aByte, 0, bytesRead);
        }
        bos.flush();
        bos.close();
        Log.i("IMSERVICE", "FILERECCC-2");

    } catch (IOException ex) {
        // Do exception handling
    }
}
}
}

したがって、Android の SD カードに新しいファイルが作成されます。

于 2013-03-03T23:49:42.937 に答える