0
Thumbsup

いい質問だ

0

Thumbsdown

うーん

【Android】window遷移時のサウンドについて

saebashi
saebashi 30

投稿日:2015-05-05 07:35:39

OS Android
TiSDK 3.5.1

iOSのアプリをAndroidに移植しているのですが
Titanium.Media.createSoundで作ったクラスで音楽や効果音を再生する際。
新しいWindowを開くと音楽が停止しています。
allowBackgroundをtrueすることも試みたのですが、新しいwindowを開いて数秒経つととまってしまうみたいです。
また、ボタンを押して効果音を鳴らしwindowを開く際も、新しいwindowを開いたせいか効果音が途中で途切れてしまうみたいです。
目的としては、簡単なソシャゲーもどきのようなゲームを作っていて、画面ごとにBGMを流したい、同じ曲を流す場合は途切れないようにBGMを続けたい、ボタンを押した際などにBGMとは別に効果音を鳴らしたいという感じです。

初めてのandroid開発でつまづいてしまっています...
よろしければどなたかご教授お願いいたします。



回答

saebashi
saebashi
30

Thumbsup

いい回答

1

Thumbsdown

うーん



滅茶苦茶無理矢理ですが、allowBackgroundを有効にし、setInterval()にサウンドのplayingおよび指定ディレクトリを監視させて、変更や停止した際に発火するようにしました。
キモい実装ですがとりあえずこれで様子を見ます。
むずかしいですね...。

yagi_さま、ありがとうございました。


yagi_
yagi_
2540
Tcad_icon Tcmd_icon Tce_icon

Thumbsup

いい回答

1

Thumbsdown

うーん



結構悩ましい問題ですね。

AndroidはWindowの一つ一つが独立したActivityと呼ばれる単位で動作しているので発生している現象です。実際、Javaで書いても起きるので、プラットフォームに合わせた解決策が必要になります。

いくつかやり方はあると思うのですが、たとえばServiceを使ってバックグラウンドで再生するという方法もあります。

https://developer.appcelerator.com/question/178732/background-music-for-android-app

でもこれはあまり筋がいいとはいえないかもしれません。

Javaで書くならスタティックなMusic Manager的なクラスを用意して対応するのがいいと思います。

http://stackoverflow.com/questions/2097909/playing-bg-music-across-activities-in-android


yagi_さま ご回答頂きありがとうございます。どうやら結構難しいみたいですね...。 androidも不慣れで、javaも書けないんで。他に解決策があるとしたら、windowの代わりにフルサイズのViewをつくって一つのwindow内でadd()やremove()でやりくりするとかでしょうか? --- saebashi

Serviceでバックグラウンドのタスクとして再生させるとANRの対象になるのがリスクで、Viewのaddやremoveだと管理が大変そうなのが問題ですね。どちらを取るかはアプリの内容次第だと思います。 --- yagi_

ログインすると回答することができます。