蓝牙(2)用BluetoothAdapter搜索蓝牙设备示例

时间:2023-03-09 00:29:20
蓝牙(2)用BluetoothAdapter搜索蓝牙设备示例

注意在搜索之前要先打开蓝牙设备

 package com.e.search.bluetooth.device;

 import java.util.Set;

 import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.TextView; public class Main extends Activity {
//搜索蓝牙设备第1步,在manifest.xml中加入权限
/*
* <uses-permission android:name="android.permission.BLUETOOTH" />
* <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
*/ //搜索蓝牙设备第2步,准备BluetoothAdapter
private BluetoothAdapter mBluetoothAdapter;
private TextView tvDevices; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.main); tvDevices = (TextView) findViewById(R.id.tvDevices);
//搜索蓝牙设备第3步,获取或创建BluetoothAdapter
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); //搜索蓝牙设备第4步,得到已经配对的蓝牙设备.
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); if (pairedDevices.size() > ) {
//枚举已经配对的设备的名字和地址.
for (BluetoothDevice device : pairedDevices) {
tvDevices.append(device.getName() + ":" + device.getAddress());
}
} //搜索蓝牙设备第5步,用广播接收器得到蓝牙找到设备和搜索完成广播消息.
//注册找到蓝牙设备广播接收器,用filter注册
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(receiver, filter); //注册搜索蓝牙设备已完成广播接收器,用filter注册
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(receiver, filter); } /*
* 开始搜索按钮
*/
public void onClick_Search(View view) {
//显示进度条
setProgressBarIndeterminateVisibility(true);
setTitle("正在搜索...");
//搜索蓝牙设备第6步,开始搜索蓝牙设备.
if (mBluetoothAdapter.isDiscovering()) {//如果正在搜索,那么先取消.
mBluetoothAdapter.cancelDiscovery();
}
mBluetoothAdapter.startDiscovery();//异步的开始搜索.
}
//搜索蓝牙设备第7步,处理找到蓝牙设备和搜索完成广播消息.
private final BroadcastReceiver receiver = new BroadcastReceiver() { @Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {//找到蓝牙设备 //搜索蓝牙设备第8步,搜到蓝牙设备.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
//搜索蓝牙设备第9步,把设备添加到已找到列表中,这里只是显示它的信息.
tvDevices.append(device.getName() + ":"+ device.getAddress() + "\n");
}
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.//搜索完成
equals(action)) {
//搜索蓝牙设备第10步,搜索完毕.
setProgressBarVisibility(false);
setTitle("已搜素完成");
}
}
};
}