6144


[マナーモードでも音を鳴らすコード（Swift）について](https://ja.stackoverflow.com/questions/6045/%E3%83%9E%E3%83%8A%E3%83%BC%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A7%E3%82%82%E9%9F%B3%E3%82%92%E9%B3%B4%E3%82%89%E3%81%99%E3%82%B3%E3%83%BC%E3%83%89-swift-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)  
と似ている質問ですが、これはユーザーがマナーモードにした場合の質問です。  
もうひとつ音を出さないようにする方法があり、ボリューム設定を０（ミュート）にした場合の質問です。

現在、動画保存アプリを作成していますが、撮影ボタンをタップされたときに、  
音（標準のカメラの音が望ましい）を出すようにしたいと思ってます。

マナーモードでは音を鳴らすことはできましたが、音量を小さく（０にする）するとやはり音が出なくなります。

撮影ボタンが押されたときには、ボリューム設定が０であっても確実に音を出したいと思ってますが、どのようにしたらよいのでしょうか？  
どなたか、アドバイスをお願いいたします。

[code]

    var audioSession = AVAudioSession.sharedInstance()
    audioSession.setCategory(AVAudioSessionCategoryPlayback, error: nil)
    audioSession.setActive(true, error:nil)
    
    //再生する音源のURLを生成.
    let soundFilePath : NSString = NSBundle.mainBundle().pathForResource("aaa", ofType: "mp3")!
    let fileURL : NSURL = NSURL(fileURLWithPath: soundFilePath)!
    
    //AVAudioPlayerのインスタンス化.
    myAudioPlayer = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
    //AVAudioPlayerのデリゲートをセット.
    myAudioPlayer.delegate = self
    
[/code]

撮影ボタン押下時

[code]

    myAudioPlayer.play()
    
[/code]


CC BY-SA 3.0
2015-02-06T10:50:32.267
6068
2015-02-09T04:12:46.490
2017-04-13T12:52:38.920
-1
7571
question
ios swift
ボリューム設定が０（ミュート）であっても音を鳴らす方法

[code]

    AudioServicesPlaySystemSound(1108)
    
[/code]

これでシステムのシャッター音を鳴らすことができます。  
試したらサイレントモードだろうがボリューム0だろうが鳴りました。  
特別扱いのサウンドなのかもしれません。

サイレントモードでもシャッター音が鳴るのは日本のiOSの独自仕様のようで、もしかすると他の国のiPhoneだとサイレントモードの時に鳴らないかもしれません。

次の方法で無理やり端末のボリュームを最大にすることもできます。

[code]

        // import MediaPlayer が必要
        let volumeView = MPVolumeView()
        for view in volumeView.subviews {
            if view is UISlider {
                (view as UISlider).value = 1.0
                break;
            }
        }
    
[/code]

ただし、いい方法ではないですね。

フレームワークに用意されたクラスの中身を闇雲に操作してるので、とりあえずiOS8では動きましたが、他のOSバージョンでどうなるか分かりません。  
よっぽどの事情がなければ使わない方がいいと思います。


CC BY-SA 3.0
2015-02-08T08:55:07.430
6144
2015-02-08T16:11:45.357
2015-02-08T16:11:45.357
8148
8148
6068
answer