安卓系统,如何通过编程播放WAV文件

10

我已经在我的目录中有一个.wav文件。 同时,我需要与一个mp3文件一起播放它。 我使用了:

String recordedFile = "/storage/sdcard0/PINOYKARAOKE/1373597371359.wav";

MediaPlayer recordedSong = new MediaPlayer();
try{
recordedSong = MediaPlayer.create(ctx, Uri.fromFile(recordedFile));
recordedSong.prepare();
recordedSong.start();
}
catch(Exception e){
}

错误:创建失败并抛出IOException异常

3个回答

11
尝试创建一个叫做“raw”的文件夹,把你的文件放进去,然后使用它。
public void number(int num, Context ctx) {
                 AssetManager am;
        try {
            am = ctx.getAssets();
            AssetFileDescriptor afd = am.openFd("android.resource://"+getPackageName+"/"+R.raw.your_file_name);
            player = new MediaPlayer();
            player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
                    afd.getLength());
            player.prepare();
            player.start();
            player.setOnCompletionListener(new OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    mp.release();
                }

            });
            player.setLooping(false);
                    } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }

如果你从未使用过int num参数,为什么要将其作为参数使用? - Windgate
@Windgate 可能他为了这个问题删除了不重要的逻辑,但没有更改方法签名,以便在不破坏整个项目的情况下进行测试 :) - Tamim Attafi

7

我尝试了@aangwi的答案,但出现了FileNodeFoundException错误。

final AssetFileDescriptor afd = myactivity.getResources().openRawResourceFd(R.raw.your_file);
final FileDescriptor fileDescriptor = afd.getFileDescriptor();
MediaPlayer player = new MediaPlayer();
try {
    player.setDataSource(fileDescriptor, afd.getStartOffset(),
    afd.getLength());
    player.setLooping(false);
    player.prepare();
    player.start();
} catch (IOException ex) {
    LOGGER.error(ex.getLocalizedMessage(), ex);
}

1
谢谢,这对我有帮助! - bsam

4
这对我有用(Kotlin):
val mediaPlayer = MediaPlayer.create(
                    context,
                    R.raw.sound)
mediaPlayer.start()

我在/Resources中没有创建/raw文件夹,但即使我创建了它并将一个名为sound.wav的文件存储在其中,这也不会为我创建R.raw.sound ID,因此我的应用程序无法播放它。 - Windgate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接