前提・実現したいこと
Delphi 10.3.2を使ってiOS上でwavファイルを再生するプログラムを作っています。
iOS 12.4の端末では、問題なく再生されますがiOS 13.2の端末では音が再生されません。
端末がマナーモードでないことを確認し、音量も最大にして試しました。
また、例外も発生しておりません。
どの様に変更すれば、iOS 13.2の端末で正常に再生されるようになりますでしょうか。
八方ふさがりで途方に暮れております。
ヒントだけでも頂けると大変ありがたいです。
よろしくお願いいたします。
該当のソースコード
Delphi
1procedure TFormMain.Button1Click(Sender: TObject); 2var 3 fname: String; 4 newAVAudioPlayer: AVAudioPlayer; 5begin 6 fname := 'wavファイルへのパス'; 7 8 if FileExists(fname) = false then begin 9 ShowMessage(fname + ' is not found'); 10 end; 11 12 newAVAudioPlayer := TAVAudioPlayer.Create; 13 newAVAudioPlayer.initWithContentsOfURL(StrtoNSUrl(fname), nil); 14 newAVAudioPlayer.prepareToPlay; 15 newAVAudioPlayer.play; 16end;
試したこと
似たような症状を探したところ以下が見つかり、
AVAudioPlayerの宣言方法を変更すれば良いらしいという事は分かりましたが
AVAudioPlayerの変数をグローバル変数で宣言するなど試しましたが改善は見られませんでした。
https://stackoverflow.com/questions/58105462/app-crashes-when-playing-audio-on-ios13-1
該当のソースコード
また、newAVAudioPlayer.initWithContentsOfURLの第2引数でエラーを取得したいのですが、
以下で試すとShowMessageの行でAccessViolationが発生してしまいます。
恐らく根本的に間違っているのだと思うのですが・・・
こちらも併せてご教示いただけると大変助かります。
Delphi
1procedure TFormMain.Button2Click(Sender: TObject); 2var 3 fname: String; 4 newAVAudioPlayer: AVAudioPlayer; 5 error: NSError; 6begin 7 fname := 'wavファイルへのパス'; 8 9 error := TNSError.Create; 10 11 newAVAudioPlayer := TAVAudioPlayer.Create; 12 newAVAudioPlayer.initWithContentsOfURL(StrtoNSUrl(fname), error); 13 14 ShowMessage(NSStrToStr(error.localizedDescription)); 15 16 newAVAudioPlayer.prepareToPlay; 17 newAVAudioPlayer.play; 18end;
補足情報(FW/ツールのバージョンなど)
開発環境:Delphi10.3.2
検証端末:iPhone7(iOS 12.4)、iPhone7 plus(iOS 13.2)
回答1件
あなたの回答
tips
プレビュー