Android BLE: android平台上连接ble(蓝牙低功耗设备)的demo,包含打开、扫描蓝牙、连接、通信、断开连接各种功能。 |
您所在的位置:网站首页 › 手机拍片子软件叫什么 › Android BLE: android平台上连接ble(蓝牙低功耗设备)的demo,包含打开、扫描蓝牙、连接、通信、断开连接各种功能。 |
参考网址https://www.jianshu.com/p/2dba7f067372,android蓝牙BLE(一) —— 扫描 新建工程。在工程的AndroidManifest添加蓝牙权限 在Activity也要动态申请权限,添加下面代码,在启动蓝牙功能前调用initPermission方法申请权限。 //申请多个权限 //1、首先声明一个数组permissions,将需要的权限都放在里面 String[] permissions = new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}; //2、创建一个mPermissionList,逐个判断哪些权限未授予,未授予的权限存储到mPerrrmissionList中 List mPermissionList = new ArrayList(); private final int mRequestCode = 200;//权限请求码 //权限判断和申请 private void initPermission() { mPermissionList.clear();//清空没有通过的权限 //逐个判断你要的权限是否已经通过 for (int i = 0; i < permissions.length; i++) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission( permissions[i]) != PackageManager.PERMISSION_GRANTED) { mPermissionList.add(permissions[i]);//添加还未授予的权限 } } } //申请权限 if (mPermissionList.size() > 0) {//有权限没有通过,需要申请 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(permissions, mRequestCode); } } } @Override public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { switch (permsRequestCode) { case 200:{ initPermission(); }break; } }获取BluetoothManager和BluetoothAdapt,BluetoothAdapt具备启动蓝牙和扫描蓝牙列表的功能。 //首先获取BluetoothManager BluetoothManager bluetoothManager=(BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE); //获取BluetoothAdapter BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();判断蓝牙是否开启,蓝牙开启后开始扫描。 if (!mBluetoothAdapter.isEnabled()) { boolean enable = mBluetoothAdapter.enable(); //返回值表示 是否成功打开了蓝牙功能 if (enable){ return; } } if(android.os.Build.VERSION.SDK_INT >= 21) { //标记当前的为扫描状态 mScanning = true; //获取5.0新添的扫描类 if (mBLEScanner == null){ //mBLEScanner是5.0新添加的扫描类,通过BluetoothAdapter实例获取。 mBLEScanner = mBluetoothAdapter.getBluetoothLeScanner(); } //开始扫描 //mScanCallback是ScanCallback实例。 mBLEScanner.startScan(mScanCallback); } else { //标记当前的为扫描状态 mScanning = true; //5.0以下 开始扫描 //mLeScanCallback是BluetoothAdapter.LeScanCallback实例 mBluetoothAdapter.startLeScan(mLeScanCallback); } //超过SCAN_TIME时间后停止搜索 mHandler.postDelayed(new Runnable() { @Override public void run() { //停止扫描设备 if(android.os.Build.VERSION.SDK_INT >= 21) { //标记当前的为未扫描状态 mScanning = false; mBLEScanner.stopScan(mScanCallback); } else { //标记当前的为未扫描状态 mScanning = false; //5.0以下 停止扫描 mBluetoothAdapter.stopLeScan(mLeScanCallback); } } }, SCAN_TIME);扫描的方法需要提供对应的callback,callback类里面的函数里面可以得到扫描得到的蓝牙列表。可以用个列表数组添加扫描得到的设备,记得在开始扫描蓝牙前把列表数组清空。 /** * 搜索蓝牙的结果 */ private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { //在这里可以把搜索到的设备保存起来 //device.getName();获取蓝牙设备名字 //device.getAddress();获取蓝牙设备mac地址 //这里的rssi即信号强度,即手机与设备之间的信号强度。 if(device.getName()==null){ return; } for(int i=0; i |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |