Flutter控制Elgato Key Light设备插件elgato_keylight_api的使用
Flutter 控制 Elgato Key Light 设备插件 elgato_keylight_api 的使用
功能
此包提供了对 Elgato Keylight 灯具的 API 支持。
未覆盖的功能
该插件不处理如何在您的网络中查找灯具的 IP 地址。您可以使用 multicast_dns
库通过以下查询来实现:
ResourceRecordQuery.serverPointer('_elg._tcp.local');
开始使用
对于每个灯具,首先需要创建一个 ElgatoKeylightAPI
对象:
ElgatoKeylightAPI api = ElgatoKeylightAPI(
ip: 'elgato-key-light-air-ace6.local',
port: 9123,
);
获取灯具信息
有三个可用的端点:
getLightOptions
getLightAccessoryInfo
getLightSettings
更新灯具
调用 getLightOptions()
后,更新对象并将其发送到 updateLightOptions()
:
KeyLightOptions lightOptions = await api.getLightOptions();
api.updateLightOptions(
lightOptions.updateWith(on: !lightOptions.lights.first.isOn),
);
数据示例
灯具配件信息
{
productName: "Elgato Key Light Air",
hardwareBoardType: 200,
firmwareBuildNumber: 216,
firmwareVersion: "1.0.3",
serialNumber: "XXX",
displayName: "May be empty",
features: ["lights"],
wifi: {
ssid: "XXX",
frequency: 1234,
rssi: -1
}
}
灯具设置
{
powerOnBehavior: 1,
powerOnBrightness: 20,
powerOnTemperature: 213,
switchOnDurationMs: 100,
switchOffDurationMs: 300,
colorChangeDurationMs: 100
}
灯具选项
{
number: 1,
lights: [
{
isOn: true,
brightness: 28,
temperature: 279
}
]
}
示例代码
以下是完整的示例代码:
import 'package:elgato_keylight_api/elgato_keylight_api.dart';
import 'package:elgato_keylight_api/src/model/light_options.dart';
void main(List<String> arguments) {
ElgatoKeylightAPI api = ElgatoKeylightAPI(
ip: 'elgato-key-light-air-ace6.local',
port: 9123,
);
printLightDetails(api);
}
Future<void> printLightDetails(ElgatoKeylightAPI api) async {
// 打印灯具配件信息
print('Light accessory info...');
print(await api.getLightAccessoryInfo());
// 打印灯具设置
print('\nLight settings...');
print(await api.getLightSettings());
// 打印灯具选项
print('\nLight options...');
KeyLightOptions lightOptions = await api.getLightOptions();
print(lightOptions);
// 切换灯具开关状态
api.updateLightOptions(
lightOptions.updateWith(on: !lightOptions.lights.first.isOn),
);
}
更多关于Flutter控制Elgato Key Light设备插件elgato_keylight_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter控制Elgato Key Light设备插件elgato_keylight_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个使用 elgato_keylight_api
插件来控制 Elgato Key Light 设备的 Flutter 代码示例。这个示例展示了如何连接到 Key Light 设备,获取其当前状态,并调整其亮度。
首先,确保你已经在 pubspec.yaml
文件中添加了 elgato_keylight_api
依赖:
dependencies:
flutter:
sdk: flutter
elgato_keylight_api: ^最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来,在你的 Flutter 应用中实现以下代码:
import 'package:flutter/material.dart';
import 'package:elgato_keylight_api/elgato_keylight_api.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
ElgatoKeyLight? _keyLight;
bool _isConnected = false;
int? _brightness;
@override
void initState() {
super.initState();
_connectToKeyLight();
}
Future<void> _connectToKeyLight() async {
try {
// 假设你的 Key Light 设备在本地网络上的 IP 地址是 '192.168.1.100'
// 你需要根据实际情况替换 IP 地址
_keyLight = await ElgatoKeyLight.connect('192.168.1.100');
setState(() {
_isConnected = true;
// 获取当前亮度
_brightness = _keyLight!.brightness;
});
} catch (e) {
print('Failed to connect to Key Light: $e');
}
}
Future<void> _adjustBrightness(int brightness) async {
if (_keyLight != null && _isConnected) {
await _keyLight!.setBrightness(brightness);
setState(() {
_brightness = brightness;
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Elgato Key Light Control'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
if (!_isConnected)
Text('Connecting to Key Light...'),
if (_isConnected)
Text('Current Brightness: $_brightness'),
Slider(
value: _brightness ?? 0.toDouble(),
min: 0,
max: 100,
divisions: 100,
onChanged: (double value) {
// 调用 _adjustBrightness 时将 double 值转换为 int
_adjustBrightness(value.toInt());
},
),
],
),
),
),
);
}
@override
void dispose() {
_keyLight?.disconnect();
super.dispose();
}
}
代码说明:
-
依赖导入:
- 导入
flutter/material.dart
用于创建 Flutter 界面。 - 导入
elgato_keylight_api/elgato_keylight_api.dart
用于控制 Elgato Key Light 设备。
- 导入
-
主应用:
MyApp
是主应用类,包含应用的状态管理。
-
状态管理:
_keyLight
变量保存ElgatoKeyLight
实例。_isConnected
变量表示是否已连接到 Key Light 设备。_brightness
变量保存当前亮度值。
-
连接设备:
- 在
initState
方法中调用_connectToKeyLight
方法尝试连接到 Key Light 设备。 - 如果连接成功,设置
_isConnected
为true
并获取当前亮度。
- 在
-
调整亮度:
_adjustBrightness
方法用于调整亮度。- 使用 Slider 控件来动态调整亮度,Slider 的值变化时会调用
_adjustBrightness
方法。
-
释放资源:
- 在
dispose
方法中调用_keyLight?.disconnect()
来断开与 Key Light 设备的连接。
- 在
确保替换示例中的 IP 地址 '192.168.1.100'
为你的实际 Key Light 设备的 IP 地址。
这个示例展示了如何使用 elgato_keylight_api
插件在 Flutter 应用中控制 Elgato Key Light 设备的亮度。你可以根据需要进一步扩展功能,例如控制色温或其他可用设置。