21

を使用してビデオを再生したいのですMPMoviePlayerControllerが、Youtubeのビデオプレーヤーの動作と同様に、ミュートスイッチを無視したいと思います。

何か案は?

4

5 に答える 5

49

AVAudioSessionカテゴリを使用するAVAudioSessionCategoryPlaybackと、アプリはYouTubeアプリのようにミュートスイッチを無視します。

例(コメントのKen Pletzerに触発された):

#import <AVFoundation/AVFoundation.h>

// note: you also need to add AVfoundation.framework to your project's 
// list of linked frameworks
NSError *error = nil;
BOOL success = [[AVAudioSession sharedInstance] 
                setCategory:AVAudioSessionCategoryPlayback 
                error:&error];
if (!success) {
    // Handle error here, as appropriate
}
于 2011-02-08T22:33:17.587 に答える
2
_player.useApplicationAudioSession = NO;
于 2012-05-02T12:53:39.970 に答える
2

Swiftの場合:サウンド/ビデオを再生する前に(たとえば、アプリケーションの最初に)これを1回実行します。

do{
  try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
  //Didn't work
}
于 2016-07-26T12:39:57.063 に答える
2

将来的には、これはすでに回答済みですが、アプリで動画を再生する際に問題が発生し、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.
}
于 2017-07-27T13:02:02.497 に答える
1

AVFoundationをインポートした後、これをデリゲートに配置します。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlaybackエラー:nil];

于 2012-11-14T08:43:26.870 に答える