0

我正在构建一个安卓应用程序。如果它存在于我的 /res/raw 文件夹中,我只想播放一个 wav 文件。以下代码不起作用,因为 f.exists() 始终评估为 false:

    String filePathString = "android.resource://"+_context.getPackageName()+"/res/raw/oldphone_mono.wav";
    File f = new File(filePathString);

    java.io.InputStream inputStream = _context.getResources().openRawResource(com.hello20.R.raw.oldphone_mono);


    if(f.exists()) {

        Uri ringUri = Uri.parse(filePathString);

        _ring = new MediaPlayer();
        _ring.setDataSource(_context, ringUri);

        final AudioManager audioManager = (AudioManager) _context.getSystemService(Context.AUDIO_SERVICE);
        if (audioManager.getStreamVolume(AudioManager.STREAM_RING) != 0) {
            _ring.setAudioStreamType(AudioManager.STREAM_RING);
            _ring.setLooping(true);
            _ring.prepare();
            _ring.start();
        }

我还应该做些什么来完成这项工作?

4

1 回答 1

1

尝试通过其他方式加载 wav:

 _ring=MediaPlayer.create(_context,R.raw.oldphone_mono);
 _ring.start();
 _ring.setLooping( true );

评论 1

在我的情况下,您不需要使用_ring.prepare();. MediaPlayer.create照顾

评论 2

此外,由于您从原始加载 wav 资源,因此不需要if(f.exists())声明

于 2013-08-30T21:32:49.283 回答