我对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();
}
但我得到一个错误(第四条消息),我在日志中看到了这个:
无法创建媒体播放器
在状态1中调用prepareAsync,mPlayer(0x0)
开始在状态1,mPlayer(0x0)
中调用错误(-38,0)
答案 0 :(得分:2)
对ACTION标志的意图是在大多数情况下打开另一个应用程序。既然你不需要它。你想要自己的自定义播放器。因此,Android有针对此类场景的Media Player类。
创建它的实例并传递您的stream-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:捕获所有异常并确保清单文件中的PERMISSIONS
答案 1 :(得分:1)
Intent仅用于在活动/服务和系统之间发送一些数据。它不会播放音乐。除了对一些活动说什么,它什么都不做。您需要一种能够播放多媒体流的机制。您应该使用MediaPlayer课程在应用程序中播放多媒体。
这是一些教程,如何播放来自音频的音乐:http://programmerguru.com/android-tutorial/android-mediaplayer-example-play-from-internet/