帖子
帖子
用户
博客
课程
有助于开发者快速解决问题
11
帖子
0
勋章
61
Y币
var manageStorage = api.require('manageStorage');
                manageStorage.requestAllFilePermission({
                }, function (ret) {
                    alert(JSON.stringify(ret));
                });
这个模块,调用了,alert不会弹出消息
0
帖子
0
勋章
61
Y币
本帖最后由 一览众衫小0o 于 2021-10-26 14:25 编辑

使用BMap模块1.4及以上版本,安卓自定义loader编译失败,使用1.3.7版本就能编译成功
微信图片_20211026142427.png
11
帖子
0
勋章
78
Y币
在吗在吗,有个急贴
3
帖子
0
勋章
56
Y币

BUT提交
1.测试平台:安卓手机(MATE40,荣耀30,小米、荣耀20、苹果)
2.模块名称:ble
3.问题描述:1)当App安装在MATE40,荣耀30手机上,使用ble模块scan周围的蓝牙设备,搜索不到。
                     2)当App安装在小米、荣耀20、苹果手机上,使用ble模块scan周围的蓝牙设备,可以搜索到。
                     3)补充说明:App权限已全部手工打开、requestBlePermission已执行、targetSdkVersion=31。
4.代码截图:

//蓝牙初始化 -- 可外部调用
function bleInit()
{
  //1.变量初始化
  m_ble                = api.require('ble');
  m_sysType            = api.systemType;

  //2.定时器初始化
  bleTimerInit();

  //3.安卓支持先打开蓝牙开关,再初始化本地蓝牙
  if (m_sysType == "android")
  {
    m_ble.requestBlePermission(); //2023-06-05
    m_ble.openBluetooth(evtBleOpenBletooth);
  }
  //3.苹果不支持先打开蓝牙开关,只能直接初始化本地蓝牙
  else
  {
    m_ble.initManager(evtBleInitManager);
  }
}


//事件-打开本地蓝牙-Android
function evtBleOpenBletooth(ret)
{
  if (ret == null || ret.status == null)
  {
    return;
  }

  //1.如果打开本地蓝牙成功,那么初始化本地蓝牙
  if (ret.status == true)
  {
    m_ble.initManager(evtBleInitManager);
  }
  //1.如果打开本地蓝牙失败,那么提示失败
  else
  {
    m_bleState = STATE_NONE;
    api.sendEvent({name:"msgBleStateChange", extra:{type:"init", state:m_bleState, value:"蓝牙打开失败"}});//界面交互
  }
}

//事件-初始化本地蓝牙
function evtBleInitManager(ret)
{
  if (ret == null || ret.state == null)
  {
    return;
  }

  //1.如果打开本地蓝牙成功,那么开始扫描附近蓝牙设备
  if (ret.state == "poweredOn")
  {
    m_bleState = STATE_INIT_OK;
    api.sendEvent({name:"msgBleStateChange", extra:{type:"init", state:m_bleState, value:""}});//界面交互

    bleScanStart();
  }
  //1.如果打开本地蓝牙失败,那么提示失败
  else
  {
    m_bleState = STATE_NONE;
    api.sendEvent({name:"msgBleStateChange", extra:{type:"init", state:m_bleState, value:"蓝牙初始化失败"}});//界面交互
  }
}

//启动扫描附近蓝牙设备 -- 可外部调用
function bleScanStart()
{
  //1.如果初始化未成功,那么提示失败
  if (m_bleState == STATE_NONE)
  {
    api.sendEvent({name:"msgBleStateChange", extra:{type:"scan", state:m_bleState, value:"请先打开蓝牙开关并授权蓝牙"}});//界面交互
    return;
  }

  //2.断开之前的连接
  bleDisConnect();

  //3.启动扫描附近蓝牙设备
  //m_ble.discovery(evtBleScanStart);
  m_ble.scan({clean:true}, evtBleScanStart);
}

//事件-启动扫描附近蓝牙设备
function evtBleScanStart(ret)
{
  if (ret == null || ret.status == null)
  {
    return;
  }

  //1.如果启动扫描附近蓝牙设备成功,那么开始定时器、置扫描中标志
  if (ret.status == true)
  {
    m_bleState   = STATE_SCANING;
    api.sendEvent({name:"msgBleStateChange", extra:{type:"scan", state:m_bleState, value:""}});//界面交互
    m_scanMSecs  = new Date().getTime();
    m_periMSecs  = new Date().getTime();
  }
  //1.如果启动扫描附近蓝牙设备失败,那么提示失败
  else
  {
    m_bleState = STATE_SCAN_ERR;
    api.sendEvent({name:"msgBleStateChange", extra:{type:"scan", state:m_bleState, value:"扫描附近蓝牙设备失败"}});//界面交互
  }
}

//获取扫描到的附近蓝牙设备信息
function getBlePeripheral()
{
  //1.如果初始化未成功,那么提示失败
  if (m_bleState == STATE_NONE)
  {
    api.sendEvent({name:"msgBleStateChange", extra:{type:"peri", state:m_bleState, value:"请先打开蓝牙开关并授权蓝牙"}});//界面交互
    return;
  }

  //2.获取扫描到的附近蓝牙设备信息
  m_ble.getPeripheral(evtGetBlePeripheral);
}

//事件-获取扫描到的附近蓝牙设备信息
function evtGetBlePeripheral(ret)
{
  if (ret == null || ret.peripherals == null)
  {
    return;
  }

  //问题在此处 ret.peripherals.length 是 0

  //2.记录附近蓝牙设备信息
  m_blePeripherals = ret.peripherals;
  api.sendEvent({name:"msgBleStateChange", extra:{type:"peri", state:m_bleState, value:ret.peripherals}});//界面交互
}


//事件-定时器
function evtBleTimer()
{
  var currMSecs = new Date().getTime();

  if (m_bleState == STATE_SCANING)
  {
    //定时获取扫描的附近设备信息
    if (Math.abs(currMSecs - m_periMSecs) >= 1000)
    {
      m_periMSecs = currMSecs;
      getBlePeripheral();
    }

    //扫描超时结束
    if (Math.abs(currMSecs - m_scanMSecs) >= 5000)
    {
      m_scanMSecs = currMSecs;
      m_bleState  = STATE_SCAN_OK;
      bleScanStop();
    }
  }
}









649cfdb4d1815.png
649cfdc017ef0.png
1 ...101112131415161718
您需要登录后才可以回帖 登录

本版积分规则