// 获得BluetoothAdapter对象
private BluetoothAdapter adapter = null;
private BluetoothReceiver receiver = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
adapter = BluetoothAdapter.getDefaultAdapter();
//注册Receiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
receiver = new BluetoothReceiver();
registerReceiver(receiver, filter);
Button btnTest = (Button) findViewById(R.id.btnTest);
btnTest.setOnClickListener(new ButtonOnClickListener());
Button btnDiscovery = (Button) findViewById(R.id.btnDiscovery);
btnDiscovery.setOnClickListener(new ButtonOnClickListener());
Button btnScan = (Button) findViewById(R.id.btnScan);
btnScan.setOnClickListener(new ButtonOnClickListener());
}
private final class BluetoothReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//可以从收到的Intent对象中,将代表远程蓝牙适配器的对象取出
BluetoothDevice devices = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
}
}
final class ButtonOnClickListener implements OnClickListener {
@Override
public void onClick(final View v) {
switch (v.getId()) {
case R.id.btnTest:
// 判断adapter是否为空,null表明本机没有蓝牙设备
if (adapter != null) {
System.out.println("本机拥有蓝牙设备!!!");
// 是否启用蓝牙设备
if (!adapter.isEnabled()) {
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(intent);
}
// 得到所有已经配对的蓝牙适配器对象
Set<BluetoothDevice> devices = adapter.getBondedDevices();
if (devices.size() > 0) {
for (Iterator iterator = devices.iterator(); iterator.hasNext();) {
BluetoothDevice bluetoothDevice = (BluetoothDevice) iterator.next();
System.out.println(bluetoothDevice.getAddress());
}
}
} else {
System.out.println("本机没有蓝牙设备!!!");
}
break;
// 修改蓝牙设备可见性
case R.id.btnDiscovery:
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 500);
startActivity(intent);
break;
case R.id.btnScan:
//发现一个蓝牙设备后会发送一个广播
adapter.startDiscovery();
break;
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}