Bluetooth 发送少量消息后蓝牙控制器不工作
我有一个简单的蓝牙代码来激活继电器。 它来自一个老项目,过去工作得很好,但我过去只发送了一点,这次我必须发送字符串。 有了这个代码,我可以发送六个命令,然后设备就不再响应了。当我突然停止应用程序时,之前所有“未执行”的命令都由中继板执行。如果我改变缓冲区的大小,它似乎会对我可以发送的消息数量产生一些影响。 我用的是一部旧手机,一个带有安卓2和API 10的控制器 知道我应该去哪里调查吗? 谢谢Bluetooth 发送少量消息后蓝牙控制器不工作,bluetooth,Bluetooth,我有一个简单的蓝牙代码来激活继电器。 它来自一个老项目,过去工作得很好,但我过去只发送了一点,这次我必须发送字符串。 有了这个代码,我可以发送六个命令,然后设备就不再响应了。当我突然停止应用程序时,之前所有“未执行”的命令都由中继板执行。如果我改变缓冲区的大小,它似乎会对我可以发送的消息数量产生一些影响。 我用的是一部旧手机,一个带有安卓2和API 10的控制器 知道我应该去哪里调查吗? 谢谢 公共类菜单扩展活动{ 蓝牙适配器mBluetoothAdapter; 蓝牙插座; 蓝牙设备; 输出流m
公共类菜单扩展活动{
蓝牙适配器mBluetoothAdapter;
蓝牙插座;
蓝牙设备;
输出流mmOutputStream;
输入流mmInputStream;
字符串a;
可编辑b;
最终字节[]缓冲区=新字节[2048];
专用切换按钮T1;
私有静态最终字符串TAG=“MyActivity”;
公共无效写入(字节[]缓冲区){
试一试{
mmOutputStream.write(缓冲区,0,1024);
mmOutputStream.flush();
}捕获(IOE){}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
最终ToggleButton T1=(ToggleButton)findViewById(R.id.Button1);
T1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(T1.isChecked()){
//TODO自动生成的方法存根
缓冲区[0]=“r”;
缓冲区[1]=“e”;
缓冲区[2]=“l”;
缓冲区[3]=“a”;
缓冲区[4]=“y”;
缓冲区[5]='';
缓冲区[6]=“o”;
缓冲区[7]=“n”;
缓冲区[8]='';
缓冲区[9]=“0”;
缓冲区[10]='';
缓冲区[11]='\r';
缓冲区[12]='\n';
}
如果(!T1.isChecked()){
//TODO自动生成的方法存根
缓冲区[0]=“r”;
缓冲区[1]=“e”;
缓冲区[2]=“l”;
缓冲区[3]=“a”;
缓冲区[4]=“y”;
缓冲区[5]='';
缓冲区[6]=“o”;
缓冲区[7]=“f”;
缓冲区[8]=“f”;
缓冲区[9]='';
缓冲区[10]=“0”;
缓冲区[11]='\r';
缓冲区[12]='\n';
}
写入buf(缓冲区);
}
});
void findBT()引发IOException
{
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
如果(!mBluetoothAdapter.isEnabled())
{
意图启用Bluetooth=新意图(BluetoothAdapter.ACTION\u REQUEST\u ENABLE);
startActivityForResult(启用蓝牙,1);
}
设置pairedDevices=mBluetoothAdapter.getBondedDevices();
如果(pairedDevices.size()>0)
{
用于(蓝牙设备:pairedDevices)
{
if(device.getName().equals(a))
{
mmDevice=设备;
打破
}
}
}
UUID UUID=UUID.fromString(“000011101-0000-1000-8000-00805f9b34fb”);//标准//串行端口服务ID
mmSocket=mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream=mmSocket.getOutputStream();
mmInputStream=mmSocket.getInputStream();
公共布尔onCreateOptions菜单(菜单){
super.onCreateOptions菜单(菜单);
MenuInflater h=getMenuInflater();
h、 充气(右菜单、硬菜单、菜单);
返回true;
}
public class Menuuu extends Activity {
BluetoothAdapter mBluetoothAdapter;
BluetoothSocket mmSocket;
BluetoothDevice mmDevice;
OutputStream mmOutputStream;
InputStream mmInputStream;
String a;
Editable b;
final byte[] buffer = new byte[2048];
private ToggleButton T1;
private static final String TAG = "MyActivity";
public void write_buf(byte[] buffer) {
try {
mmOutputStream.write(buffer, 0, 1024 );
mmOutputStream.flush();
} catch (IOException e) { }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ToggleButton T1 = (ToggleButton) findViewById(R.id.Button1);
T1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (T1.isChecked()) {
// TODO Auto-generated method stub
buffer[0] = 'r';
buffer[1] = 'e';
buffer[2] = 'l';
buffer[3] = 'a';
buffer[4] = 'y';
buffer[5] = ' ';
buffer[6] = 'o';
buffer[7] = 'n';
buffer[8] = ' ';
buffer[9] = '0';
buffer[10] = ' ';
buffer[11] = '\r';
buffer[12] = '\n';
}
if (!T1.isChecked()) {
// TODO Auto-generated method stub
buffer[0] = 'r';
buffer[1] = 'e';
buffer[2] = 'l';
buffer[3] = 'a';
buffer[4] = 'y';
buffer[5] = ' ';
buffer[6] = 'o';
buffer[7] = 'f';
buffer[8] = 'f';
buffer[9] = ' ';
buffer[10] = '0';
buffer[11] = '\r';
buffer[12] = '\n';
}
write_buf(buffer);
}
});
void findBT() throws IOException
{
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(!mBluetoothAdapter.isEnabled())
{
Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, 1);
}
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
if(pairedDevices.size() > 0)
{
for(BluetoothDevice device : pairedDevices)
{
if(device.getName().equals(a))
{
mmDevice = device;
break;
}
}
}
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard //SerialPortService ID
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater h= getMenuInflater();
h.inflate(R.menu.hardmenu,menu);
return true;
}