【问题标题】:MediaPlayer loading sound from Uri not workingMediaPlayer 从 Uri 加载声音不起作用
【发布时间】:2020-12-06 12:15:20
【问题描述】:

我有一个简单的录音机应用程序。当用户录制某些内容时,它会保存在外部存储中,然后从那里播放。

除了搭载 Android 6 的华为 P8 Lite 智能手机外,一切正常。

这是我播放声音的方式:

    Thread th=new Thread(new Runnable() {
        @Override
        public void run() { 
            try {
                MediaPlayer mp = new MediaPlayer();
                mp.setDataSource(view.getContext(), uri);
                mp.prepare();
                mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        mp.release();
                    }
                });

                mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        mp.start();
                    }
                });

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //send message to handler
        }
    });
    th.start();

此时 Uri 确实存在,并且该文件也确实存在于目标中。为什么我的 mediaPlayer 没有播放任何内容?权限是在它尝试创建 MediaPlayer 时给出的,因此它不应该是权限问题。

我在 logcat 中得到的只是:

W/MediaPlayer-JNI: MediaPlayer finalized without being released 
I/MediaPlayer: setDataSource(34, 0, 576460752303423487) 
I/MediaPlayer: [HSM] stayAwake true uid: 10255, pid: 22592 
E/MediaPlayer: error (-19, 0) 
E/MediaPlayer: Error (-19,0)

就像我说的,它在我测试的所有其他设备(Android 10 和 Android 9)上都能正常工作

编辑

这是我尝试过的: 我创建了从 API 18 到 30 的每个 API 级别的模拟器,它在每个模拟器上都可以正常工作。 我将华为 P8 Lite 智能手机重置为出厂设置。 我检查了声音文件是否正确保存,以及当我在保存它的文件夹中导航时是否可以手动打开并播放它(它工作得很好,所以它与保存声音的代码无关) 我真的没有想法了。

希望有人能帮忙,谢谢!

【问题讨论】:

    标签: java android audio android-mediaplayer android-external-storage


    【解决方案1】:

    您需要异步进行播放器准备。 player. prepare() 替换为以下代码:

    player.prepareAsync()
    

    【讨论】:

    • 不起作用。将代码放在 mainThread 上时使用 prepareAsync()。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多