質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3579閲覧

swift4.2 アプリを開いた時の音楽再生の継続

mogiruri

総合スコア37

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/02/11 00:44

編集2019/02/11 02:08

こんにちは。

アプリ作成途中で、一つ解決したいものにぶつかってしまいgoogleから答えを引っ張り出せなかったので質問させていただきます。

音楽を再生しながらアプリを開いた時曲が停止してしまうのですが、停止させずに続行させる方法はありますでしょうか。アプリを開いた後に再度再生することは可能ですが、止めないようにしたいです。

これはデフォルトで起こる現象、もしくは私のコードが干渉しているのでしょうか?
どちらかはわかりかねますが、コードが膨大ですので関与していそうな viewdidload だけ記載いたします。

いい方法があれば、よろしくお願いいたします。

swift

1import UIKit 2import AVFoundation 3 4class ViewController: UIViewController, AVAudioPlayerDelegate { 5 6 //audio 7 var audioPlayer: AVAudioPlayer! 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 //------------- default Setting ------------- 13 audioSetting() 14 self.titleField.delegate = self 15 } 16 17func audioSetting(){ 18 19 print("audiosetting") 20 // get the path of audio file 21 let audioPath = Bundle.main.path(forResource: "alerm", ofType: "mp3")! 22 let audioURL = URL(fileURLWithPath: audioPath) 23 24 //create a player 25 var audioError: NSError? 26 do{ 27 audioPlayer = try AVAudioPlayer(contentsOf: audioURL) 28 }catch let error as NSError{ 29 audioError = error 30 audioPlayer = nil 31 } 32 33 //when error occures 34 if let error = audioError{ 35 print("Error (error.localizedDescription)") 36 } 37 38 audioPlayer.delegate = self 39 audioPlayer.prepareToPlay() 40 }

追記

どうやら再生が止まってしまうのは仕様のようで、以下のコードで解消できるそうですが、

swift

1try! AVAudioSession.sharedInstance().setCategory(AVAudioSession.category.ambient)

4.2では .setCategory が機能しないようです("setCategory" is unavailable in Swift)。

参考記事
参考記事1
参考記事2

4.1にダウンするか、object-Cだと動くようですが、、、。

模索中ですが、他に何か策があればよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

4.2では .setCategory が機能しないようです("setCategory" is unavailable in Swift)。

こちらで置き換えれば良いのではないでしょうか?

setCategory(_:mode:options:)
https://developer.apple.com/documentation/avfoundation/avaudiosession/1771734-setcategory

例)
try AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default)

※modeやoptionの意味は理解していませんが(^_^;)

投稿2019/02/11 07:43

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogiruri

2019/02/17 14:04

諸事情により遅くなりましてすみません!おかげさまで、苦労しましたが上手いことできました!アドバイスありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問