Подтвердить что ты не робот

Как заставить MPMoviePlayerController игнорировать переключатель отключения звука

Я хочу воспроизвести видео с помощью MPMoviePlayerController, но я хочу, чтобы он игнорировал переключатель отключения звука, аналогичный поведению видеопроигрывателя Youtube.

Любые идеи?

4b9b3361

Ответ 1

Используйте категорию AVAudioSession AVAudioSessionCategoryPlayback, и ваше приложение будет игнорировать переключатель отключения звука, как приложение Youtube.

Например (вдохновленный Кен Плетцером в комментариях):

#import <AVFoundation/AVFoundation.h>

// note: you also need to add AVfoundation.framework to your project 
// list of linked frameworks
NSError *error = nil;
BOOL success = [[AVAudioSession sharedInstance] 
                setCategory:AVAudioSessionCategoryPlayback 
                error:&error];
if (!success) {
    // Handle error here, as appropriate
}

Ответ 2

_player.useApplicationAudioSession = NO;

Ответ 3

После импорта AVFoundation просто поместите это в свой делегат:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];

Ответ 4

в Swift: сделайте это один раз, прежде чем воспроизводить звук/видео (например, в начале вашего приложения)

do{
  try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
  //Didn't work
}

Ответ 5

Для всех в будущем я знаю, что на это уже был дан ответ, но у меня возникла проблема с воспроизведением видео в моем приложении, которое вызвало такие приложения, как spotify, youtube и т.д., чтобы перестать воспроизводить звук, поэтому я в конечном итоге использую это

NSError *silentSwitcherror = nil;
BOOL silentSwitchSuccess = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&silentSwitcherror];
if (silentSwitchSuccess)
{
//put whatever video code you are trying to play
}
else
{
//put how to handle failed instances.
}