我对 Android 开发和一般的 Android 设备完全陌生,所以我不知道这里的情况如何。
我想制作一个应用程序,它可以从我的网址流式传输音乐,并且在我最小化应用程序后仍然播放歌曲。
我搜索了我的问题,但很多答案都是针对 mp3 歌曲或其他类型的,但我的网址来自现场广播,所以它不仅仅是一首歌曲。
我找到的并且对我的问题有好处的答案之一是 this并使用此代码:
Uri myUri = Uri.parse("your url here");
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(myUri, "audio/*");
startActivity(intent);
这提示我选择音乐播放器。
有什么方法可以只按我的“播放”按钮来听音乐吗?
在我的 iOS 应用程序中,我使用此代码,无需外部播放器即可随时启动和停止流媒体音乐:
func prepareToPlay() {
let url = URL(string: "myUrl")
playerItem = AVPlayerItem(url: url!)
player = AVPlayer(playerItem: playerItem)
player?.play()
}
提前致谢
编辑
在评论和回答中提出建议后,我尝试用 MPlayer 播放它,我创建了一个函数,当我像这样点击按钮时调用它:
public void playM() {
String url = "http://android.programmerguru.com/wp-content/uploads/2013/04/hosannatelugu.mp3";
mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.setDataSource(url);
} catch (IllegalArgumentException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (SecurityException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IllegalStateException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
try {
mPlayer.prepare();
} catch (IllegalStateException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
}
mPlayer.start();
}
但我收到一个错误(第四条消息),我在日志中看到:
Unable to create media player
prepareAsync called in state 1, mPlayer(0x0)
start called in state 1, mPlayer(0x0)
error (-38, 0)
Best Answer-推荐答案 strong>
在大多数情况下,带有 ACTION 标志的 Intent 旨在打开另一个应用程序。既然你不需要它。您想要自己的自定义播放器。所以Android有一个Media Player类来处理这种场景。
创建它的实例并传递您的流 URL。现在,设置数据源,然后在 onBtnClickListener() 中调用 prepare() 通过调用 mp.start() 开始音乐
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
P.S:捕获所有异常并确保 list 文件中的PERMISSIONS
关于java - 如何使用 Java 从 url 流式传输音乐 - Android,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/46777649/
|