Pakete, Repositories und App-Kategorien suchen

Paketdetailsv2.1.0

cast

Dart-Paket zum Entdecken und Verbinden mit Chromecast-Geräten

30-Tage-Downloads
16.500
Likes
94
Pub-Punkte
80

Paket installieren

flutter pub add cast

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Das Cast-Paket ist eine Dart-Bibliothek, die die Entdeckung und Verbindung mit Chromecast-Geräten in Flutter-Anwendungen ermöglicht. Es ermöglicht Entwicklern, Audio-, Video- und andere Inhalte aus ihren Apps auf kompatible Chromecast-fähige Displays zu streamen. Das Paket unterstützt nahtlose Gerätedetektion und Mediensteuerung und ist daher ideal für die Entwicklung von medienzentrierten Anwendungen, die mit Smart-TVs und Streaming-Hardware integriert sind. Mit Fokus auf Einfachheit bietet es eine unkomplizierte API für Casting-Funktionen, ohne tiefgehendes Wissen über die zugrundeliegenden Protokolle zu erfordern. Es wird von eivo.co gepflegt und steht auf GitHub für Community-Beiträge zur Verfügung.

Anwendungsfälle

  • Streaming-Medien an Chromecast-Geräte
  • TV- oder Heimunterhaltungs-Apps erstellen
  • Aktivieren der Fernsteuerung der Wiedergabe
  • Integration in Smart-Home-Ökosysteme
  • Erstellen von Medien-Erlebnissen über Geräte hinweg

Hauptmerkmale

  • Automatische Chromecast-Geräteentdeckung
  • Unterstützung für Audio- und Video-Casting
  • Einfache, intuitive API
  • Plattformübergreifende Kompatibilität (mit plattformspezifischer Implementierung)
  • Open Source und communitygepflegt

Geeignet für

  • Entwickler, die Medien-Apps erstellen
  • Apps für Smart-TV oder Streaming-Geräte
  • Projekte, die Geräte-zu-Geräte-Übertragung erfordern
  • Teams, die an IoT- oder Heimautomatisierungsintegration arbeiten
  • Flutter-Anwendungen mit Fokus auf Mehrbildschirm-Erlebnisse

Hinweise

  • Für volle Funktionalität ist die Einrichtung von Android und iOS erforderlich
  • Beschränkt auf Chromecast-kompatible Geräte
  • Kann zusätzliche Konfiguration für komplexe Medienströme erfordern
  • Abhängig von externer Netzwerkverbindung
  • Nicht geeignet für nicht-medienbezogene Casting-Anwendungsfälle

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

Pub Likes Pub Popularity Pub Points

cast

Dart package to discover and connect with Chromecast devices

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  cast: ^2.1.0
iOS

Required iOS 13 minimum. Since iOS 14 a few more steps are required https://developers.google.com/cast/docs/ios_sender/ios_permissions_changes

In ios/Runner/Info.plist add:

<key>NSBonjourServices</key>
<array>
  <string>_googlecast._tcp</string>
  <string>_YOUR_APP_ID._googlecast._tcp</string>
</array>

<key>NSLocalNetworkUsageDescription</key>
<string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
network.</string>

Usage

List devices:

Widget build(BuildContext context) {
  return FutureBuilder<List<CastDevice>>(
    future: CastDiscoveryService().search(),
    builder: (context, snapshot) {
      if (snapshot.hasError) {
        return Center(
          child: Text(
            'Error: ${snapshot.error.toString()}',
          ),
        );
      } else if (!snapshot.hasData) {
        return Center(
          child: CircularProgressIndicator(),
        );
      }

      if (snapshot.data!.isEmpty) {
        return Column(
          children: [
            Center(
              child: Text(
                'No Chromecast founded',
              ),
            ),
          ],
        );
      }

      return Column(
        children: snapshot.data!.map((device) {
          return ListTile(
            title: Text(device.name),
            onTap: () {
              _connectToYourApp(context, device);
            },
          );
        }).toList(),
      );
    },
  );
}

Connect to device:

Future<void> _connect(BuildContext context, CastDevice object) async {
  final session = await CastSessionManager().startSession(object);

  session.stateStream.listen((state) {
    if (state == CastSessionState.connected) {
      _sendMessage(session);
    }
  });

  session.messageStream.listen((message) {
    print('receive message: $message');
  });

  session.sendMessage(CastSession.kNamespaceReceiver, {
    'type': 'LAUNCH',
    'appId': 'YouTube', // set the appId of your app here
  });
}

CastSessionManager is used to keep track of all sessions.

Send message:

void _sendMessage(CastSession session) {
  session.sendMessage('urn:x-cast:namespace-of-the-app', {
    'type': 'sample',
  });
}

Except for the launch message, you should wait until the session have a connected state before sending message.

Note

Some informations about the protocol used https://docs.rs/crate/gcast/0.1.5/source/PROTOCOL.md

$ pub global activate protoc_plugin
$ export PATH="$PATH":"$HOME/.pub-cache/bin"
$ protoc -I=./lib/cast_channel --dart_out=./lib/cast_channel ./lib/cast_channel/cast_channel.proto --plugin "pub run protoc_plugin"

Author

Kategorien

Abhängigkeiten

Abhängigkeiten 2 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden