-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
It would be great to add setRate and setValue features, really needed. Also for iOS it would be great to add the routePickerButton to play audio to Apple TV (AirPlay).
Dart:
static const _nativeMethodSetRate = "setRate";
static const _nativeMethodSetRateArgRateInDouble = "rateInDouble";
static const _nativeMethodSetVolume = "setVolume";
static const _nativeMethodSetStateArgVolumeInDouble = "volumeInDouble";
static const _nativeMethodShowRoutePickerView = "showRoutePickerView"; // iOS Only AirPlay
void setRate(double rate) {
_invokeNativeMethod(
_nativeMethodSetRate,
arguments: <String, dynamic>{_nativeMethodSetRateArgRateInDouble: rate},
);
}
void setVolume(double volume) {
_invokeNativeMethod(
_nativeMethodSetVolume,
arguments: <String, dynamic>{_nativeMethodSetStateArgVolumeInDouble: volume},
);
}
void showRoutePickerView() {
_invokeNativeMethod(_nativeMethodShowRoutePickerView);
}
Kotlin:
private const val NATIVE_METHOD_SET_RATE = "setRate"
private const val NATIVE_METHOD_SET_RATE_ARG_DOUBLE = "rateInDouble"
private const val NATIVE_METHOD_SET_VOLUME = "setVolume"
private const val NATIVE_METHOD_SET_VOLUME_ARG_DOUBLE = "volumeInDouble"
NATIVE_METHOD_SET_RATE -> {
withArgument(call, NATIVE_METHOD_SET_RATE_ARG_DOUBLE) { rateInDouble: Double ->
service.setRate(rateInDouble)
}
}
NATIVE_METHOD_SET_VOLUME -> {
withArgument(call, NATIVE_METHOD_SET_VOLUME_ARG_DOUBLE) { volumeInDouble: Double ->
service.setVolume(volumeInDouble)
}
}
Swit:
case "setRate":
let arguments = call.arguments as! NSDictionary
let rateInDouble = arguments["rateInDouble"] as! Double
self.setRate(rateInDouble: rateInDouble)
case "setVolume":
let arguments = call.arguments as! NSDictionary
let volumeInDouble = arguments["volumeInDouble"] as! Double
self.setVolume(volumeInDouble: volumeInDouble)
private func setRate(rateInDouble: Double) {
// Since setting rate starts playing audio, let's check if player is paused, and keep it paused.
let isMediaPlayerPlaying = player.rate
player.rate = Float(rateInDouble)
playerRate = Float(rateInDouble)
if (isMediaPlayerPlaying == 0) {
player.pause()
}
}
private func setVolume(volumeInDouble: Double) {
player.volume = Float(volumeInDouble)
}
private func showRoutePickerView() {
if (routePickerView != nil) {
if let routePickerButton = routePickerView.subviews.first(where: { $0 is UIButton }) as? UIButton {
routePickerButton.sendActions(for: .touchUpInside)
}
}
}
Thank you.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels