Android BLE蓝牙使用 一

AndroidBle蓝牙开发

一 是否支持BLE蓝牙
 private boolean isSupportBluetooth(boolean istoast) {
        if (!this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
            if (istoast) {
                Toast.makeText(this, "你的设备不支持蓝牙", Toast.LENGTH_SHORT).show();
            }
            return false;
            // ((MainActivity) context).finish();

        }
        final BluetoothManager bluetoothManager =
                (BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
            mBluetoothAdapter = bluetoothManager.getAdapter();
        }
        // Checks if Bluetooth is supported on the device.
        if (mBluetoothAdapter == null) {
            if (istoast) {
                Toast.makeText(this, "你的设备不支持Ble蓝牙", Toast.LENGTH_SHORT).show();
            }
            return false;
        }

        return true;
        }
二 如果支持我们就注册广播接收器来接收我们需要的蓝牙数据,然后具体的蓝牙操作封装在MyBluetoothLeService里面 绑定服务 。最后 如果判断蓝牙是否开启 如果开启我们就进行蓝牙的扫描 ,扫描前 我们需要申请权限 这边我们用的是 EasyPermissions框架来请求权限 最后我们就开启扫描
  /**
     * 初始化蓝牙设备包括我们的打开蓝牙等操作
     */
    private void initBluetooth() {
        supportBluetooth = isSupportBluetooth(true);
        if (supportBluetooth) {
            //注册广播接收器
            registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());
            Intent gattServiceIntent = new Intent(this, MyBluetoothLeService.class);
            bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE);
            if (mBluetoothAdapter.isEnabled()) {
                if (EasyPermissions.hasPermissions(this, bluePermission)) {
                    startBluetoothSearch();
                } else {
                    EasyPermissions.requestPermissions(this, "", Constant.REQUESTBLUETOOTHKEY, bluePermission);
                }
            } else {
                initRequestOpenBluetooth();
            }
        }
    }

 /**
     * 请求打开蓝牙设备
     */
    private void initRequestOpenBluetooth() {
        Intent mIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(mIntent, Constant.REQUESTTOOPENBLUE);
     // 用enable()方法来开启,无需询问用户(无声息的开启蓝牙设备),这时就需要用到android.permission.BLUETOOTH_ADMIN权限。
     // mBluetoothAdapter.enable();
    }
  /**
     * 开启蓝牙扫描  蓝牙烧扫描需要停止这边通过延时来关闭我们的蓝牙扫描
     */
    private void startBluetoothSearch() {
        mBluetoothAdapter.startLeScan(this); // 下面扫描特定service的蓝牙设备
        handler.sendEmptyMessageDelayed(0, delayMillis);//用来关闭我们的蓝牙扫描
         //后面优化用的6以后就推荐用下面的方法搜索
       /* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mBluetoothAdapter.getBluetoothLeScanner().startScan(new ScanCallback() {
                @Override
                public void onScanResult(int callbackType, ScanResult result) {
                    super.onScanResult(callbackType, result);
                }

                @Override
                public void onBatchScanResults(List<ScanResult> results) {
                    super.onBatchScanResults(results);
                }

                @Override
                public void onScanFailed(int errorCode) {
                    super.onScanFailed(errorCode);
                }
            });
        }*/
        }
今天先分享BLE蓝牙是否支持和蓝牙是否开启以及蓝牙的扫描 这边 我们蓝牙的扫描 用的之前版本的在现在推荐使用上面注释掉的方法。 别忘记权限的申请和声明 BLE蓝牙需要定位权限 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值