Android BLE蓝牙扫描获取名字为null

需要做一个蓝牙软件,才开始学习Android
使用普通的蓝牙扫描 blueadapter.startDiscovery();可以正常获取,但是使用BLE扫描回调只能获取到地址不能获取到名字。谢谢各位的解答
以下是我的扫描以及回调代码:


```java
 /**
     * 开始扫描 10秒后自动停止
     * */
    private void scanDevice(){
        if (!blueadapter.isEnabled()){
            Toast.makeText(BlEbluetooth.this,"蓝牙未开启",Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(BlEbluetooth.this,"正在搜索",Toast.LENGTH_SHORT).show();
            if (Build.VERSION.SDK_INT >= 21) {//判断版本号5.0
                isScaning=true;//标记当前扫面描状态
                if (mBLEScanner == null)
                {
                    mBLEScanner = blueadapter.getBluetoothLeScanner();
                }
                mBLEScanner.startScan(null,mScanSetting(),mScanCallback);
            } else {
               isScaning = true;
                blueadapter.startLeScan(scanCallback);
            }
            //设置扫描结束
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //结束扫描
                    if(android.os.Build.VERSION.SDK_INT >= 21) {
                        //标记当前的为未扫描状态
                        isScaning = false;
                        mBLEScanner.stopScan(mScanCallback);
                        Toast.makeText(BlEbluetooth.this,"搜索结束",Toast.LENGTH_SHORT).show();
                    } else {
                        //标记当前的为未扫描状态
                        isScaning = false;
                        //5.0以下  停止扫描
                        blueadapter.stopLeScan(scanCallback);
                        Toast.makeText(BlEbluetooth.this,"搜索结束",Toast.LENGTH_SHORT).show();
                    }
                }
            },10000);
        }
    }

```java
 BluetoothAdapter.LeScanCallback scanCallback=new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
            Log.e(TAG, "正在搜索");
            if (!mDatas.contains(device)){//判断设备是否加入
                final BleAdvertisedData badata = BleUnit.parseAdertisedData(scanRecord);
                String deviceName = device.getName();
                if( deviceName == null ){
                    deviceName = badata.getName();//获取名字
                }//看了其他人的添加的,可是没有用
                DeviceInformation deviceInformation = new DeviceInformation(deviceName,device);
                mDatas.add(deviceInformation);
                listAdapter.notifyDataSetChanged();
            }

        }
    };
    
    ScanCallback mScanCallback = new ScanCallback() {
        //当广播发现回调时
        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            super.onScanResult(callbackType, result);
            //扫描类型有开始扫描时传入的ScanSettings相关
            //对扫描到的设备进行操作。如:获取设备信息。
            BluetoothDevice device = result.getDevice();
            String deviceName = device.getName();
            if (!mDatas.contains(device)){//判断设备是否加入
                DeviceInformation deviceInformation = new DeviceInformation(deviceName,device);
                mDatas.add(deviceInformation);
                listAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onBatchScanResults(List<ScanResult> results) {
            super.onBatchScanResults(results);
            //批量返回扫描结果
            //@param results 以前扫描到的扫描结果列表。
        }

        @Override
        public void onScanFailed(int errorCode) {
            super.onScanFailed(errorCode);
            //当扫描不能开启时回调
            //扫描太频繁会返回ScanCallback.SCAN_FAILED_APPLICATION_REGISTRATION_FAILED,表示app无法注册,无法开始扫描。

        }
    };


    public ScanSettings mScanSetting(){
        //创建ScanSettings的build对象用于设置参数
        ScanSettings.Builder builder = new ScanSettings.Builder()
                /**设置高功耗模式
                 * setScanMode() 设置扫描模式。ScanSettings.SCAN_MODE_LOW_POWER 低功耗模式(默认扫描模式,如果扫描应用程序不在前台,则强制使用此模式。)
                 */
                .setScanMode(SCAN_MODE_LOW_LATENCY);
        //android 6.0添加设置回调类型、匹配模式等
        if(Build.VERSION.SDK_INT >= 23) {
            //定义回调类型
            //数值1,寻找符合过滤条件的蓝牙广播,如果没有设置过滤条件,则返回全部广播包
            builder.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES);
            //设置蓝牙LE扫描滤波器硬件匹配的匹配模式
            //MATCH_MODE_STICKY粘性模式,在通过硬件报告之前,需要更高的信号强度和目击阈值
            builder.setMatchMode(ScanSettings.MATCH_MODE_STICKY);
        }
        //判断当前芯片是否支持批处理芯片上的扫描
        if (blueadapter.isOffloadedScanBatchingSupported()) {
            //设置蓝牙LE扫描的报告延迟的时间(以毫秒为单位)
            //设置为0以立即通知结果
            builder.setReportDelay(0L);
        }
        return builder.build();
    }

你尝试下加入定位权限看有没有用,记得动态申请下权限。