如何停止流式mp3文件

时间:2011-12-02 09:26:39

标签: android streaming mp3 media-player

我已经构建了一个使用mp3文件的应用程序。在第一个版本中,文件包含在apk文件中。我现在正在开发一个在URL资源中包含mp3文件的版本。 我已调整代码,几乎一切正常。 问题是停止,暂停和播放按钮现在不起作用。 这是启动流式传输的代码(工作正常):

private void playAudio(String media) {
    MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

    try {
        mediaPlayer.setDataSource(media);
        mediaPlayer.prepare(); // might take long! (for buffering, etc)
        mediaPlayer.start();

    } catch (Exception e) {
        Log.e(TAG, "error: " + e.getMessage(), e);
    }
    mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
        public void onCompletion(MediaPlayer arg0) {
            finish();
        }
    });

}

这是我用来停止的功能等。使用本地文件(原始资源)工作得很好但是现在它不起作用了:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        Intent intent = new Intent(SpelaSaga.this, VisaIngressSaga.class);
        Bundle bundle = new Bundle();
        bundle.putString("Titel", titel);
        bundle.putInt("Position", position);
        intent.putExtras(bundle);
        SpelaSaga.this.startActivity(intent);
        finish();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

private OnClickListener button_1Listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        mediaPlayer.stop();
        Intent intent = new Intent(SpelaSaga.this, VisaIngressSaga.class);
        Bundle bundle = new Bundle();
        bundle.putString("Titel", titel);
        bundle.putInt("Position", position);
        intent.putExtras(bundle);
        SpelaSaga.this.startActivity(intent);
        finish();

    }
};

private OnClickListener button_2Listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        mediaPlayer.pause();

    }
};

我环顾四周,只找到需要更多编码的旧版流媒体教程。希望有人知道如何控制流媒体。

1 个答案:

答案 0 :(得分:0)

我创建了非常相似的应用,我的代码如下所示:

public void startSound(final String URL) {
    bt.setText("STOP");
    new Thread() {
        public void run() {
            try {
                Uri uri = Uri.parse(URL);

                mp = MediaPlayer.create(PlaySound.this, uri);
                mp.start();
                mp.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer arg0) {
                        bt.setEnabled(true);
                        bt.setText("SŁUCHAJ");
                    }
                });
            } catch (Exception e) {

            }
            myProgressDialog.dismiss();
        }
    }.start();
}

当我按下后退按钮时:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        try {
            mp.stop();
        } catch (Exception e) {

        }
    }
    return super.onKeyDown(keyCode, event);
}

我希望,这个答案可以帮助你;)