* feat: 调整插件接口

* feat: 增加 `Logger` 类

* fix: 部分参数改为可选参数

* fix: 调整接口

* fix: 重命名 AdvertiseData 为 Advertisement

* fix: 移除 `Logger.level` 属性

* fix: 适配 4.0.0

* fix: 更新依赖项

* fix: 优化导入方式

* fix: 修改版本号

* fix: 适配 4.0.0

* feat: 部分适配 4.0.0

* feat: 适配 4.0.0

* feat: 适配 4.0.0

* fix: 调整接口

* feat: 调整日志接口

* fix: 修复日志错误

* fix: 临时提交

* draft: 临时提交

* fix: 使用 log_service 插件替换 logging 插件

* fix: 更新 log_service 版本

* fix: 4.0.0

* feat: 4.0.0

* feat: 4.0.0
This commit is contained in:
iAMD
2023-10-30 18:06:14 +08:00
committed by GitHub
parent 3c10caa5dd
commit cfe0eda4a3
68 changed files with 1316 additions and 814 deletions

View File

@ -1,4 +1,4 @@
// Autogenerated from Pigeon (v11.0.1), do not edit directly.
// Autogenerated from Pigeon (v12.0.1), do not edit directly.
// See also: https://pub.dev/packages/pigeon
package dev.yanshouwang.bluetooth_low_energy_android
@ -165,7 +165,7 @@ data class MyPeripheralArgs (
}
/** Generated class from Pigeon that represents data sent in messages. */
data class MyAdvertiseDataArgs (
data class MyAdvertisementArgs (
val nameArgs: String? = null,
val serviceUUIDsArgs: List<String?>,
val serviceDataArgs: Map<String?, ByteArray?>,
@ -174,14 +174,14 @@ data class MyAdvertiseDataArgs (
) {
companion object {
@Suppress("UNCHECKED_CAST")
fun fromList(list: List<Any?>): MyAdvertiseDataArgs {
fun fromList(list: List<Any?>): MyAdvertisementArgs {
val nameArgs = list[0] as String?
val serviceUUIDsArgs = list[1] as List<String?>
val serviceDataArgs = list[2] as Map<String?, ByteArray?>
val manufacturerSpecificDataArgs: MyManufacturerSpecificDataArgs? = (list[3] as List<Any?>?)?.let {
MyManufacturerSpecificDataArgs.fromList(it)
}
return MyAdvertiseDataArgs(nameArgs, serviceUUIDsArgs, serviceDataArgs, manufacturerSpecificDataArgs)
return MyAdvertisementArgs(nameArgs, serviceUUIDsArgs, serviceDataArgs, manufacturerSpecificDataArgs)
}
}
fun toList(): List<Any?> {
@ -654,7 +654,7 @@ private object MyCentralManagerFlutterApiCodec : StandardMessageCodec() {
return when (type) {
128.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
MyAdvertiseDataArgs.fromList(it)
MyAdvertisementArgs.fromList(it)
}
}
129.toByte() -> {
@ -682,7 +682,7 @@ private object MyCentralManagerFlutterApiCodec : StandardMessageCodec() {
}
override fun writeValue(stream: ByteArrayOutputStream, value: Any?) {
when (value) {
is MyAdvertiseDataArgs -> {
is MyAdvertisementArgs -> {
stream.write(128)
writeValue(stream, value.toList())
}
@ -716,28 +716,60 @@ class MyCentralManagerFlutterApi(private val binaryMessenger: BinaryMessenger) {
MyCentralManagerFlutterApiCodec
}
}
fun onStateChanged(stateNumberArgsArg: Long, callback: () -> Unit) {
fun onStateChanged(stateNumberArgsArg: Long, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyCentralManagerFlutterApi.onStateChanged", codec)
channel.send(listOf(stateNumberArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
fun onDiscovered(peripheralArgsArg: MyPeripheralArgs, rssiArgsArg: Long, advertiseDataArgsArg: MyAdvertiseDataArgs, callback: () -> Unit) {
fun onDiscovered(peripheralArgsArg: MyPeripheralArgs, rssiArgsArg: Long, advertisementArgsArg: MyAdvertisementArgs, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyCentralManagerFlutterApi.onDiscovered", codec)
channel.send(listOf(peripheralArgsArg, rssiArgsArg, advertiseDataArgsArg)) {
callback()
channel.send(listOf(peripheralArgsArg, rssiArgsArg, advertisementArgsArg)) {
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
fun onPeripheralStateChanged(peripheralArgsArg: MyPeripheralArgs, stateArgsArg: Boolean, callback: () -> Unit) {
fun onPeripheralStateChanged(peripheralArgsArg: MyPeripheralArgs, stateArgsArg: Boolean, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyCentralManagerFlutterApi.onPeripheralStateChanged", codec)
channel.send(listOf(peripheralArgsArg, stateArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
fun onCharacteristicValueChanged(characteristicArgsArg: MyGattCharacteristicArgs, valueArgsArg: ByteArray, callback: () -> Unit) {
fun onCharacteristicValueChanged(characteristicArgsArg: MyGattCharacteristicArgs, valueArgsArg: ByteArray, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyCentralManagerFlutterApi.onCharacteristicValueChanged", codec)
channel.send(listOf(characteristicArgsArg, valueArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
}
@ -747,7 +779,7 @@ private object MyPeripheralManagerHostApiCodec : StandardMessageCodec() {
return when (type) {
128.toByte() -> {
return (readValue(buffer) as? List<Any?>)?.let {
MyAdvertiseDataArgs.fromList(it)
MyAdvertisementArgs.fromList(it)
}
}
129.toByte() -> {
@ -780,7 +812,7 @@ private object MyPeripheralManagerHostApiCodec : StandardMessageCodec() {
}
override fun writeValue(stream: ByteArrayOutputStream, value: Any?) {
when (value) {
is MyAdvertiseDataArgs -> {
is MyAdvertisementArgs -> {
stream.write(128)
writeValue(stream, value.toList())
}
@ -815,7 +847,7 @@ interface MyPeripheralManagerHostApi {
fun addService(serviceArgs: MyGattServiceArgs, callback: (Result<Unit>) -> Unit)
fun removeService(serviceHashCodeArgs: Long)
fun clearServices()
fun startAdvertising(advertiseDataArgs: MyAdvertiseDataArgs, callback: (Result<Unit>) -> Unit)
fun startAdvertising(advertisementArgs: MyAdvertisementArgs, callback: (Result<Unit>) -> Unit)
fun stopAdvertising()
fun getMaximumWriteLength(centralHashCodeArgs: Long): Long
fun sendReadCharacteristicReply(centralHashCodeArgs: Long, characteristicHashCodeArgs: Long, idArgs: Long, offsetArgs: Long, statusArgs: Boolean, valueArgs: ByteArray)
@ -908,8 +940,8 @@ interface MyPeripheralManagerHostApi {
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val advertiseDataArgsArg = args[0] as MyAdvertiseDataArgs
api.startAdvertising(advertiseDataArgsArg) { result: Result<Unit> ->
val advertisementArgsArg = args[0] as MyAdvertisementArgs
api.startAdvertising(advertisementArgsArg) { result: Result<Unit> ->
val error = result.exceptionOrNull()
if (error != null) {
reply.reply(wrapError(error))
@ -1078,28 +1110,60 @@ class MyPeripheralManagerFlutterApi(private val binaryMessenger: BinaryMessenger
MyPeripheralManagerFlutterApiCodec
}
}
fun onStateChanged(stateNumberArgsArg: Long, callback: () -> Unit) {
fun onStateChanged(stateNumberArgsArg: Long, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyPeripheralManagerFlutterApi.onStateChanged", codec)
channel.send(listOf(stateNumberArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
fun onReadCharacteristicCommandReceived(centralArgsArg: MyCentralArgs, characteristicArgsArg: MyGattCharacteristicArgs, idArgsArg: Long, offsetArgsArg: Long, callback: () -> Unit) {
fun onReadCharacteristicCommandReceived(centralArgsArg: MyCentralArgs, characteristicArgsArg: MyGattCharacteristicArgs, idArgsArg: Long, offsetArgsArg: Long, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyPeripheralManagerFlutterApi.onReadCharacteristicCommandReceived", codec)
channel.send(listOf(centralArgsArg, characteristicArgsArg, idArgsArg, offsetArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
fun onWriteCharacteristicCommandReceived(centralArgsArg: MyCentralArgs, characteristicArgsArg: MyGattCharacteristicArgs, idArgsArg: Long, offsetArgsArg: Long, valueArgsArg: ByteArray, callback: () -> Unit) {
fun onWriteCharacteristicCommandReceived(centralArgsArg: MyCentralArgs, characteristicArgsArg: MyGattCharacteristicArgs, idArgsArg: Long, offsetArgsArg: Long, valueArgsArg: ByteArray, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyPeripheralManagerFlutterApi.onWriteCharacteristicCommandReceived", codec)
channel.send(listOf(centralArgsArg, characteristicArgsArg, idArgsArg, offsetArgsArg, valueArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
fun onNotifyCharacteristicCommandReceived(centralArgsArg: MyCentralArgs, characteristicArgsArg: MyGattCharacteristicArgs, stateArgsArg: Boolean, callback: () -> Unit) {
fun onNotifyCharacteristicCommandReceived(centralArgsArg: MyCentralArgs, characteristicArgsArg: MyGattCharacteristicArgs, stateArgsArg: Boolean, callback: (Result<Unit>) -> Unit) {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.bluetooth_low_energy_android.MyPeripheralManagerFlutterApi.onNotifyCharacteristicCommandReceived", codec)
channel.send(listOf(centralArgsArg, characteristicArgsArg, stateArgsArg)) {
callback()
if (it is List<*>) {
if (it.size > 1) {
callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)));
} else {
callback(Result.success(Unit));
}
} else {
callback(Result.failure(FlutterError("channel-error", "Unable to establish connection on channel.", "")));
}
}
}
}

View File

@ -43,7 +43,7 @@ val BluetoothDevice.uuid: UUID
return UUID.fromString("00000000-0000-0000-0000-$node")
}
val ScanResult.advertiseDataArgs: MyAdvertiseDataArgs
val ScanResult.advertisementArgs: MyAdvertisementArgs
get() {
val record = scanRecord
return if (record == null) {
@ -51,7 +51,7 @@ val ScanResult.advertiseDataArgs: MyAdvertiseDataArgs
val serviceUUIDsArgs = emptyList<String?>()
val serviceDataArgs = emptyMap<String?, ByteArray>()
val manufacturerSpecificDataArgs = null
MyAdvertiseDataArgs(nameArgs, serviceUUIDsArgs, serviceDataArgs, manufacturerSpecificDataArgs)
MyAdvertisementArgs(nameArgs, serviceUUIDsArgs, serviceDataArgs, manufacturerSpecificDataArgs)
} else {
val nameArgs = record.deviceName
val serviceUUIDsArgs = record.serviceUuids?.map { uuid -> uuid.toString() }
@ -62,7 +62,7 @@ val ScanResult.advertiseDataArgs: MyAdvertiseDataArgs
}.toTypedArray()
val serviceDataArgs = mapOf<String?, ByteArray?>(*pairs)
val manufacturerSpecificDataArgs = record.manufacturerSpecificData.toManufacturerSpecificDataArgs()
MyAdvertiseDataArgs(nameArgs, serviceUUIDsArgs, serviceDataArgs, manufacturerSpecificDataArgs)
MyAdvertisementArgs(nameArgs, serviceUUIDsArgs, serviceDataArgs, manufacturerSpecificDataArgs)
}
}
@ -99,7 +99,7 @@ val ScanRecord.rawValues: Map<Byte, ByteArray>
return rawValues.toMap()
}
fun MyAdvertiseDataArgs.toAdvertiseData(adapter: BluetoothAdapter): AdvertiseData {
fun MyAdvertisementArgs.toAdvertiseData(adapter: BluetoothAdapter): AdvertiseData {
val advertiseDataBuilder = AdvertiseData.Builder()
if (nameArgs == null) {
advertiseDataBuilder.setIncludeDeviceName(false)

View File

@ -417,8 +417,8 @@ class MyCentralManager(private val context: Context, binaryMessenger: BinaryMess
this.devices[hashCodeArgs] = device
this.peripheralsArgs[hashCode] = peripheralArgs
val rssiArgs = result.rssi.toLong()
val advertiseDataArgs = result.advertiseDataArgs
api.onDiscovered(peripheralArgs, rssiArgs, advertiseDataArgs) {}
val advertisementArgs = result.advertisementArgs
api.onDiscovered(peripheralArgs, rssiArgs, advertisementArgs) {}
}
fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {

View File

@ -203,13 +203,13 @@ class MyPeripheralManager(private val context: Context, binaryMessenger: BinaryM
}
}
override fun startAdvertising(advertiseDataArgs: MyAdvertiseDataArgs, callback: (Result<Unit>) -> Unit) {
override fun startAdvertising(advertisementArgs: MyAdvertisementArgs, callback: (Result<Unit>) -> Unit) {
try {
if (startAdvertisingCallback != null) {
throw IllegalStateException()
}
val settings = AdvertiseSettings.Builder().setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED).setConnectable(true).build()
val advertiseData = advertiseDataArgs.toAdvertiseData(adapter)
val advertiseData = advertisementArgs.toAdvertiseData(adapter)
advertiser.startAdvertising(settings, advertiseData, advertiseCallback)
startAdvertisingCallback = callback
} catch (e: Throwable) {