AVAudioPlayer
を使用してサウンドを再生しています。
IPod(iOS7とiOS8の両方)の音量は良好です。
しかし、iPhoneで同じサウンドを再生すると、非常に小さい音量でサウンドが再生されます。
これが私のコードです:
var audioPlayer: AVAudioPlayer?
var soundURL:NSURL? = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound", ofType: "mp3")!)
audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: nil)
audioPlayer?.prepareToPlay()
audioPlayer?.volume = 1
audioPlayer?.play()
私はすでにプロジェクトにAudioToolbox.frameworkライブラリを含めています。
iPhone6および6+でサウンドを改善するにはどうすればよいですか?
[〜#〜]編集[〜#〜]
最近、音が数秒間自動的に増加したことに気付きましたが、何が問題なのかわかりません。
AVAudioPlayerのボリュームを1に設定した場合、問題はシステムボリュームにあると思います。サウンドを再生するときに別のオーディオカテゴリを使用でき、ボリュームは別のカテゴリまたは別のオーディオルート(ネイティブスピーカー、ヘッドセット、Bluetoothなど)で異なります。アプリのデフォルトのカテゴリはambientですが、音楽アプリはplaybackです。サウンドを再生する前ではなく、再生するときに音量を調整してみてください。
音がiPhoneの上部スピーカーから聞こえるため、音量が小さい(通話に使用)。
メインスピーカーへのAVAudioSession出力ポートをオーバーライドする必要があります。(下部スピーカー)
これはオーディオ出力をスピーカーにルーティングするコードです
AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker, error: &error)
Swift 3.:
do {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
} catch _ {
}
Swift 4のソリューション
try? session.setCategory(.playAndRecord, mode: .default, policy: .default, options: .defaultToSpeaker)
P.S。フルクラスの場合は、私の Gist を確認できます
メディアのボリュームも最大化する必要があります。
extension MPVolumeView {
var volumeSlider:UISlider {
self.showsRouteButton = false
self.showsVolumeSlider = false
self.hidden = true
var slider = UISlider()
for subview in self.subviews {
if subview.isKindOfClass(UISlider){
slider = subview as! UISlider
slider.continuous = false
(subview as! UISlider).value = AVAudioSession.sharedInstance().outputVolume
return slider
}
}
return slider
}
}
次に、次のように音量を変更します。
func setMediaVolume(volume : Float) {
MPVolumeView().volumeSlider.value = volume
}
あなたの場合、オーディオを再生する直前にsetMediaVolume(1)を使用してください。
また、現在の音声ルートがイヤホンではなくスピーカーに向かっていることを確認してください。
try! AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)
また、Swiftプレイグラウンドでこれを経験しました。音量は元のファイルのサウンドよりもはるかに小さくなります。音量を上げるだけです。
audioPlayer?.volume = 3