Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaPlayer可以从web播放音频文件,但不能播放.ape、.flac大尺寸音频?_Android - Fatal编程技术网

Android MediaPlayer可以从web播放音频文件,但不能播放.ape、.flac大尺寸音频?

Android MediaPlayer可以从web播放音频文件,但不能播放.ape、.flac大尺寸音频?,android,Android,我使用android mediaplayer从web播放音频文件,它可以播放.mp3音频,但不能播放.ape、.flac、.wma音频 我在不同的android设备(android 6.0+)上试用了我的应用程序,只有一台设备可以播放所有音频格式,我发现.ape、.flac文件非常大。这些文件超过20m,所以我试着测试一个小的.flac音频,所有设备都可以播放它 private void prepareMusic(String uriString) throws IOException

我使用android mediaplayer从web播放音频文件,它可以播放.mp3音频,但不能播放.ape、.flac、.wma音频

我在不同的android设备(android 6.0+)上试用了我的应用程序,只有一台设备可以播放所有音频格式,我发现.ape、.flac文件非常大。这些文件超过20m,所以我试着测试一个小的.flac音频,所有设备都可以播放它

    private void prepareMusic(String uriString) throws IOException {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.reset();
        mediaPlayer.setDataSource(this, Uri.parse(uriString));
        mediaPlayer.prepare();
        //mediaPlayer.prepareAsync();
        //mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        //@Override
        //public void onPrepared(MediaPlayer mp) {
        //    Log.i(TAG, "prepared...");
        //    playMusic();
        // }
        //});
    }

这些格式需要Android中不包含的编解码器。换句话说:应用程序应该支持这种编解码器。这些格式需要Android中不包含的编解码器。换句话说:应用程序应该支持这种编解码器。
    private class MusicAsyncTask extends AsyncTask<String, Object, Object> {
    @Override
    protected Object doInBackground(String... strings) {
        try {
            String uri = HttpUtil.MUSIC_URL + Util.encodeURL(strings[0]);
            Log.i(TAG, uri);
            prepareMusic(uri);
        } catch (IOException e) {
            e.printStackTrace();
            Log.e(TAG, e.getLocalizedMessage());
        }
        return null;
        }

        @Override
        protected void onPostExecute(Object o) {
            playMusic();
        }
    }
java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer._prepare(Native Method)
at android.media.MediaPlayer.prepare(MediaPlayer.java:1313)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:784)