質問

あなたの助けが必要です。アプリのサウンドボリュームを変更するにはどうすればよいですか。ボリュームスライダーを使用したくありません。代わりに、ボリュームノブであるUIImageViewがあり、時計回りに回転して増加し、音量を減らすために時計回りになります。回転は単なるアニメーションであり、私はすでにその部分をやっています。

ボリュームを増やす/減らす方法について、あなたの助けとアドバイスが必要です。ありがとう

役に立ちましたか?

解決

私は注意してください setValueMPVolumeView おそらく更新以外は何もしないので 外観 スライダーのものは、実際のデバイスボリュームレベルではありません。代わりに電話する必要があります _commitVolumeChange プライベートAPIであり、おそらくアプリを拒否される可能性があります。

ボリュームを制御する方法に対する短い答え:それは本当にあなたが何を制御しようとしているかに依存します。

「アプリ内のすべてのサウンドをコントロールする」種類のコントロールが必要な場合は、 MPVolumeView しかし、あなた できません プログラムで価値を変更します。その後、スライダーをタッチで移動するか、デバイスの側面にあるボリュームボタンを使用することによってのみ、ボリュームを変更できます。最善のことは、サウンドを再生する前に、オブジェクトのいずれかが読み取ることができるボリュームレベルを保存するグローバルオブジェクトを作成することです。

それが AVAudioPlayer オブジェクト、オブジェクトを作成して使用します [theAudioPlayerObject setVolume: someFloat]; どこ someFloat 0.0〜1.0の値です。

それがaの場合 SystemSound オブジェクト、ボリュームを制御できません。

それが AudioQueue あなたはそれを介してそれを変更するでしょう AudioQueueSetParameter

私が言ったように..それはすべてに依存しています どうやって あなたはサウンドを演奏しています。

コメントに基づいて更新

その特定の例について, 、次のようなボリュームを設定します。

AudioStreamer.hファイルに追加します

- (void)setVolume:(float)Level;

AudioStreamer.mファイルに追加します

- (void)setVolume:(float)Level
{

    OSStatus errorMsg = AudioQueueSetParameter(audioQueue, kAudioQueueParam_Volume, Level);

    if (errorMsg) {
        NSLog(@"AudioQueueSetParameter returned %d when setting the volume.", errorMsg);
    }

}

ボリュームノブがどこにあるかについては、ビューコントローラーに追加します(これは.mファイルになります。これをカップルのuibutonsとして本当にすばやく実行しました。独自に行う必要があります)。特定の値のボリューム(フロートとして0.0から1.0を通過できます)

- (IBAction)volumeUp:(id)sender
{

    [streamer setVolume:1.0];

}

- (IBAction)volumeDown:(id)sender
{

    [streamer setVolume:0.0];

}

他のヒント

私はこれをAppleのコードのバグと見なし、バグレポートと直接の両方で彼らにそれを報告しましたが、彼らはその機能を主張しているので、あなたもそれから利益を得るかもしれません。

次のコードを使用して、アプリケーションのボリュームを変更します。

[[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume];

これは、サウンドを再生するか、そのようにアクティブに設定することによって、オーディオセッションを確立した後にのみ機能します。

[[AVAudioSession sharedInstance] setActive:YES error:NULL];

mediaplayer.frameworkとavfoundation.frameworkが必要であり、ボリュームは0.0〜1.0の間であることに注意してください。

さて、最小回転(R1)と最大回転(R2)を取ります。次に、します rotation / (R2 - R1) スライダーのように%を取得するには。

編集:
ボリュームの変更をコミットするには、次を追加します。

MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame: self.view.bounds];
[systemVolumeSlider setHidden:YES];
[systemVolumeSlider setUserInteractionEnabled:NO];
[self.view addSubview:systemVolumeSlider];

(必ずリリースしてください systemVolumeSliderdealloc)

次に、ボリュームが変更されたら、使用します setValue その価値を設定します。また、ユーザーがデバイスのボリューム+/-ボタンを押すと何が起こるかを処理する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top