0

AVAudioPlayerを使用してバックグラウンドで音楽を再生するiOSプログラムを作成します。しかし、一定時間後に音楽をシャットダウンする方法がわかりません。UILocalNotification私はメソッドで音楽を停止するためにを使用しようとします:

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notification

しかし、この方法は、ユーザーが通知を受け取り、クリックしてシャットダウンした後にのみ効果的です。

一定時間後に音楽を自動的に停止するにはどうすればよいですか?

4

2 に答える 2

2

AVAudioPlayerの代わりにAVPlayerを使用する場合は、 addBoundaryTimeObserverForTimes:queue:usingBlock:

私はこれをAVQueuePlayer(AVPlayerのサブクラス)で試しましたが、うまくいきました。

次のようなものを試してください。

id observer = [avPlayer addBoundaryTimeObserverForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:CMTimeMake(60, 1)]] queue:NULL usingBlock:^{
        [avPlayer pause];
    }];

そしてどこか後で:

[avPlayer removeTimeObserver:observer];
于 2012-12-17T03:22:29.650 に答える
0

私は間違っていると証明されたいのですが、あなたが求めていることは不可能かもしれないと私は信じています。私の印象では、ユーザーが実際にホームボタンをクリックしてアプリをバックグラウンドに送信すると、タイマーを実行できないため、「スリープタイマー」として機能できなくなります。Apple自身のアプリはこの種のことを行うことができますが、それらには特別な特権があります。

たとえば、次のアプリを見てください。

https://itunes.apple.com/us/app/music-sleep-timer/id320583424?mt=8

彼が「このアプリをフォアグラウンドに保つことを忘れないでください」と言っている様子を見てください。明らかに、アプリがバックグラウンドになると、タイマーが機能しなくなるためです。

AppleのClockアプリのカウントダウンタイマーを使用するようにユーザーにアドバイスする方がよい場合があります。それはあなたの音楽をシャットダウンし、デバイスをスリープ状態にすることができます。

于 2012-12-17T02:14:53.710 に答える