/ 开启蓝牙广播
/**
-
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
wangying
你好,你解决问题了吗,可以加个QQ请教下吗:419251658
2021-12-08 17:37