资源:点击打开链接
现市面上的蓝牙模块基本都相同,开发者只需要下载本文源程序,然后按如下注释处,更改发送指令的内容就可以了。
//发送按键响应
public void onSendButtonClicked(View v){
try{
OutputStream os = _socket.getOutputStream(); //蓝牙连接输出流
byte[] bos = {0X53,0x4E,0x06,0x00,0x04,0x05,0x00,0x00,0x0F}; //花括号内是要发送的指令,根据需要更改,这里是我随便输入的
os.write(bos);
}catch(IOException e){
}
}
下面是接收数据线程,接收数据转换为16进制数的字符串进行显示,在注释的代码部分,若要修改数据显示的编码方式,在此处。
//接收数据线程
Thread ReadThread=new Thread(){
public void run(){
int num = 0;
byte[] buffer = new byte[1024];
byte[] buffer_new = new byte[1024];
int i = 0;
int n = 0;
bRun = true;
//接收线程
while(true){
try{
while(is.available()==0){
while(bRun == false){}
}
while(true){
num = is.read(buffer); //读入数据
n=0;
for(i=0;i<num;i++){
if((buffer[i] == 0x0d)&&(buffer[i+1]==0x0a)){
buffer_new[n] = 0x0a;
i++;
}else{
buffer_new[n] = buffer[i];
}
n++;
}
String s = "";
for (int i = 0; i < bos.length; i++)
{
String hex = Integer.toHexString(bos[i] & 0xFF);
if (hex.length() == 1)
{
hex = '0' + hex;
}
s += hex.toUpperCase()+" ";
} // for循环和Integer.toHexString()方法实现byte数组转换成16进制字符串
smsg+=s; //写入接收缓存
if(is.available()==0)break; //短时间没有数据才跳出进行显示
}
//发送显示消息,进行显示刷新
handler.sendMessage(handler.obtainMessage());
}catch(IOException e){
}
}
}
}