当前位置: 首页 > 知识库问答 >
问题:

在leScanCallback设备中。getName()在少数设备上返回null

岳嘉良
2023-03-14

查看了以下帖子,但对我的案例没有帮助:

BluetoothDevice在getName()上始终返回null

我的问题

我正在开发一个应用程序,可以扫描附近的蓝牙设备,并显示在主屏幕上。但在少数设备(如moto G、samsung note2)上,leScanCallback上的设备名称为空。

我的代码

private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {

    @Override
    public void onLeScan(final BluetoothDevice device, final int rssi,
                         byte[] scanRecord) {
       if (device.getName() != null){//<<- Here it null on few device
           //my process          
        }
  }
};

注意:如果返回null,我需要抛出一个警报,但我不能在onlescan内这样做,因为扫描是连续的。在此之前,我需要根据蓝牙版本向用户发出警报,这可能吗?为什么在少数设备上我无法获得设备名称?提前谢谢。

共有1个答案

班经亘
2023-03-14

第一次检测到广告时不会填充名称字段,因为它来自单独的ScanResponse数据包,该数据包在收到广告回调之前不会到达。

这意味着您必须保留对扫描返回的BluetoothDevice对象的引用,并等待几秒钟以查看是否填充了该名称。

 类似资料:
  • 问题内容: 我正在尝试获取文件的大小,然后再下载。我曾经这样做,它在我的家用计算机Android 2.1 Emulator上运行良好。 但是,一旦我从手机(WiFi或3G)运行我的应用程序,该功能将无法使用,而当我从工作笔记本电脑的Android 2.1仿真器中运行该应用程序时,它也将无法使用。 有谁知道解决方法?还有另一种方法可以获取文件的大小,而无需使用。 问题答案: 此信息并非始终可用。通常

  • 我试图在我的应用程序中解码AAC编码的文件,并初始化用于初始化我的对象的对象,这是为对象设置变量的代码 我面临的问题是语句为某些设备上的同一文件获取我。该应用程序正在生产中,我在android API级别为17、18和19的处理器设备上看到了这个错误,大多数错误都发生在三星设备上。有什么方向吗?

  • 我正在尝试枚举所有与我的设备配对的蓝牙设备。在设置中,我可以查看配对的设备,但以下代码不返回任何项目: 我看过这篇和其他使用这种方法的帖子,但我似乎无法让它发挥作用。 我在Manifest.xml有以下权限: 此外,如果我将其中一个已配对的设备置于发现模式并进行扫描,则该设备会以已配对的状态返回。如果我检查: 从扫描中,它返回true。 我做错了什么或不理解什么?

  • 和onActivityResult 和错误的堆栈跟踪 stack_trace=java.lang.runtimeException:未能将结果ResultInfo{who=null,request=1,result=-1,data=intent{act=inline-data(havs extras)}}传递到活动{com.madhours/com.madhours.activities.acti

  • 最近,我们在Android应用程序中增加了对Chromecast的支持,但在对各种移动设备(手机和平板电脑)的扩展测试中,发现在许多移动设备上,Flipps应用程序都没有发现Chromecast。在相同的设备上,我们使用了最新版本的官方Chromecast SDK演示应用程序进行测试,该应用程序从https://github.com/googlecast/castvideo-Android下载(主

  • 我目前正在为H264视频流编写解码器。目标平台是Android,所以我使用的是MediaCodec API(Android OS>=6.0)。 我在4个设备上测试了我的代码(4个设备上都是相同的): 它在小米红米5 Plus上运行得很好(实际上速度相当快)。 在Nexus 7和三星Galaxy Tab A上运行速度非常慢 它在Samsung Galaxy Tab S2上失败,在(和返回正确的值()