0

バックグラウンドミュージックを常に再生する必要があるアプリケーションを作成しています。アプリケーションの起動時に音楽の再生を開始し、モーダル ビュー コントローラーを閉じるまでは問題ありません (アプリのメイン画面に戻るためにこれを行います)。この時点で、音楽が突然停止し、音量を調整しようとすると、実際には「呼び出し音」と表示されます.... 5〜10秒後に「音量」に戻り、音楽を再び起動できます.

誰かがこの問題に遭遇しましたか? 問題の原因を特定するのに非常に苦労しています...

編集: これが音楽の再生を開始する方法です (theData は私の共有データ オブジェクトです)

NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"bg" ofType:@"mp3"]; 

theData.backgroundMusicPlayer =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicPath] error:nil];

theData.backgroundMusicPlayer.delegate = self;

[theData.backgroundMusicPlayer prepareToPlay];

[theData.backgroundMusicPlayer play];

theData.backgroundMusicPlayer.numberOfLoops = -1; 

アプリには 2 つのシーンがあります。セグエを実行してシーン 1 からシーン 2 に移動し、次に戻るには次のコードを使用します。

 [self dismissModalViewControllerAnimated:NO];
 [theScene removeSubviews];  

メソッド removeSubviews:

[fbInfoView removeFromSuperview];
[logoView removeFromSuperview];
 self.captureSession=nil;  // ending AVCaptureSession
4

1 に答える 1

1

どのように作成および設定するかは明確ではありませんがtheData、この目的にはシングルトンオブジェクトを使用することをお勧めします。このようなもの:

@interface MySingleton : NSObject {

}
+(MySingleton*)sharedHelper;
-(void)playMusic;
@end

実装:

@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;

+(MySingleton*)sharedHelper
{
    if (!_sharedMySingleton)
        [[self alloc] init];

    return _sharedMySingleton;

    return nil;
}

+(id)alloc
{
    NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
    _sharedMySingleton = [super alloc];
        return _sharedMySingleton;
    }

    return nil;
}

-(id)init {
    self = [super init];
    if (self != nil) {
        // initialize stuff here
    }

    return self;
}

-(void)playMusic
{
   // your code
}

    @end

そしてそれをこのように呼んでください:

[[MySingleton sharedHelper] playMusic];
于 2012-08-29T18:50:08.873 に答える