Flutter插件upnped的特性与使用方法

Flutter插件upnped的特性与使用方法

upnped

A Dart library for discovering and controlling UPnP devices.

codecov License: MIT

Flutter插件upnped的特性

此包部分实现了UPnP 2.0架构,并支持以下UPnP服务器功能:

  • UPnP发现
  • 设备和服务信息
  • 非标准厂商扩展
  • 服务控制
  • 事件监控

安装

从pub安装:

flutter pub add upnped

或者在pubspec.yaml文件中添加依赖项:

dependencies:
  upnped: <latest_version>

快速开始

以下是一个简单的示例,展示如何使用upnped库来发现UPnP设备。

import 'package:upnped/upnped.dart';

Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

文档

更多详细信息可以查看文档示例

示例代码

快速开始

快速开始示例展示了如何使用upnped库来发现UPnP设备。

// 导入upnped库
import 'package:upnped/upnped.dart';

// 主函数
Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

发现过滤器

通过设置过滤器,可以更精确地搜索特定类型的UPnP设备。

// 导入upnped库
import 'package:upnped/upnped.dart';

// 主函数
Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 设置过滤器
  server.options.filter = 'urn:schemas-upnp-org:service:ContentDirectory:1';

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

设备信息

获取设备的具体信息。

// 导入upnped库
import 'package:upnped/upnped.dart';

// 主函数
Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');

    // 打印设备信息
    print('设备类型: ${event.deviceType}');
    print('设备UDN: ${event.udn}');
    print('设备名称: ${event.friendlyName}');
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

厂商扩展

支持非标准厂商扩展。

// 导入upnped库
import 'package:upnped/upnped.dart';

// 主函数
Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');

    // 打印厂商扩展信息
    print('厂商扩展: ${event.vendorExtensions}');
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

服务控制

控制UPnP设备的服务。

// 导入upnped库
import 'package:upnped/upnped.dart';

// 主函数
Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');

    // 控制设备服务
    event.services.forEach((service) async {
      print('控制服务: ${service.serviceType}');

      // 调用服务操作
      await service.invokeAction('SetVolume', {'InstanceID': 0, 'Channel': 'Master', 'DesiredVolume': 50});
    });
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

事件监控

监控UPnP设备的状态变化。

// 导入upnped库
import 'package:upnped/upnped.dart';

// 主函数
Future<void> main() async {
  // 获取UPnP服务器实例
  final server = Server.getInstance();

  // 监听发现的设备
  server.devices.listen((Device event) {
    print('发现了一个设备: ${event}');

    // 监控设备事件
    event.events.listen((event) {
      print('接收到事件: ${event}');
    });
  });

  // 开始监听UPnP设备
  await server.listen(Options());

  // 搜索UPnP设备
  await server.search();

  // 停止监听
  await server.stop();
}

更多关于Flutter插件upnped的特性与使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部