蓝牙服务端
有配对上的蓝牙之后
进行下一步
开启子线程服务器
new Thread(new Runnable() {
@Override
public void run() {
try {
BluetoothServerSocket server = adapter.listenUsingInsecureRfcommWithServiceRecord(adapter.getName(), uuid);
while (true){
final BluetoothSocket accept = server.accept();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Main4Activity.this, accept.getRemoteDevice().getName()+"连接我了", Toast.LENGTH_SHORT).show();
}
});
new serverThreads(Main4Activity.this,accept,Main5Activity.progressBar1).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
服务器代码
其中包含了 发送文字 和发送图片
发送文字 是用标记来分割字符串
分割好了之后来判断是否是图字
然后一边接受一边打印一边吐司
图片是接收到一个图片之后存入自己的
sd卡中去
public class serverThreads extends Thread{
Activity activity;
BluetoothSocket socket;
ProgressBar progressBar;
public serverThreads(Activity activity, BluetoothSocket socket, ProgressBar progressBar) {
this.activity = activity;
this.socket = socket;
this.progressBar =progressBar;
}
@Override
public void run() {
super.run();
try {
InputStream inputStream = socket.getInputStream();
byte arr[]=new byte[1024];
int len = inputStream.read(arr);
String s = new String(arr, 0, len);
String[] split = s.split(" ");
String type = split[0];
Log.d("qweqwe",type+"");
int max=Integer.parseInt(split[1]);
if("text".equals(type)){
final StringBuffer sb = new StringBuffer();
int count=0;
while ((len=inputStream.read(arr))!=-1){
count+=len;
sb.append(new String(arr,0,len));
if(count==max){
break;
}
}
Log.d("qweqwe","收到文字"+sb.toString());
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(activity, "收到文字"+sb.toString(), Toast.LENGTH_SHORT).show();
}
});
}else if("img".equals(type)){
FileOutputStream fileOutputStream = new FileOutputStream("/sdcard/aaaaaaaaaaaaaaaaaaaa.jpg");
int count1=0;
progressBar.setMax(max);
while ((len=inputStream.read(arr))!=-1) {
fileOutputStream.write(arr, 0, len);
count1 += len;
Thread.sleep(100);
progressBar.setProgress(count1);
if (count1 == max) {
break;
}
}
Log.d("qweqwe","收到图片");
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(activity, "收到图片", Toast.LENGTH_SHORT).show();
}
});
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
防止堵塞 写一个count 计数 然后在while中 计算 count+=len 计算如果
count==max之后 break 循环 防止堵塞