0

didReceiveMemoryWarningオーディオプレーヤーを強制終了する前に、を利用してアプリで再生されている音楽をフェードアウトする方法を探しています。システムの音量に影響を与えずに(または、少なくともシステムの音量をリセットして)、音楽をフェードさせてメモリからプレーヤーを削除したいのですが、iOS5以降のみをサポートする必要があります。

ここで質問する理由は次のとおりです。

  1. 私は実際に音楽を再生しているコードにアクセスできません。それはサードパーティのフレームワークにあります(したがって、私の唯一の解決策はシステムの音量の調整にフォールバックすることだと思います)。
  2. 私がこれまでに見つけたすべてのソリューションは、かなり古く、ハック的であり、および/またはアプリストアなどに受け入れられないことについての警告があります。

iPhoneのオーディオをフェードさせる許容できる方法はありますか?

4

2 に答える 2

1

少なくともプレーヤーにアクセスする方法を見つけた場合は、次の方法でこれを行うことができます。

で実行while-loop

-(void)fadeOut
{
    while (data.volume > 0) {
        data.volume = data.volume - 0.1;
    }
    [data stop];
    data = nil;
}

または、タイマーを使用します。

- (void)fadeOutWithTimer
{
    if (data.volume > 0.1) {
        data.volume = data.volume - 0.1;
        [self performSelector:@selector(fadeOutWithTimer) withObject:nil afterDelay:0.05];
    } else {
        [data stop];
        data = nil;
    }
}
于 2012-08-06T18:16:42.277 に答える
0

許可されたAPIの領域内では、ユーザーのみがシステムボリュームを制御できます。アプリがそれを調整する方法はありません。おっしゃるように、これらの他のAPIへのアクセスはアプリストアでは許可されておらず、ジェイルブレイクされたデバイスが必要になる場合があります。

どのサードパーティフレームワークを使用していますか?内部で標準のオーディオプレーヤーを使用しているかどうかを確認できますAVAudioPlayerか?もしそうなら、あなたはそれをそのように修正することができるかもしれません。

更新:ランディが以下で指摘しているように、iPodの音量を制御することで実際にこれを行うことができます。

[[MPMusicPlayerController iPodMusicPlayer] setVolume:0.05];
于 2012-08-06T17:41:43.140 に答える