問題タブ [soundpool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android で初めて SoundPool サウンドが再生されないのはなぜですか?
Android で Ogg Vorbis サウンドを再生する際に奇妙な問題が発生し、修正が困難です。SoundPool クラスを使用してサウンドを再生しています。一時停止後に再生する最初の音を除いて、うまく機能します。
私が直面している問題は次のとおりです。いくつかのボタンがあるメニューがあります。ボタンを押すとカチカチ音がします。しかし、初めて再生しようとすると、音が出ません。次に、同じメニューボタンをもう一度押すと、機能します。その後、次のプレスを数秒間遅らせると、問題が再発します。具体的には、次の動作が見られます。
- 数秒待つ
- 音を発するはずのUIボタンをタッチする...音を発しない
- log cat は、「AudioFlinger: 書き込みが 165 ミリ秒ブロックされ、書き込みが 66 回遅延し、スレッド 0xec40」と報告します (UI ボタンを押すとすぐに発生します)
- 数秒待つ
- log cat は、「AudioHardwareQSD: AudioHardware pcm の再生がスタンバイに移行中です」と報告します。
- 音を発するはずのUIボタンをタッチします...音を発しません。
- logcat が「AudioFlinger: 書き込みが 166 ミリ秒ブロックされ、書き込みが 67 回遅延し、スレッド 0xec40」と報告する (UI ボタンを押すとすぐに発生する)
- UI ボタンをもう一度タッチしますが、AudioHardwareQSD スタンバイ メッセージが表示される前に... SOUND WORKS!
HTC Incredible、ルート化された Nook Color、HTC Thunderbolt など、いくつかの異なるデバイスでこの動作を確認したので、デバイス固有のものではないと思います。
これは AudioHardwareQSD がスタンバイ状態になる機能だと思います。スタンバイ状態になると、シュートからの最初のサウンドは無視されますが、その後のサウンドは再びスタンバイ状態になるまで機能します。HTC Incredible では、「書き込みがブロックされました」というメッセージと AudioHardwareQSD メッセージの間に約 3 秒の遅延があります。
これが起こらないようにするために WakeLock を使用することについて説明している StackOverflow here に関する回答があります。その解決策を試しましたが、問題は解決しませんでした。
なぜこうなった?AudioHardwareQSD がスタンバイ状態にならないようにする方法はありますか? これをトラブルシューティングするためのヒントはありますか?
ありがとう!
更新: この問題を修正するかなり大雑把な回避策を実装することができました。私のアプリケーション (ゲーム) には、より健全なレンダリング クラスがあります。ゲーム ロジックによって定期的に実行される新しいメソッド present() を追加しました。このメソッドは、1.5 秒のタイムアウト タイマーを使用します。タイマーが底をつくと、サウンド レンダラーは 50 ミリ秒の無音で構成されるオーディオ ファイルを再生し、タイマーをリセットします。
これで問題が解決しました...最適とはほど遠いですが、機能します。
android - Android - サウンド ファイルの読み込みに時間がかかる
アプリの読み込みに数秒かかっていました。サウンドを追加したので、ロードに 15 秒かかります。それぞれのサイズが約 15KB の 40 個の ogg ファイルをロードしています。これは読み込みコードです:
これを最適化する方法はありますか?
android - Broadcastreceiverコンテキストを渡すには?
特定のSMSを受信したときに特定のサウンド/曲を再生するアプリケーションを開発しています(特定のコンテンツのSMSは「テスト」と言います)。したがって、ユーザーの電話が「test」という内容のメッセージを受信した場合、サウンドを再生する必要があります。Broadcastreceiver
そのため、 SMS の受信時にアクティブになり、特定の必要なコンテンツをチェックする を使用しました。条件が真になった場合にサウンドを再生するためにSoundpool
とを使用しました。AudioManager
しかし、どういうわけか、コードがうまくいきません。可能であれば、見て修正してください。私は間違ったコンテキストなどを使用していると思います...
SoundManager.java:
Broadcastreceiver ファイル - SMSReceiver.java
だから、私は間違っていると思う場所をマークしましたSMSReceiver.java
。コンテキストをgetBaseContext(
)getApplicationContext()
やthis
. しかし、どれもうまく機能していません。「コンテキスト」を使用してもアプリケーションがクラッシュすることはありませんが、サウンドも再生されません。したがって、別のコンテキストを使用する必要があると思います。
詳細が必要な場合はお知らせください。
android - AndroidのSoundPoolでシームレスなループ?
SoundPool クラスを使用して短い (20kb) ギャップのない ogg ファイルをループしようとしていますが、ハードウェアでのテスト中に一貫した結果を得ることができません。エミュレーターを使用すると常に完全に再生されますが、Nexus 1 または Samsumg Galaxy Tab 10.1 でテストすると、すべてのループ ポイントでポップ音またはクリック音が聞こえます。非常に奇妙なのは、アプリケーションが開始されると一貫していても、アプリを再起動するたびにクリックがわずかに異なり、まれに (タブレットではより頻繁に) ループが正しく再生されることです。
MediaPlayer を使用しても結果は良くありません。Androidでオーディオループのギャップレス再生を期待するのは不合理ですか? 確かに誰かが同様の機能を適切に機能させていますか? もしそうなら、それがどのように機能するかの例を見てみたいです。
ありがとう!
loops - SoundPool (SDK 4.0.x) int ループ、ゼロ以外の値はクラッシュを引き起こす
誰か助けてくれませんか。私は使用しています
Android 4.0.x 開発キット
Win 7 64 ビット プラットフォーム
http://www.droidnova.com/creating-sound-effects-in-android-part-1,570.htmlで提供されているコードを使用して
ウェブページで提供されているSoundPoolの例をテストし、SoundPoolを使用して私自身のテストを行いました
Eclipse バージョンを使用しています: Indigo Service Release 1 ビルド ID: 20110916-0149
これが問題です
呼び出すとき
SoundPool .play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
'int loop' が 0 (ゼロ) の場合、すべて問題なく、サウンドは一度だけ完全に再生されます。
ただし、int ループに他の値を指定すると、このエラーが発生します
Sound.Test.namespace AudioFlinger はトラックを作成できませんでした。ステータス: -12
Sound.Test.namespace オーディオ トラックの作成中にエラーが発生しました
これは、エミュレーターと私の電話 Samsung Galaxy Nexus でも発生します。
小さなオーディオ クリップを再生しています。ogg ファイル形式で、長さは 140K です。
私はすべての種類のファイル形式、wav、mp3 を使用しました。これは、私が使用するどのファイル形式でも同じであるため、オーディオ ファイルではありません。小さなサウンド ファイルを無期限にループする必要がありますが、int loop を -1 (またはその他の値) に設定すると、クラッシュが発生します。
1日半費やしたので気が狂いそうです..
何が起こっているか知っている人はいますか?
どうもありがとう、
android - Androidは、複数のアクティビティ間でSoundPoolループを停止します。または、ページを変更するときにすべての再生音を停止します
私はAndroidとJavaを使ってプログラミングを始めて数週間しか経っていませんが、ギターチューナーを作ってギターを耳でチューニングしようとしています。シンプルなリファレンスチューナー。私はそれを構築するためにこのウェブサイトのコードの多くを使用しました。
別のページ/アクティビティをクリックしたときにSoundPoolを停止するにはどうすればよいですか。
現在、2つのページがあり、それぞれに7つのサウンドボタンがあります。いずれかのボタンをクリックすると、別のボタンをクリックするまで無期限にループし、その後ループします。次のページのボタンをクリックしてから新しいボタンをクリックすると、最後のページのサウンドが引き続き再生されます。あなたが耳でギターをチューニングしようとしているときはかなり迷惑です!
たぶん、SoundPool全体を停止するための単純な停止ボタンは良い考えでしょうか?
これが私のSoundManagerコードパッケージorg.gtdb.guitar_tunersです。
これが私のアクティビティコードMain.javaパッケージorg.gtdb.guitar_tunersです。
コードについてお詫びします。私は基本的にJavaとAndroidの初心者なので、混乱していると思うかもしれません。私は他の人々のコードから、そしてlynda.comのビデオを見ることからつなぎ合わせてきました。
私のチューナーの現在のバージョンは市場に出回っていますが、サウンドにループがないため、ページを調べて聞くことができます。しかし、ループがない場合は、ボタンを押し続けてギターをチューニングする必要があります。あなたはここでそれを見ることができます
java - Android: SoundPool でサウンドを無限に再生すると、停止後に 2 回目は再生されない
経由で 2 つのサウンドを再生しようとしていSoundPool
ます。
次のテスト コードは、2 番目の再生を無音でレンダリングしました。これは、HTC Hero デバイスとエミュレーターの両方でサウンドを無限に再生した場合にのみ発生します。私はアンドロイド1.6を使用しています。
android - Android でループが -1 に設定されているとサウンドが再生されない
Android アプリのサウンドを再生するために SoundPool を使用しています。すべてのサウンドはアプリの開始時にロードされ、アプリ自体の遅延を防ぎます。ループに設定されていない限り、すべてのサウンドが正常に再生されます。ループを true (-1 に設定) に設定すると、サウンドは再生されません。
ユーザーの入力に応じて停止および開始する 6 つの異なるサウンドがあります。最初のサウンドは正常に再生されますが、その後のサウンドは再生されません。
停止するのではなく一時停止する、一時停止するのではなくボリュームを 0 に設定し、ループを 0 に設定する、ループを真の繰り返しではなく任意の大きな数に設定する、サウンドをはるかに短くするなど、さまざまな方法を試しましたが、これらのどれもありません。働いています。
私のコードは次のとおりです。
実行時に LogCat に表示されるエラーは次のとおりです。
この厄介な問題の解決策、または私が試していない回避策を知っている人はいますか?
android - Android デバイスでの同時サウンド
私は携帯電話用のシンプルなドラム パッドを開発してきましたが、一度に 2 つのサウンドを再生するとブロックに遭遇しました (つまり、ユーザーが 2 つ以上のドラム サウンドを同時に押したときのマルチタッチ イベント中)。
サウンドを再生するために、SoundPool クラスを使用しています。Point をサウンドにハッシュする HashMap があります。だから私の考えでは、ポイントを押すと、それに対応するサウンドが再生されます。
一度に 2 つのサウンドを再生するには、フォークまたは新しいスレッドを作成する必要があると感じていますが、押したポイントごとに「for each」ループで新しいスレッドを作成するだけで、試した方法では機能しませんでした。
前もって感謝します!-アニーム
編集:
public boolean onTouchEvent(MotionEvent ev) {
android - バックグラウンドミュージックの長さと速度
私のAndroidアプリには、バックグラウンドミュージックが欲しいです。アクティビティを横断する必要がないため、サービスは重要ではありません。
サウンドプールは約6秒後に.oggまたは.mp3の再生を停止するようですMediaPlayerには音楽の速度(レート)を変更する機能がありません
私がやりたいのは、ユーザーが再生中にバックグラウンドミュージックの速度を変更できるようにすることです。SoundPoolはこれを実行できるように見えますが、数秒間しか再生されないため、わかりにくいです。
これを行う方法について何か提案はありますか?