[android-group-japan: 3847] Xperiaでの効果音再生

702 views
Skip to first unread message

raiso

unread,
Apr 20, 2010, 10:04:59 AM4/20/10
to 日本Androidの会
はじめまして、raisoと申します。

現在、楽器アプリを開発しております。
Xperiaにて効果音の再生を行うと、再生までに若干の遅延が発生しており困っております。

MediaPlayer(OGG)、JetPlayer(SMAF)、SoundPool(OGG)の3種類で確認したのですが、全てで再生開始(停
止)に遅延が発生しました。(括弧内は使用したフォーマットです)
また、連続して再生を行うとさらに遅延が大きくなります。

HT-03Aでは同様の事象は発生していないため、Xperia固有の問題なのかと考えております。
どなたか情報をお持ちの方がいましたらご教示ください。
お願いいたします。

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

櫻井覚司

unread,
Apr 20, 2010, 10:36:48 AM4/20/10
to android-g...@googlegroups.com

Xperiaはやっぱり動作か遅いてききましたけど・・そこが今後の課題ですかねー!?

2010/04/20 23:08 "raiso" <rai...@gmail.com>:

田代透

unread,
Apr 20, 2010, 12:08:36 PM4/20/10
to android-g...@googlegroups.com
鳴らすときに、メディアプレイヤーを用意してから、鳴らすとはしていませんよね。

前もってメディアプレイヤーを用意しておいて鳴らすと、ラグが少ないとどこかで見た記憶があります。


2010年4月20日23:36 櫻井覚司 <golfcomm...@gmail.com>:

m.akiyama

unread,
Apr 20, 2010, 1:08:44 PM4/20/10
to android-g...@googlegroups.com
こんばんは
秋山です。

Xperia で 音の再生がおくれる件ですが
イヤフォン装着していると気にならなくならいでしょうか。
(内部スピーカーの時だけ
遅い気が...)

解決策ではないですが、こういったこともあるかと思いメールしてみました。

raiso

unread,
Apr 21, 2010, 10:15:32 AM4/21/10
to 日本Androidの会
情報ありがとうございます。

>櫻井さん
スペックはHT-03Aと比べて格段によくなっているので満足しております。
ただ、YouTubeや音楽などの音の再生に関しては遅延が気になるという話も聞きます。
アップデートで対応できるのであれば早めに対応されてほしいですね。

>田代さん
メディアプレイヤーは事前に用意してから再生しております。
同じことをHT-03Aで試すと気にならないレベルなので、単純に性能差というわけでもなさそうです。

>秋山さん
イヤホンを装着して試してみましたが特に変化はありませんでした。
内部スピーカーだけ遅くなるというのは気になりますね。


再生処理は以下のように実装しております。

@Override
public boolean onTouchEvent(MotionEvent event) {
// タッチアクションの時に音を鳴らす
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
// 再生処理
(MediaPlayerオブジェクト).start(); // またはSoundPool.play()等
}
}

体感として、繰り返して画面をタッチすると1回目はタッチの時に音が鳴るのですが、
2回目以降はタッチリリースの時に音が鳴るような感じです。

引き続き情報を募集いたしております。
宜しくお願いいたします。


On 4月21日, 午前2:08, "m.akiyama" <m.akiyama....@gmail.com> wrote:
> こんばんは
> 秋山です。
>
> Xperia で 音の再生がおくれる件ですが
> イヤフォン装着していると気にならなくならいでしょうか。
> (内部スピーカーの時だけ
> 遅い気が...)
>
> 解決策ではないですが、こういったこともあるかと思いメールしてみました。
>
> raiso <rais...@gmail.com>:

RYO IKUYAMA

unread,
Apr 22, 2010, 2:23:13 AM4/22/10
to android-g...@googlegroups.com
いくやまといいます。

xperiaのOnTouchEvent側に問題あるのかもしれませんね。
getPreasure()やgetSize()が実装されてないことからも疑いたくなってしまいました。

一度ハードボタンで試してみたらいかがでしょうか。



2010/4/21 raiso <rai...@gmail.com>:

kinokorori

unread,
Apr 21, 2010, 7:27:32 AM4/21/10
to 日本Androidの会
kinokororiです。

返信として適切ではないかもしれませんが……。
SoundPoolはこんなことやっているから、
こういうのが原因じゃないかなという感じで、参考程度に。

SoundPoolのloadは、楽曲データをデコードしてPCMデータに変換し、
それを最大1MBのヒープ領域に格納する処理を行っています。
戻り値のSampleIDは、格納先のヒープ番号です。
なので、loadを毎回呼び出すと、再生が遅れます。

loadを1回しかコールしていない場合、当然playで余計なオーバーヘッドが発生していることになります。
playでは、基本的に、
load時に保管したPCMデータを、SampleIDから探索し、
見つかったデータをそのままハードウェアに渡して再生を行っているだけです。
そのため、重いデコード処理がなく、軽い部類の処理で構成されています。
それでも気になるほどの遅延が発生するとなると、
1.再生用スレッドの立ち上がりが遅い
2.ハードウェア的なオーディオレイテンシが大きい
3.XperiaのAndroid Platformでは、独自の処理をplayに追加している
あたりが原因として絞られるのではないかと思います。
3に関しては、例えば、生のPCMデータをアプリケーションが取得できないように、
スクランブルをかけているなどが考えられます。

検証は、共有ライブラリを使ったNDK開発をしないとわからないと思います。
ソニエリに聞くのが一番早いかもしれませんが……。

raiso

unread,
Apr 22, 2010, 1:48:46 PM4/22/10
to 日本Androidの会
>いくやまさん
早速ハードキーに再生処理を割り当てて試してみました。
使用したハードキーはメニューキーとカメラキーの2つです。
結果としては特に改善された点はありませんでした。

>kinokororiさん
SoundPoolについて詳しい説明ありがとうございます。
loadは1回しか呼んでいないので、1~3が原因として考えられるのでしょうね。
一度ソニエリに質問をしてみようと思います。


いくつか楽器アプリや音が鳴るアプリをダウンロードして自分のものと比べて違いがないか調べてみました。

○Solo Lite (ギターアプリ)
 遅延は発生しているが、自分のものと比べるとあまり気になりませんでした。
 演奏方法の違いもありますが、体感として遅延があるとはわかりにくいです。

○AK47
 マシンガンを撃つアプリです。
 引き金部分をタッチすることで音が鳴り、押下し続けると連射されます。
 音はキレイに再生され遅延は一切感じられませんでした。

再生する音声ファイルのサイズや長さ、ビットレートでも違いは出てくるのかなと考えています。
ひとまずはソニエリに質問してその回答を待ってみようと思います。
Reply all
Reply to author
Forward
0 new messages