First pass adding android auto and apple carplay support. Android auto tuned on emulator.
This commit is contained in:
@@ -127,6 +127,10 @@ class _MainPageState extends State<MainPage> {
|
||||
return 'Stopped';
|
||||
}
|
||||
|
||||
static const _playbackChannel = MethodChannel(
|
||||
'kryz_go_flutter/playback/methods',
|
||||
);
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -134,6 +138,21 @@ class _MainPageState extends State<MainPage> {
|
||||
_casting.addListener(_handleCastingStateChanged);
|
||||
_liveInfo.addListener(_handleLiveInfoChanged);
|
||||
_liveInfo.start();
|
||||
_playbackChannel.setMethodCallHandler(_handlePlaybackMethodCall);
|
||||
// Tell native that Flutter is ready to receive method calls.
|
||||
// On Android this unblocks any pending auto_play from Android Auto.
|
||||
if (defaultTargetPlatform == TargetPlatform.android) {
|
||||
_playbackChannel.invokeMethod<void>('flutterReady');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _handlePlaybackMethodCall(MethodCall call) async {
|
||||
switch (call.method) {
|
||||
case 'play':
|
||||
await _play();
|
||||
case 'stop':
|
||||
await _stop();
|
||||
}
|
||||
}
|
||||
|
||||
void _handleAudioStateChanged() {
|
||||
@@ -144,6 +163,16 @@ class _MainPageState extends State<MainPage> {
|
||||
setState(() {
|
||||
// Rebuild when playback state changes from the player.
|
||||
});
|
||||
|
||||
_syncAutoPlaybackState();
|
||||
}
|
||||
|
||||
void _syncAutoPlaybackState() {
|
||||
if (defaultTargetPlatform != TargetPlatform.android) return;
|
||||
_playbackChannel.invokeMethod<void>('updatePlaybackState', {
|
||||
'isPlaying': _audio.isPlaying,
|
||||
'isBuffering': _audio.isBuffering,
|
||||
});
|
||||
}
|
||||
|
||||
void _handleLiveInfoChanged() {
|
||||
|
||||
Reference in New Issue
Block a user