私は台湾出身です。あなたの許しに感謝します。私の英語はかなり基本的です。
iPadアプリを作って、コミュニケーションボードの一種であるApp Store(話すのが苦手な人のためのAAC)に公開しました。メインビューにはいくつかのボタンがあり、ユーザーが1つをタッチすると、アプリはそのボタンに対応するmp3サウンドを再生します。すべてのmp3ファイルをフォルダーに配置し、実行時に動的に再生するファイルを決定しました。
最近、このアプリのAndroidバージョンのビルドに取り組んでいますが、ビューの1つのボタンをタッチすると、MediaPlayerが対応するボタンだけでなく、フォルダー内の残りのすべてのmp3ファイルを再生し続けるという問題が発生します。継続的に。iPad版の開発では発生しません。誰かがこの問題を解決し、MediaPlayerが適切に機能するように設定するのを手伝ってくれますか?
PS。私はすべてのMP3ファイルをいくつかのサブフォルダーに置き、それらを「アセット」フォルダーに置きました。なんらかの理由で、すべてのmp3ファイルが数値のファイル名(例:0123223.mp3)を使用しており、再生するMP3は、ユーザーがどのボタンを押したかによって異なるため、R.raw.0123223を使用できないのはRクラスに数値で名前を付けたメンバーを含めることはできませんが、ターゲットmp3ファイルはコンパイル時ではなく実行時にしか判別できないため、res/rawフォルダーを使用できません。
私のコードは次のとおりです。
private void PlayMP3(String mp3File) throws IOException {
AssetFileDescriptor afd = this.getAssets().openFd(mp3File);
MediaPlayer player = new MediaPlayer();
player.setOnCompletionListener(new OnCompletionListener(){
public void onCompletion(MediaPlayer mp) {
System.out.println(mp.getAudioSessionId() + " finished.");
}
});
player.setDataSource(afd.getFileDescriptor());
player.setLooping(false);
player.prepare();
player.start();
}
PlayMP3のパラメータ「mp3file」は、ユーザーがタッチアップしたボタンによると、mp3ファイルパスの連結文字列です。
どうもありがとう!