Initial Volume maxed out to 100% fixed

Android audio is not pausing on other audio source is running
This commit is contained in:
Kingkor Roy Tirtho 2022-07-12 01:35:10 +06:00
parent c898716b06
commit 9db99a07d0
4 changed files with 21 additions and 4 deletions

View File

@ -23,7 +23,6 @@ import 'package:spotube/provider/YouTube.dart';
import 'package:spotube/services/LinuxAudioService.dart'; import 'package:spotube/services/LinuxAudioService.dart';
import 'package:spotube/services/MobileAudioService.dart'; import 'package:spotube/services/MobileAudioService.dart';
import 'package:spotube/utils/PersistedChangeNotifier.dart'; import 'package:spotube/utils/PersistedChangeNotifier.dart';
import 'package:spotube/utils/platform.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart' hide Playlist; import 'package:youtube_explode_dart/youtube_explode_dart.dart' hide Playlist;
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:spotube/extensions/list-sort-multiple.dart'; import 'package:spotube/extensions/list-sort-multiple.dart';
@ -80,6 +79,9 @@ class Playback extends PersistedChangeNotifier {
(() async { (() async {
cache = await Hive.openLazyBox<CacheTrack>("track-cache"); cache = await Hive.openLazyBox<CacheTrack>("track-cache");
await player.setVolume(volume);
_subscriptions.addAll([ _subscriptions.addAll([
player.onPlayerStateChanged.listen( player.onPlayerStateChanged.listen(
(state) async { (state) async {

View File

@ -1,13 +1,23 @@
import 'dart:async'; import 'dart:async';
import 'package:audio_service/audio_service.dart'; import 'package:audio_service/audio_service.dart';
import 'package:audio_session/audio_session.dart';
import 'package:audioplayers/audioplayers.dart'; import 'package:audioplayers/audioplayers.dart';
import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/Playback.dart';
class MobileAudioService extends BaseAudioHandler { class MobileAudioService extends BaseAudioHandler {
final Playback playback; final Playback playback;
AudioSession? session;
MobileAudioService(this.playback) { MobileAudioService(this.playback) {
AudioSession.instance.then((s) {
session = s;
s.interruptionEventStream.listen((event) {
if (event.type != AudioInterruptionType.duck) {
playback.pause();
}
});
});
final _player = playback.player; final _player = playback.player;
_player.onPlayerStateChanged.listen((state) async { _player.onPlayerStateChanged.listen((state) async {
if (state != PlayerState.completed) { if (state != PlayerState.completed) {
@ -31,6 +41,7 @@ class MobileAudioService extends BaseAudioHandler {
} }
void addItem(MediaItem item) { void addItem(MediaItem item) {
session?.setActive(true);
mediaItem.add(item); mediaItem.add(item);
} }
@ -44,7 +55,10 @@ class MobileAudioService extends BaseAudioHandler {
Future<void> seek(Duration position) => playback.seekPosition(position); Future<void> seek(Duration position) => playback.seekPosition(position);
@override @override
Future<void> stop() => playback.stop(); Future<void> stop() async {
await session?.setActive(true);
await playback.stop();
}
@override @override
Future<void> skipToNext() async { Future<void> skipToNext() async {

View File

@ -65,12 +65,12 @@ packages:
source: hosted source: hosted
version: "0.1.1" version: "0.1.1"
audio_session: audio_session:
dependency: transitive dependency: "direct main"
description: description:
name: audio_session name: audio_session
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.6+1" version: "0.1.9"
audioplayers: audioplayers:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@ -64,6 +64,7 @@ dependencies:
dbus: ^0.7.3 dbus: ^0.7.3
audioplayers: ^1.0.1 audioplayers: ^1.0.1
introduction_screen: ^3.0.2 introduction_screen: ^3.0.2
audio_session: ^0.1.9
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: