android蓝牙pair,android - bluetooth pair and connect device - Stack Overflow

I want to pair the device and connect it ,but I have a problem ,I just can pair device but I am not able to connect them. I want to know how to solve this problem. I'm afraid, I have not explained my problem very well, I can not connect means, connect your phone to a Bluetooth headset and I can only pair, here is the code

if (btAdapt.isEnabled()) {

tbtnSwitch.setChecked(false);

} else {

tbtnSwitch.setChecked(true);

}

// ============================================================

IntentFilter intent = new IntentFilter();

intent.addAction(BluetoothDevice.ACTION_FOUND);

intent.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);

intent.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);

intent.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);

registerReceiver(searchDevices, intent);

}

private BroadcastReceiver searchDevices = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

Bundle b = intent.getExtras();

Object[] lstName = b.keySet().toArray();

for (int i = 0; i < lstName.length; i++) {

String keyName = lstName[i].toString();

Log.e(keyName, String.valueOf(b.get(keyName)));

}

BluetoothDevice device = null;

if (BluetoothDevice.ACTION_FOUND.equals(action)) {

device = intent

.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

if (device.getBondState() == BluetoothDevice.BOND_NONE) {

String str = "no pair|" + device.getName() + "|"

+ device.getAddress();

if (lstDevices.indexOf(str) == -1)

lstDevices.add(str);

adtDevices.notifyDataSetChanged();

}

}else if(BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)){

device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

switch (device.getBondState()) {

case BluetoothDevice.BOND_BONDING:

Log.d("BlueToothTestActivity", "it is pairing");

break;

case BluetoothDevice.BOND_BONDED:

Log.d("BlueToothTestActivity", "finish");

connect(device);

break;

case BluetoothDevice.BOND_NONE:

Log.d("BlueToothTestActivity", "cancel");

default:

break;

}

}

}

};

@Override

protected void onDestroy() {

this.unregisterReceiver(searchDevices);

super.onDestroy();

android.os.Process.killProcess(android.os.Process.myPid());

}

class ItemClickEvent implements AdapterView.OnItemClickListener {

public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3)

{

if(btAdapt.isDiscovering())btAdapt.cancelDiscovery();

String str = lstDevices.get(arg2);

String[] values = str.split("\\|");

String address = values[2];

Log.e("address", values[2]);

BluetoothDevice btDev = btAdapt.getRemoteDevice(address);

try {

Boolean returnValue = false;

if (btDev.getBondState() == BluetoothDevice.BOND_NONE) {

BluetoothDevice.createBond(BluetoothDevice remoteDevice);

Method createBondMethod = BluetoothDevice.class

.getMethod("createBond");

Log.d("BlueToothTestActivity", "start");

returnValue = (Boolean) createBondMethod.invoke(btDev);

}else if(btDev.getBondState() == BluetoothDevice.BOND_BONDED){

connect(btDev);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

private void connect(BluetoothDevice btDev) {

UUID uuid = UUID.fromString(SPP_UUID);

try {

btSocket = btDev.createInsecureRfcommSocketToServiceRecord(uuid);

Log.d("BlueToothTestActivity", "connecting...");

btSocket.connect();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

class ClickEvent implements View.OnClickListener {

public void onClick(View v) {

if (v == btnSearch)

{

if (btAdapt.getState() == BluetoothAdapter.STATE_OFF) {

Toast.makeText(BlueToothTestActivity.this, "please open", 1000)

.show();

return;

}

if (btAdapt.isDiscovering())

btAdapt.cancelDiscovery();

lstDevices.clear();

Object[] lstDevice = btAdapt.getBondedDevices().toArray();

for (int i = 0; i < lstDevice.length; i++) {

BluetoothDevice device = (BluetoothDevice) lstDevice[i];

String str = "pair|" + device.getName() + "|"

+ device.getAddress();

lstDevices.add(str);

adtDevices.notifyDataSetChanged();

}

setTitle("address:" + btAdapt.getAddress());

btAdapt.startDiscovery();

} else if (v == tbtnSwitch) {

if (tbtnSwitch.isChecked() == false)

btAdapt.enable();

else if (tbtnSwitch.isChecked() == true)

btAdapt.disable();

} else if (v == btnDis)

{

Intent discoverableIntent = new Intent(

BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);

discoverableIntent.putExtra(

BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);

startActivity(discoverableIntent);

} else if (v == btnExit) {

try {

if (btSocket != null)

btSocket.close();

} catch (IOException e) {

e.printStackTrace();

}

BlueToothTestActivity.this.finish();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值