Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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完全可以从internet流媒体,但不能从本地主机流媒体_Android_Android Mediaplayer - Fatal编程技术网

Android Mediaplayer完全可以从internet流媒体,但不能从本地主机流媒体

Android Mediaplayer完全可以从internet流媒体,但不能从本地主机流媒体,android,android-mediaplayer,Android,Android Mediaplayer,我有一个mediaplayer接收音频流。当我使用互联网流时,这一切都很完美。当我出于测试目的切换到我的mamp本地主机url时。它给了我错误 这是我的代码: private void initMediaPlayer() { mPlayer = new MediaPlayer(); mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); startMP3(URL); } p

我有一个mediaplayer接收音频流。当我使用互联网流时,这一切都很完美。当我出于测试目的切换到我的mamp本地主机url时。它给了我错误

这是我的代码:

  private void initMediaPlayer() {
        mPlayer = new MediaPlayer();
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        startMP3(URL);
    }

    private void startMP3(String URL) {
        if (intialStage) {
            new Player().execute(URL);
        }
    }

    class Player extends AsyncTask<String, Void, Boolean> {

        @Override
        protected Boolean doInBackground(String... params) {
            Boolean prepared;
            try {
                Log.d(TAG, "MP3 URL: " + params[0]);
                mPlayer.setDataSource(params[0]);
                mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        intialStage = true;
                        mPlayer.stop();
                        mPlayer.reset();
                        songPositionHandler.removeCallbacks(UpdateSongTime);
                    }
                });

                mPlayer.prepare();
                prepared = true;
            } catch (IllegalArgumentException e) {
                prepared = false;
                e.printStackTrace();
            } catch (SecurityException e) {
                prepared = false;
                e.printStackTrace();
            } catch (IllegalStateException e) {
                prepared = false;
                e.printStackTrace();
            } catch (IOException e) {
                prepared = false;
                e.printStackTrace();
            }
            return prepared;
        }

        @Override
        protected void onPostExecute(Boolean result) {
            super.onPostExecute(result);
            Log.d(TAG, "Prepared status:" + " " + result);
            mPlayer.start();
            intialStage = false;
            songPositionHandler = new Handler();
            songPositionHandler.postDelayed(UpdateSongTime, 1000);
        }
    }

    private Runnable UpdateSongTime = new Runnable() {
        public void run() {
            Log.d(TAG, "Current sec in song: " + TimeUnit.MILLISECONDS.toSeconds(mPlayer.getCurrentPosition()));
            songPositionHandler.postDelayed(this, 1000);
        }
    };
这给了我一个例外:

09-02 09:17:19.294    1835-1847/com.example.test E/MediaPlayer﹕ error (1, -2147483648)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ java.io.IOException: Prepare failed.: status=0x1
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at android.media.MediaPlayer.prepare(Native Method)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at com.example.test.AudioWaveForm$Player.doInBackground(AudioWaveForm.java:122)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at com.example.test.AudioWaveForm$Player.doInBackground(AudioWaveForm.java:104)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

有人能给我解释一下为什么它使用在线URL而不是my mamp吗?

localhost是您的android主机。如果您正在运行emulator:或指定您的电脑的ip(如果您正在使用android设备),请参阅此

我现在觉得自己很愚蠢。这是初学者的错误。
09-02 09:17:19.294    1835-1847/com.example.test E/MediaPlayer﹕ error (1, -2147483648)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ java.io.IOException: Prepare failed.: status=0x1
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at android.media.MediaPlayer.prepare(Native Method)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at com.example.test.AudioWaveForm$Player.doInBackground(AudioWaveForm.java:122)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at com.example.test.AudioWaveForm$Player.doInBackground(AudioWaveForm.java:104)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-02 09:17:19.294    1835-1848/com.example.test W/System.err﹕ at java.lang.Thread.run(Thread.java:841)