Skip to content

Commit d844ef9

Browse files
authored
fix!: remove unused defaultToSpeaker in AudioContextIOS and replace with AVAudioSessionOptions.defaultToSpeaker (#1374)
The parameter defaultToSpeaker was not used in AudioContextIOS. Instead option: [AVAudioSessionOptions.defaultToSpeaker] should be used AudioContext now has default configurations for iOS and android. Nevertheless it is recommended to set the config via AudioContextConfig.build().
1 parent 69c6166 commit d844ef9

3 files changed

Lines changed: 19 additions & 33 deletions

File tree

packages/audioplayers/example/lib/tabs/audio_context.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ class _AudioContextTabState extends State<AudioContextTab>
117117
final i = config.buildIOS();
118118
return Column(
119119
children: [
120-
Text('defaultToSpeaker: ${i.defaultToSpeaker}'),
121120
Text('category: ${i.category}'),
122121
Text('options: ${i.options}'),
123122
],

packages/audioplayers_darwin/ios/Classes/AudioContext.swift

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,18 @@ import MediaPlayer
33
struct AudioContext {
44
let category: AVAudioSession.Category
55
let options: [AVAudioSession.CategoryOptions]
6-
let defaultToSpeaker: Bool
76

87
init() {
98
self.category = .playAndRecord
109
self.options = [.mixWithOthers]
11-
self.defaultToSpeaker = false
1210
}
1311

1412
init(
1513
category: AVAudioSession.Category,
16-
options: [AVAudioSession.CategoryOptions],
17-
defaultToSpeaker: Bool
14+
options: [AVAudioSession.CategoryOptions]
1815
) {
1916
self.category = category
2017
self.options = options
21-
self.defaultToSpeaker = defaultToSpeaker
2218
}
2319

2420
func activateAudioSession(
@@ -60,15 +56,9 @@ struct AudioContext {
6056
return nil
6157
}
6258

63-
guard let defaultToSpeaker = args["defaultToSpeaker"] as! Bool? else {
64-
Logger.error("Null value received for defaultToSpeaker")
65-
return nil
66-
}
67-
6859
return AudioContext(
6960
category: category,
70-
options: options,
71-
defaultToSpeaker: defaultToSpeaker
61+
options: options
7262
)
7363
}
7464

packages/audioplayers_platform_interface/lib/api/audio_context_config.dart

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ class AudioContextConfig {
103103
return AudioContextAndroid(
104104
isSpeakerphoneOn: forceSpeaker,
105105
stayAwake: stayAwake,
106-
contentType: AndroidContentType.music,
107106
usageType: respectSilence
108107
? AndroidUsageType.notificationRingtone
109108
: AndroidUsageType.media,
@@ -118,12 +117,12 @@ class AudioContextConfig {
118117
validateIOS();
119118
}
120119
return AudioContextIOS(
121-
defaultToSpeaker: forceSpeaker,
122120
category: respectSilence
123121
? AVAudioSessionCategory.ambient
124122
: AVAudioSessionCategory.playback,
125123
options: [AVAudioSessionOptions.mixWithOthers] +
126-
(duckAudio ? [AVAudioSessionOptions.duckOthers] : []),
124+
(duckAudio ? [AVAudioSessionOptions.duckOthers] : []) +
125+
(forceSpeaker ? [AVAudioSessionOptions.defaultToSpeaker] : []),
127126
);
128127
}
129128

@@ -141,9 +140,9 @@ class AudioContext {
141140
final AudioContextAndroid android;
142141
final AudioContextIOS iOS;
143142

144-
AudioContext({
145-
required this.android,
146-
required this.iOS,
143+
const AudioContext({
144+
this.android = const AudioContextAndroid(),
145+
this.iOS = const AudioContextIOS(),
147146
});
148147

149148
AudioContext copy({
@@ -178,12 +177,12 @@ class AudioContextAndroid {
178177
final AndroidUsageType usageType;
179178
final AndroidAudioFocus? audioFocus;
180179

181-
AudioContextAndroid({
182-
required this.isSpeakerphoneOn,
183-
required this.stayAwake,
184-
required this.contentType,
185-
required this.usageType,
186-
required this.audioFocus,
180+
const AudioContextAndroid({
181+
this.isSpeakerphoneOn = true,
182+
this.stayAwake = true,
183+
this.contentType = AndroidContentType.music,
184+
this.usageType = AndroidUsageType.media,
185+
this.audioFocus = AndroidAudioFocus.gain,
187186
});
188187

189188
AudioContextAndroid copy({
@@ -214,31 +213,29 @@ class AudioContextAndroid {
214213
}
215214

216215
class AudioContextIOS {
217-
final bool defaultToSpeaker;
218216
final AVAudioSessionCategory category;
219217
final List<AVAudioSessionOptions> options;
220218

221-
AudioContextIOS({
222-
required this.defaultToSpeaker,
223-
required this.category,
224-
required this.options,
219+
const AudioContextIOS({
220+
this.category = AVAudioSessionCategory.playback,
221+
this.options = const [
222+
AVAudioSessionOptions.mixWithOthers,
223+
AVAudioSessionOptions.defaultToSpeaker
224+
],
225225
});
226226

227227
AudioContextIOS copy({
228-
bool? defaultToSpeaker,
229228
AVAudioSessionCategory? category,
230229
List<AVAudioSessionOptions>? options,
231230
}) {
232231
return AudioContextIOS(
233-
defaultToSpeaker: defaultToSpeaker ?? this.defaultToSpeaker,
234232
category: category ?? this.category,
235233
options: options ?? this.options,
236234
);
237235
}
238236

239237
Map<String, dynamic> toJson() {
240238
return <String, dynamic>{
241-
'defaultToSpeaker': defaultToSpeaker,
242239
'category': category.name,
243240
'options': options.map((e) => e.name).toList(),
244241
};

0 commit comments

Comments
 (0)