Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java-Android从url流式播放音乐_Java_Android_Ios_Audio_Stream - Fatal编程技术网

如何使用Java-Android从url流式播放音乐

如何使用Java-Android从url流式播放音乐,java,android,ios,audio,stream,Java,Android,Ios,Audio,Stream,我对Android开发和Android设备都是全新的,所以我不知道这里的情况如何 我想做一个应用程序,将从我的url流式播放音乐,并在我最小化应用程序后仍播放歌曲 我搜索了我的问题,但很多答案都是mp3歌曲或其他类型的,但我的url来自现场广播,所以它不是一首歌 我发现的一个对我的问题有帮助的答案是并使用了以下代码: Uri myUri = Uri.parse("your url here"); Intent intent = new Intent(android.conte

我对Android开发和Android设备都是全新的,所以我不知道这里的情况如何

我想做一个应用程序,将从我的url流式播放音乐,并在我最小化应用程序后仍播放歌曲

我搜索了我的问题,但很多答案都是mp3歌曲或其他类型的,但我的url来自现场广播,所以它不是一首歌

我发现的一个对我的问题有帮助的答案是并使用了以下代码:

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)中调用start

错误(-38,0)


意图仅用于在活动/服务和系统之间发送一些数据。它不会播放音乐。它什么都不做,除了告诉某些活动该做什么。您需要播放多媒体流的机制。您应该使用类在应用程序中播放多媒体


这里有一些教程,介绍如何从流中播放音乐:

在大多数情况下,Intent with ACTION flag用于打开另一个应用程序。既然你不需要它。您需要自己的自定义播放器。所以Android有一个媒体播放器类来处理这些场景

创建它的实例并传递流URL。现在,在
onBtnClickListener()
中设置数据源,然后调用prepare(),通过调用
mp.start()



注意:捕获所有异常并确保清单文件中的权限

您的服务器使用的是什么?@commonware它使用的是httpAFAIK,这不够具体--请参阅我链接到的文档。欢迎您将URL交给
MediaPlayer
,看看它是否有效。@如果需要,请检查我的编辑。“无法创建媒体播放器”=>似乎您没有在清单中添加权限”“我尝试过,但不起作用,如果你想查看我的编辑,你在页面末尾看到添加权限代码了吗?当我检查所有操作是否正常时,我注意到第一次播放“播放”按钮时,音乐开始播放8秒,然后停止大约10秒,之后(不按任何按钮或最小化应用程序)音乐播放不停止。。
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();