Implemented support for automatically connecting using QR code.

This commit is contained in:
Koen 2023-12-13 12:36:16 +01:00
parent 7f1cb22c12
commit 627b8c2b5d
2 changed files with 16 additions and 10 deletions

View file

@ -182,14 +182,14 @@ class StateCasting {
val networkConfig = Json.decodeFromString<FCastNetworkConfig>(json)
val tcpService = networkConfig.services.first { v -> v.type == 0 }
addRememberedDevice(CastingDeviceInfo(
val foundInfo = addRememberedDevice(CastingDeviceInfo(
name = networkConfig.name,
type = CastProtocolType.FCAST,
addresses = networkConfig.addresses.toTypedArray(),
port = tcpService.port
))
UIDialogs.toast(context,"FCast device '${networkConfig.name}' added")
connectDevice(deviceFromCastingDeviceInfo(foundInfo))
}
fun onStop() {
@ -335,15 +335,20 @@ class StateCasting {
Logger.i(TAG, "Connect to device ${device.name}");
}
fun addRememberedDevice(deviceInfo: CastingDeviceInfo) {
fun addRememberedDevice(deviceInfo: CastingDeviceInfo): CastingDeviceInfo {
val device = deviceFromCastingDeviceInfo(deviceInfo);
addRememberedDevice(device);
return addRememberedDevice(device);
}
fun addRememberedDevice(device: CastingDevice) {
if (_storage.addDevice(device.getDeviceInfo())) {
fun addRememberedDevice(device: CastingDevice): CastingDeviceInfo {
val deviceInfo = device.getDeviceInfo()
val foundInfo = _storage.addDevice(deviceInfo)
if (foundInfo == deviceInfo) {
rememberedDevices.add(device);
return foundInfo;
}
return foundInfo;
}
fun removeRememberedDevice(device: CastingDevice) {

View file

@ -20,10 +20,11 @@ class CastingDeviceInfoStorage : FragmentedStorageFileJson() {
}
@Synchronized
fun addDevice(castingDeviceInfo: CastingDeviceInfo): Boolean {
if (deviceInfos.any { d -> d.name == castingDeviceInfo.name }) {
fun addDevice(castingDeviceInfo: CastingDeviceInfo): CastingDeviceInfo {
val foundDeviceInfo = deviceInfos.firstOrNull { d -> d.name == castingDeviceInfo.name }
if (foundDeviceInfo != null) {
Logger.i("CastingDeviceInfoStorage", "Device '${castingDeviceInfo.name}' already existed in device storage.")
return false;
return foundDeviceInfo;
}
if (deviceInfos.size >= 5) {
@ -32,7 +33,7 @@ class CastingDeviceInfoStorage : FragmentedStorageFileJson() {
deviceInfos.add(castingDeviceInfo);
save();
return true;
return castingDeviceInfo;
}
@Synchronized