Аудио приложения Flutter не работает через динамик - PullRequest
0 голосов
/ 31 мая 2018

У меня проблемы с тем, чтобы заставить мое приложение флаттера воспроизводить звук через динамики iOS.Я пробовал на нескольких устройствах iOS.Звук воспроизводится через динамики Android, наушники Android и наушники iOS.Я не получаю сообщений об ошибках об этом, и кажется, что звук воспроизводится на основе сообщений журнала, показывающих положение изменения аудиофайла.

Я использую аудиоплеер пакета (https://pub.dartlang.org/packages/audioplayer)

Я даже попытался запустить пример (https://pub.dartlang.org/packages/audioplayer#-example-tab-),, и у меня возникает та же проблема.

Iтакже пытался использовать пакет аудиоплееров (https://pub.dartlang.org/packages/audioplayers). То же самое. Если кто-то может указать мне на любое объяснение ... Я полагаю, мне нужно как-то по умолчанию для ораторов, но я не могу найти документацию о том, каксделайте это во флаттере, и я еще не научился переопределять некоторые аспекты флаттера с помощью собственного кода swift / target C. Если у кого-то есть какие-либо предложения, я бы хотел их услышать.

В приложениижурналы с и без наушников, подключенных к моему iPhone.

С наушниками:

flutter: attempting to play /var/mobile/Containers/Data/Application/1A17D73F-0130-4A6B-A1F4-B44ECAB4EF3E/Documents/English_mit_filler_David.mp3
iOS => call play
iOS => playerId dd4d9d29-2188-4795-abfb-6d785c6c19a7
play!
isLocal: 1 1
volume: 1.000000 1
togglePlay /var/mobile/Containers/Data/Application/1A17D73F-0130-4A6B-A1F4-B44ECAB4EF3E/Documents/English_mit_filler_David.mp3
ios -> updateDuration...nan
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
ios -> onTimeInterval...
player status: 1
ios -> updateDuration...19.435102
ios -> invokechannel
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
ios -> onTimeInterval...
ios -> onTimeInterval...
flutter: _AudioAppState.setDurationHandler => d 0:00:19.435000
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.200000
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.401000
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.600000
ios -> onTimeInterval...

Без наушников:

flutter: attempting to play /var/mobile/Containers/Data/Application/1A17D73F-0130-4A6B-A1F4-B44ECAB4EF3E/Documents/English_mit_filler_Dropbox.mp3
iOS => call play
iOS => playerId 60dc6e8c-4619-4abb-812d-33dcb03f23a8
play!
isLocal: 1 1
volume: 1.000000 1
togglePlay /var/mobile/Containers/Data/Application/1A17D73F-0130-4A6B-A1F4-B44ECAB4EF3E/Documents/English_mit_filler_Dropbox.mp3
ios -> updateDuration...nan
ios -> onTimeInterval...
ios -> onTimeInterval...
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
player status: 1
ios -> updateDuration...28.682449
ios -> invokechannel
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
flutter: _AudioAppState.setDurationHandler => d 0:00:28.682000
ios -> onTimeInterval...
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
flutter: _AudioAppState.setPositionHandler => p 0:00:00.000000
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.201000
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.401000
ios -> onTimeInterval...
flutter: _AudioAppState.setPositionHandler => p 0:00:00.601000
ios -> onTimeInterval...

Похоже на те же журналы для меня, без ошибок на обоих концах. Но это как звук отключен - и я убедился, что режим «Не беспокоить» не включен, режим «Без звука» не включен, я проверил кнопку на кнопку отключения звука сбокутелефон не включен ... у меня есть тзапустил его на эмуляторе через XCode, а затем звук воспроизводился ... Но я не могу понять, как заставить его работать на моих физических устройствах.Спасибо за любой совет!

1 Ответ

0 голосов
/ 01 июня 2018

Мне удалось решить эту проблему с помощью этой ссылки AVAudioSession setCategory error

Я добавил следующий код в файл AudioplayerPlugin.m, созданный в ios / Pods /.символические ссылки / плагины / аудиоплеер / IOS / классы

-(void) togglePlay: (NSString*) url isLocal: (int) isLocal
{
//ADDED START
        NSError *error = nil;
        BOOL success = [[AVAudioSession sharedInstance]
                        setCategory:AVAudioSessionCategoryPlayback
                        error:&error];
        if (!success) {
            NSLog(@"Error setting speaker");
            // Handle error here, as appropriate
        }
//ADDED END
      NSLog(@"togglePlay %@",url );
      if (![lastUrl isEqualToString:url]) {
        [playerItem removeObserver:self
                        forKeyPath:@"player.currentItem.status"];
...