0

AVAudioPlayer と AVAudioSession を使用して、iPhone アプリのバックグラウンドでオーディオを実行しました...

今私の問題は、ユーザーからの入力として多数の曲を受け取り、AVAudioPlayerを使用して次々と再生するコードが既にあることです...

問題は、ファイルの1つが再生されている間にアプリがバックグラウンドに移動すると、オーディオは継続しますが、完了すると音が消えることです...ファイルが完了したときにフォアグラウンドで、私はいくつかのコードを実行して次のものですが、バックグラウンドではこれは不可能です...

これを完了させてコードを実行する時間を要求することを考えましたが、音声ファイルは常に変更され、長くなる可能性があるため、これを行うことはできません...どうすればよいか教えてください? バックグラウンド オーディオとして実行される組み込みのプレイリスト プレーヤーはありますか? または他の解決策はありますか?私は本当にこれを機能させる必要があります...

どうもありがとう

4

3 に答える 3

2

私は同じ問題に遭遇しましたが、まだ完全には解決していません。audioDidFinishPlaying デリゲート メソッドは引き続き起動し、UIAplication の beginBackgroundTask を使用して AVaudioPlayer の新しいインスタンスを作成したり、AVAudioSession がまだアクティブであることを確認したりできます。ただし、新しい AVAudioPlayer インスタンスを再生しようとすると、すぐに一時停止します。私の疑い/恐怖は、バックグラウンドからオーディオを開始する方法がなく、アプリケーションの状態遷移が発生したときにのみ再生を続けることです。しかし、私は間違っているのが大好きです。

于 2010-10-22T22:44:37.747 に答える
0

これは簡単です..オーディオセッションを使用している場合は、カテゴリを変更するだけです...

http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategories/AudioSessionCategories.html

リンクにはカテゴリがあります...これらのいずれかを使用すると、バックグラウンドでサウンドを開始できます: AVAudioSessionCategoryPlayback kAudioSessionCategory_MediaPlayback

  • 周囲のものは機能しない可能性があります。
于 2012-08-26T00:02:20.303 に答える
0
//ViewController.h ,write below code
@interface ViewController :   UIViewController<AVAudioRecorderDelegate,AVAudioPlayerDelegate>

//assign property to player
 @property(nonatomic,retain) AVAudioPlayer *player;

//then write in ViewController.m file in ViewDidLoad Method below code

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

NSError *soundError;
NSString *path=[[NSBundle mainBundle]pathForResource:@"soundFileName" ofType:@"mp3"]; //.mp3 file for player
NSURL *file=[[NSURL alloc]initFileURLWithPath:path]; //path
_player=[[AVAudioPlayer alloc]initWithContentsOfURL:file error:&soundError];       //player Object

if(_player == nil)
{
    NSLog(@"player is empty because of %@",soundError);
}
else
{
    [_player play];
    _player.volume=1.0;
    [_player setDelegate:self];
}

// プレーヤーを停止するには、 // [_player stop]; を使用できます。// 停止したい場合は、この行のコメントを外してください。

于 2015-05-19T07:40:05.603 に答える