スポンサーサイト

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

【Swift】音を鳴らす

Swiftで音を鳴らしてみる。
この手のプログラムは簡単にできるようで割とはまりポイントがあったりするのでいろんなサイトをぐるぐる回って時間がかかってしまいがち。
「できた」方法を下記に記す。


import AVFoundation
//import UIKitの下にでも書く

var audioPlayer: AVAudioPlayer?
func playsound(){
   //この関数を音を鳴らしたい場所で呼び出して使う
if let path = NSBundle.mainBundle().pathForResource("sound", ofType: "mp3") {
audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: path), fileTypeHint: "mp3", error: nil)
if let sound = audioPlayer {
sound.prepareToPlay()
sound.play()
}
}
}


以上なのだが、
var audioPlayer: AVAudioPlayer?
を関数の外で宣言しなければいけないらしいのが1つめのはまりポイント。
そして、実行テストの時に「テスト用の端末が音がなる状態になっていること」も重要。
これも1つのはまりポイントなので、効果音がなる既存のアプリで音がなることを確かめてからテストすべし。
ちなみに上記は
sound.mp3
というファイルを参照している。
もちろんこのファイルが存在しないとエラーになるのでご注意を。


【追記】
オーディオ周りでハマるポイントとして「バックで流していた音楽が止まる」ということがある。
つまり、ユーザーが音楽を聞きながらアプリを立ち上げたら聞いていた音楽の再生が止まるということ。
この手のトラブルは入念にテストを繰り返さないと気づかないことがある。
もちろんそのような仕様にしたい場合は話は別だが、もし簡単な効果音を流したいだけなら下記のようにすればいい。

func playsound(){
var soundIdRing:SystemSoundID = 0
let soundUrl = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("sound", ofType:"mp3")!)
AudioServicesCreateSystemSoundID(soundUrl, &soundIdRing)
AudioServicesPlaySystemSound(soundIdRing)
}


これで再生出来る最大音声長は30秒とのこと。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

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