遛鲸鱼的猫~ 2024-07-24 16:13 采纳率: 16.7%
浏览 45
已结题

uni.onBluetoothDeviceFound熄屏不运行

uni.onBluetoothDeviceFound熄屏不运行
后台运行 前台服务 电池优化白名单都已经弄好 测试当app在手机后台时他是运行的 在监听 只要一熄屏就不监听了 按亮屏幕没有解锁时也在运行 什么原因 是这个api不支持熄屏运行吗 然后我又试了plus里的 监听蓝牙 下方代码 还是不行 但是试了其他的监听方法就可以熄屏时运行 说明前台服务后台运行这些没问题吧 但是就是这个一息屏就不监听了 有什么办法吗 这个怎么解决 安卓手机

plus.bluetooth.openBluetoothAdapter({ 初始化蓝牙模块 
                    success: function(e) { 
                        console.log('open success: ' + JSON.stringify(e));
                        plus.bluetooth.startBluetoothDevicesDiscovery({
                            success: function(e) {
                                console.log('start discovery success: ' + JSON.stringify(e));
                                plus.bluetooth.onBluetoothDeviceFound(function(e) {
                                    var devices = e.devices;
                                    console.log('device found: ' + e.length);
                                    for (var i in devices) {
                                        console.log(i + ': ' + JSON.stringify(devices[i]));
                                    }
                                });
                            },
                            fail: function(e) {
                                console.log('start discovery failed: ' + JSON.stringify(e));
                            }
                        });
                    },
                    fail: function(e) {
                        console.log('open failed: ' + JSON.stringify(e));
                    }
                });

  • 写回答

26条回答 默认 最新

  • 阿里嘎多学长 2024-07-24 16:20
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的信息和代码,问题似乎在于 uni.onBluetoothDeviceFound 在熄屏状态下不触发。这可能是由于系统级别的限制,因为某些系统可能不允许在熄屏状态下进行蓝牙扫描,以节省电量和提高设备安全性。

    解决方案

    1. 确保系统权限和设置

      • 确保应用具有在后台运行的权限。
      • 检查是否有任何系统设置阻止应用在熄屏状态下运行。
    2. 使用前台服务

      • 如果可能,考虑使用前台服务来保持应用的活跃状态,这样即使在熄屏状态下也能继续监听蓝牙设备。
    3. 监听蓝牙适配器状态变化

      • 使用 uni.onBluetoothAdapterStateChange 监听蓝牙状态变化,并在状态变为 poweredOn 时重新启动蓝牙设备发现。
    4. 尝试其他蓝牙API

      • 如果 uni.onBluetoothDeviceFound 不能满足需求,尝试使用其他API,例如 uni.getBluetoothDevicesuni.onBLEConnectionStateChange
    5. 使用定时器或轮询

      • 如果API限制导致无法在熄屏状态下运行,可以考虑使用定时器或轮询机制,在应用回到前台时立即检查蓝牙设备。

    示例代码

    以下是使用 uni.onBluetoothAdapterStateChange 监听蓝牙状态变化,并在状态变化时尝试重新启动蓝牙设备发现的示例代码:

    // 监听蓝牙适配器状态变化
    uni.onBluetoothAdapterStateChange(function(e) {
      if (e.state === 'poweredOn') {
        // 蓝牙已开启,尝试重新启动设备发现
        startBluetoothDevicesDiscovery();
      } else {
        console.log('Bluetooth is not powered on');
      }
    });
    
    // 开始蓝牙设备发现的函数
    function startBluetoothDevicesDiscovery() {
      uni.startBluetoothDevicesDiscovery({
        success: function(e) {
          console.log('start discovery success: ' + JSON.stringify(e));
          uni.onBluetoothDeviceFound(function(e) {
            var devices = e.devices;
            console.log('device found: ' + e.length);
            for (var i in devices) {
              console.log(i + ': ' + JSON.stringify(devices[i]));
            }
          });
        },
        fail: function(e) {
          console.log('start discovery failed: ' + JSON.stringify(e));
          // 可以考虑设置定时器,稍后重试
          setTimeout(startBluetoothDevicesDiscovery, 5000);
        }
      });
    }
    
    // 应用启动时初始化蓝牙模块并开始设备发现
    uni.openBluetoothAdapter({
      success: function(e) {
        console.log('open success: ' + JSON.stringify(e));
        startBluetoothDevicesDiscovery();
      },
      fail: function(e) {
        console.log('open failed: ' + JSON.stringify(e));
      }
    });
    

    注意事项

    • 确保应用具有必要的权限,包括蓝牙权限和后台运行权限。
    • 测试代码在不同的设备和操作系统版本上的表现,因为不同系统可能有不同的限制。
    • 如果问题依然存在,可能需要考虑使用其他技术或库来实现蓝牙设备发现功能。

    希望这些建议能帮助您解决问题。如果还有其他问题或需要进一步的帮助,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月29日
  • 创建了问题 7月24日

悬赏问题

  • ¥15 C++ 菜单窗口独立出来,可以随意移动放大缩小。
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 网友们我该怎么办啊,急
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?