在PC端是用C#写的代码如下//抓取全屏幕
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
// img.Save("E:\\test.Jpegs");
img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
BT.stream = stream;
BT.stream.Flush();
通过BT.stream这个流发到手机端上,手机端接收代码如下
BufferedInputStream bis = new BufferedInputStream(input);
Bitmap bit = BitmapFactory.decodeStream(bis);
在C#端应该是传递了一个二进制的流,但在手机端我真的不知道这种读取方式是否正确。请教大家手机端盖用什么方法接收,或者什么思路。我现在具体不知道是哪里错了,大家都进来聊聊吧
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
// img.Save("E:\\test.Jpegs");
img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
BT.stream = stream;
BT.stream.Flush();
通过BT.stream这个流发到手机端上,手机端接收代码如下
BufferedInputStream bis = new BufferedInputStream(input);
Bitmap bit = BitmapFactory.decodeStream(bis);
在C#端应该是传递了一个二进制的流,但在手机端我真的不知道这种读取方式是否正确。请教大家手机端盖用什么方法接收,或者什么思路。我现在具体不知道是哪里错了,大家都进来聊聊吧
byte[] data ;
//图片处理
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
int len = 0;
byte[] datas = new byte[1024];
while((len = in.read(datas,0,1024)) != -1)
baos.write(datas, 0, len); Bitmap bmp = BitmapFactory.decodeByteArray(datas, 0, baos.toByteArray().length);
int len = 0;
byte[] datas = new byte[1024];
input = RemoteControlActivity.btSocket.getInputStream();
while((len = input.read(datas,0,1024)) != -1)
{
input.read(datas, 0, len);
Log.i("aaaaa", "bbbbb ");
}
Bitmap bitmap = BitmapFactory.decodeByteArray(datas, 0, datas.length);全文代码如下,请您帮忙看下:
package bnu.ep;import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;import javax.swing.ImageIcon;import android.app.Activity;
import android.bluetooth.BluetoothServerSocket;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.widget.Toast;public class BlueServer
{
public InputStream input ;
private RemoteControlActivity RCA;
private control ct;
private BluetoothServerSocket my_server;
listen2 lis;
private byte[] by;
void start()
{
RCA = new RemoteControlActivity() ;
ct = new control();
lis = new listen2();
// ByteArrayInputStream baos = new ByteArrayInputStream();
//listen(listen1()).start();
lis.start(); }
class listen2 extends Thread
{
public void run()
{
int len = 0;
byte[] datas = new byte[1024];
try {
Log.i("before", "bbbbb ");
input = RemoteControlActivity.btSocket.getInputStream();
Log.i("after", "bbbbb ");
int n = 0; while((len = input.read(datas,0,1024)) != -1)
{
input.read(datas, 0, len);
Log.i("aaaaa", "bbbbb ");
}
Bitmap bitmap = BitmapFactory.decodeByteArray(datas, 0, datas.length);
ct.bit = bitmap;
ct.setimagebitmp();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("error", "bbbbb ");
}
}
}
}
input = RemoteControlActivity.btSocket.getInputStream();代码执行没有?
input是否为空??
input = RemoteControlActivity.btSocket.getInputStream();
Log.i("after", "bbbbb ");
int n = 0; while((len = input.read(datas,0,1024)) != -1)
{
input.read(datas, 0, len);
Log.i("aaaaa", "bbbbb ");
}
这句中你的while判断条件已经从流中读取了,为什么循环体里面还是input.read(datas, 0, len);?
里面应该是把它写到字节数组中, baos.write(datas, 0, len);
这句话的意思是读取1024B的数据到datas数组中,如果到达文件结尾,那么返回-1,判断的同时就将数据写到数组中了,所以你的循环体里面不需要在写进datas了,而是将datas里面的数据写入输出流。
部分代码如下:
try {
URL url=new URL(”网络图片地址“);
URLConnection conn=url.openConnection();
conn.setConnectTimeout(120000);
in=conn.getInputStream();
File f = new File(”存到本地路径“);
FileOutputStream fos=new FileOutputStream(f);
byte[] buffer = new byte[1024];
int length;
while ((byteread = in.read(buffer)) != -1) {
bytesum += byteread;
fos.write(buffer, 0, byteread);
}
fos.flush();
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}