安卓获取BLE蓝牙列表完整用例
时间: 2023-07-31 07:10:02 浏览: 54
以下是一个简单的 Android 示例代码,用于获取 BLE 蓝牙设备列表:
```
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private BluetoothAdapter mBluetoothAdapter;
private ArrayList<String> mDeviceList = new ArrayList<>();
private ListView mListView;
private ArrayAdapter<String> mAdapter;
private Handler mHandler = new Handler();
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!mDeviceList.contains(device.getName() + "\n" + device.getAddress())) {
mDeviceList.add(device.getName() + "\n" + device.getAddress());
mAdapter.notifyDataSetChanged();
}
}
});
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = findViewById(R.id.listView);
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDeviceList);
mListView.setAdapter(mAdapter);
// 获取 BluetoothAdapter 对象
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
// 检查设备是否支持 BLE
if (!getPackageManager().hasSystemFeature(android.content.pm.PackageManager.FEATURE_BLUETOOTH_LE)) {
Log.e("MainActivity", "BLE not supported");
finish();
}
// 开启 Bluetooth 以及 BLE
if (!mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.enable();
}
// 开始扫描 BLE 设备
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}, 10000);
mBluetoothAdapter.startLeScan(mLeScanCallback);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 停止扫描 BLE 设备
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
```
这个示例代码实现了以下操作:
1. 获取 BluetoothAdapter 对象
2. 检查设备是否支持 BLE
3. 开启 Bluetooth 以及 BLE
4. 创建 BluetoothAdapter.LeScanCallback 对象
5. 开始扫描 BLE 设备
6. 在 BluetoothAdapter.LeScanCallback 中处理扫描结果
7. 在列表中显示扫描到的设备名称和地址
8. 停止扫描 BLE 设备
注意:在使用 BLE API 时,必须先获取适当的权限和声明。