Android MediaPlayer 支援直接以網路 URI 播放線上音頻,無需先下載到本地。以下示範正確串流播放流程。
Button playBtn = findViewById(R.id.play);
Button stopBtn = findViewById(R.id.stop);
MediaPlayer mp = new MediaPlayer();
playBtn.setOnClickListener(v -> {
try {
mp.reset();
mp.setDataSource("YOUR_MP3_URL_HERE"); // 例如 https://example.com/audio.mp3
mp.prepareAsync(); // 非同步準備,避免阻塞 UI
} catch (IOException e) {
e.printStackTrace();
}
});
mp.setOnPreparedListener(mediaPlayer -> mediaPlayer.start());
stopBtn.setOnClickListener(v -> {
if (mp.isPlaying()) {
mp.stop();
mp.reset();
}
});
在 AndroidManifest.xml 加入網路存取權限:
<uses-permission android:name="android.permission.INTERNET" />
prepareAsync() 而非 prepare(),防止主執行緒阻塞導致 ANR。OnErrorListener 處理網路錯誤或格式不支援。release() 並設為 null。此方式適用於 MP3、AAC 等常見串流格式,簡單高效。