火机
火机
  • 发布:2019-04-08 10:39
  • 更新:2020-05-23 16:43
  • 阅读:1481

求解决,使用native调用原生代码,实现蓝牙广播报错问题

分类:Native.js

/ 开启蓝牙广播
/**

  • import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothManager;
    import android.bluetooth.le.AdvertiseCallback;
    import android.bluetooth.le.AdvertiseData;
    import android.bluetooth.le.AdvertiseSettings;
    import android.bluetooth.le.BluetoothLeAdvertiser;
    import android.bluetooth.le.BluetoothLeScanner;
    import android.bluetooth.le.ScanCallback;
    import android.bluetooth.le.ScanSettings;
    */
    function openPublic(){
    console.log("进入openpublic");
    var mBluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
    var mBluetoothLeAdvertiser=plus.android.importClass("android.bluetooth.le.BluetoothLeAdvertiser");
    var mAdvertiseSettings=plus.android.importClass("android.bluetooth.le.AdvertiseSettings");

    var main = plus.android.runtimeMainActivity();
    var Context = plus.android.importClass("android.content.Context");
    var BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
    plus.android.importClass(BManager);//引入相关的method函数
    var BAdapter = BManager.getAdapter();
    plus.android.importClass(BAdapter);//引入相关的method函数,这样之后才会有isEnabled函数支持

    var mBluetoothLeAdvertiser1=BAdapter.getBluetoothLeAdvertiser();

    console.log("进入openpublic1");
    var settingsBuilder=new mAdvertiseSettings.Builder();
    //AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder();
    settingsBuilder.setAdvertiseMode(mAdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY);
    settingsBuilder.setTimeout(0);
    settingsBuilder.setConnectable(true);
    settingsBuilder.setTxPowerLevel(3);
    var setting=settingsBuilder.build();
    var uuid=['00001101-0000-1000-8000-00805F9B34FB','00011101-0000-1000-8000-00805F9B34FB','00001121-0000-1000-8000-00805F9B34FB'];

    var sendDatas=[1,2];
    console.log("进入openpublic2");
    //byte[] sendDatas = new Byte[]{0x01,0x02,0x03};
    var mAdvertiseData=plus.android.importClass("android.bluetooth.le.AdvertiseData");
    var mParcelUuid=plus.android.importClass("android.os.ParcelUuid");
    var dataBuilder = new mAdvertiseData.Builder();
    dataBuilder.setIncludeDeviceName(true); //广播名称也需要字节长度
    dataBuilder.setIncludeTxPowerLevel(true);
    var UUID = plus.android.importClass("java.util.UUID");
    var uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    console.log("进入2"+mParcelUuid);
    dataBuilder.addServiceUuid(mParcelUuid.fromString("00001101-0000-1000-8000-00805F9B34FB"));
    dataBuilder.addServiceData(mParcelUuid.fromString("88888888-0000-1000-8000-00805F9B34FB"),sendDatas);
    dataBuilder.addManufacturerData(1,sendDatas);
    var advertiseData=dataBuilder.build();
    console.log("进入openpublic3");

    var mAdvertiseCallback;    
    console.log("进入openpublic4");  
    

    mAdvertiseCallback = plus.android.implements('android.bluetooth.le.AdvertiseCallback', {
    onStartSuccess: function(settingsInEffect) { //实现onStartSuccess回调函数

         console.log("success"); //获取action    
    
    
     }  ,  
     onStartFailure:function(errorCode) { //实现onStartFailure回调函数    
    
      console.log("error"+errorCode);  
    
    
     }    
    

    });

    console.log("进入openpublic5"+setting+"````````````````````"+advertiseData+"``````````````````"+mAdvertiseCallback);  
    mBluetoothLeAdvertiser1.startAdvertising(setting, advertiseData, mAdvertiseCallback);  
    

    outSet('开启蓝牙广播:');

}

其他方法调用正常,

执行到最后startAdvertising 方法报错。

[ERROR] Uncaught Attempt to read from field 'java.lang.Class io.dcloud.invocation.c.b' on a null object reference;at android.bluetooth.le.BluetoothLeAdvertiser.startAdvertising at plus/bluetooth.html:1

2019-04-08 10:39 负责人:无 分享
已邀请:
火机

火机 (作者) - 90后IT

native.js无法实现上下文Context功能,建议使用官方推荐的离线打包功能。

  • wangying

    你好,你解决问题了吗,可以加个QQ请教下吗:419251658


    2021-12-08 17:37

1***@qq.com

1***@qq.com

你好,为啥我也是这样写,直接就没有报错呢,广播也收不到

  • 1***@qq.com

    你好,我也是这个问题,你那边解决了吗


    2021-02-01 18:02

  • wangying

    回复 1***@qq.com: 你好,你解决问题了吗,可以加个QQ请教下吗:419251658


    2021-12-08 17:37

1***@qq.com

1***@qq.com

求助,uniapp如何调用native,小白一枚

  • wangying

    你好,你解决问题了吗,可以加个QQ请教下吗:419251658


    2021-12-08 17:37

该问题目前已经被锁定, 无法添加新回复