我已经构建了一个使用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();
}
};
我环顾四周,只找到需要更多编码的旧版流媒体教程。希望有人知道如何控制流媒体。
答案 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);
}
我希望,这个答案可以帮助你;)