パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v2.1.0

cast

Chromecastデバイスの検出と接続に使用するDartパッケージ

30日間ダウンロード
1.7万
いいね数
94
Pub ポイント
80

パッケージをインストール

flutter pub add cast

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Castパッケージは、FlutterアプリケーションでChromecastデバイスの検出と接続を可能にするDartライブラリです。開発者は、アプリからオーディオ、ビデオ、その他のコンテンツを対応するChromecast対応ディスプレイにストリーミングできます。このパッケージは、シームレスなデバイス検出とメディアコントロールをサポートしており、スマートテレビやストリーミングハードウェアと統合されたメディア中心のアプリを開発するのに最適です。シンプルさを重視して設計されており、下位プロトコルについて深い知識がなくても、キャスト機能を簡単に利用できるAPIを提供します。eivo.coによってメンテナンスされており、コミュニティによる貢献を目的としてGitHubで公開されています。

用途

  • Chromecastデバイスへのストリーミングメディア
  • テレビやホームエンターテインメントアプリの構築
  • リモート再生制御の有効化
  • スマートホームエコシステムとの統合
  • デバイス間のメディア体験の構築

主な機能

  • 自動的な Chromecast デバイスの検出
  • オーディオおよびビデオのキャスト対応
  • シンプルで直感的な API
  • クロスプラットフォーム互換性(プラットフォーム固有の実装付き)
  • オープンソースでコミュニティメンテナンス

適している対象

  • メディアアプリを開発する開発者
  • スマートテレビやストリーミングデバイス向けのアプリ
  • デバイス間のキャストを必要とするプロジェクト
  • IoT やホームオートメーションの統合に取り組んでいるチーム
  • マルチスクリーン体験を目的とした Flutter アプリ

注意事項

  • 完全な機能を実現するには、AndroidおよびiOSプラットフォームのセットアップが必要です
  • Chromecast対応デバイスに限定
  • 複雑なメディアストリームには追加の構成が必要になる場合があります
  • 外部ネットワーク接続に依存する
  • メディア以外のキャスティング用途には適していません

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

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

カテゴリー

依存関係

依存関係一覧 2 件

ソースリポジトリ

このパッケージを使用しているプロジェクト