|
@@ -1,29 +1,49 @@
|
|
|
+import "dart:developer" as dev;
|
|
|
+
|
|
|
import "package:cast/cast.dart";
|
|
|
import "package:ente_cast/ente_cast.dart";
|
|
|
import "package:flutter/material.dart";
|
|
|
|
|
|
class CastServiceImpl extends CastService {
|
|
|
+ final String _appId = 'F5BCEC64';
|
|
|
+ final String _pairRequestNamespace = 'urn:x-cast:pair-request';
|
|
|
+ final Map<String, CastDevice> sessionIDToDeviceID = {};
|
|
|
+
|
|
|
@override
|
|
|
Future<void> connectDevice(BuildContext context, Object device) async {
|
|
|
final CastDevice castDevice = device as CastDevice;
|
|
|
final session = await CastSessionManager().startSession(castDevice);
|
|
|
+ session.messageStream.listen((message) {
|
|
|
+ if (message['type'] == "RECEIVER_STATUS") {
|
|
|
+ dev.log(
|
|
|
+ "got RECEIVER_STATUS, Send request to pair",
|
|
|
+ name: "CastServiceImpl",
|
|
|
+ );
|
|
|
+ session.sendMessage(_pairRequestNamespace, {});
|
|
|
+ } else {
|
|
|
+ print('receive message: $message');
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
session.stateStream.listen((state) {
|
|
|
if (state == CastSessionState.connected) {
|
|
|
const snackBar = SnackBar(content: Text('Connected'));
|
|
|
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
|
|
- session.sendMessage('urn:x-cast:pair-request', {});
|
|
|
+ sessionIDToDeviceID[session.sessionId] = castDevice;
|
|
|
+ debugPrint("Send request to pair");
|
|
|
+ session.sendMessage(_pairRequestNamespace, {});
|
|
|
+ } else if (state == CastSessionState.closed) {
|
|
|
+ dev.log('Session closed', name: 'CastServiceImpl');
|
|
|
+ sessionIDToDeviceID.remove(session.sessionId);
|
|
|
}
|
|
|
});
|
|
|
- session.messageStream.listen((message) {
|
|
|
- print('receive message: $message');
|
|
|
- });
|
|
|
|
|
|
+ debugPrint("Send request to launch");
|
|
|
session.sendMessage(CastSession.kNamespaceReceiver, {
|
|
|
'type': 'LAUNCH',
|
|
|
- 'appId': 'F5BCEC64', // set the appId of your app here
|
|
|
+ 'appId': _appId, // set the appId of your app here
|
|
|
});
|
|
|
- session.sendMessage('urn:x-cast:pair-request', {});
|
|
|
+ // session.sendMessage('urn:x-cast:pair-request', {});
|
|
|
}
|
|
|
|
|
|
@override
|