.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.07 2012

サウンド再生のチカラワザ

8月は花火大会、夏祭り、私のバースデーと目白押しな一ヶ月
そんな熱中症予備軍・大量光合成中のUTOです。

今回はAVAudioPlayerを使ったサウンド再生において
ちょいと特殊な手法をまとめてみました。


ケース1
カメラのシャッター音のようにマナーモード時でも音を鳴らす(日本仕様なだけなんですけどね…シャッター音)

アプリ内でサウンド再生において、音量設定の影響をうけてしまうのですが
まずマナーモードにされていても音を鳴らす方法です。

AVAudioPlayer* audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
[audioPlayer play];


AVAudioSessionのカテゴリにてAVAudioSessionCategoryPlaybackを指定して再生すると
マナーモードを無視して再生されます。

ケース2
カメラのシャッター音のように音量を0にされても強制的にボリュームを最大にして音を鳴らしたい

いや、これって使い方がかなり限定的な気がしますが、
AVAudioPlayerのvolumeプロパティは、現在のマスター音量に対して0.0〜1.0にて0%〜100%の音量で再生することになり、そのマスター音量を調整できないのです。
マスター音量を調整するには2つやり方があって、

1.音楽プレイヤークラスを使ってメディアボリュームを調整する
2.ボリューム調整ビューを作成してスライダーで調整する

となります。(調べた限り…)

強制的にマスター音量を調整するには以下の方法にて可能です

MPMusicPlayerController* musicPlayerController = [MPMusicPlayerController applicationMusicPlayer];
// MAX VOLUME
[musicPlayerController setVolume: 1.0f];


実行するとあることに気づかれると思います。


そう、音量調整の小さな画面が表示されてしまいます。

IMG.png

そこでチカラワザでこいつを非表示にしてあげます。

2であげたボリューム調整ビューを画面に追加します。

MPVolumeView* volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
[volumeView setShowsVolumeSlider: YES];
[self.view addSubview: volumeView];
[volumeView release];


画面に追加されたタイミングで、
音量調整時の画面が表示されません。

ただし、本体のボリューム調整のボタンを押下しても表示されなくなりますので
必要ない画面での乱用は避けたほうがいいかもしれません

今回ボリューム調整ビューをCGRectZeroで作成しているので画面上には表示されないですが、
きちんとビューを作成すれば、スライダーが表示され、音量調整の値がフックされて反映されます。

設定画面や音楽プレイヤーアプリのボリューム設定のような感じですね。

まぁ強制的に音を鳴らすなんて対応は基本的にはしないでしょう
自前でカメラのシャッター音対応するくらいでしょうかね
関連記事
スポンサーサイト

Comment

shige
ありがとうございます!
すごい参考になりました。
感謝。
2013.05.05 11:33

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/239-b9b5abbb

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。