菜鸟教程小白 发表于 2022-12-12 13:48:00

java - 如何使用 Java 从 url 流式传输音乐 - Android


                                            <p><p>我对 Android 开发和一般的 Android 设备完全陌生,所以我不知道这里的情况如何。</p>
<p>我想制作一个应用程序,它可以从我的网址流式传输音乐,并且在我最小化应用程序后仍然播放歌曲。</p>
<p>我搜索了我的问题,但很多答案都是针对 mp3 歌曲或其他类型的,但我的网址来自现场广播,所以它不仅仅是一首歌曲。</p>
<p>我找到的并且对我的问题有好处的答案之一是 <a href="https://stackoverflow.com/questions/8907068/android-how-to-stream-music-using-default-player" rel="noreferrer noopener nofollow">this</a>并使用此代码:</p>
<pre><code>Uri myUri = Uri.parse(&#34;your url here&#34;);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(myUri, &#34;audio/*&#34;);
startActivity(intent);
</code></pre>
<p>这提示我选择音乐播放器。</p>
<p>有什么方法可以只按我的“播放”按钮来听音乐吗?</p>
<p>在我的 iOS 应用程序中,我使用此代码,无需外部播放器即可随时启动和停止流媒体音乐:</p>
<pre><code>func prepareToPlay() {
      
      let url = URL(string: &#34;myUrl&#34;)
      
      playerItem = AVPlayerItem(url: url!)
      
      player = AVPlayer(playerItem: playerItem)
         
      player?.play()
}
</code></pre>
<p>提前致谢</p>
<p><strong>编辑</strong></p>
<p>在评论和回答中提出建议后,我尝试用 <code>MPlayer</code> 播放它,我创建了一个函数,当我像这样点击按钮时调用它:</p>
<pre><code>public void playM() {
    String url = &#34;http://android.programmerguru.com/wp-content/uploads/2013/04/hosannatelugu.mp3&#34;;

    mPlayer = new MediaPlayer();
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
      mPlayer.setDataSource(url);
    } catch (IllegalArgumentException e) {
      Toast.makeText(getApplicationContext(), &#34;You might not set the URI correctly!&#34;, Toast.LENGTH_LONG).show();
    } catch (SecurityException e) {
      Toast.makeText(getApplicationContext(), &#34;You might not set the URI correctly!&#34;, Toast.LENGTH_LONG).show();
    } catch (IllegalStateException e) {
      Toast.makeText(getApplicationContext(), &#34;You might not set the URI correctly!&#34;, Toast.LENGTH_LONG).show();
    } catch (IOException e) {
      e.printStackTrace();
    }
    try {
      mPlayer.prepare();
    } catch (IllegalStateException e) {
      Toast.makeText(getApplicationContext(), &#34;You might not set the URI correctly!&#34;, Toast.LENGTH_LONG).show();
    } catch (IOException e) {
      Toast.makeText(getApplicationContext(), &#34;You might not set the URI correctly!&#34;, Toast.LENGTH_LONG).show();
    }
    mPlayer.start();
}
</code></pre>
<p>但我收到一个错误(第四条消息),我在日志中看到:</p>
<blockquote>
<p>Unable to create media player</p>
<p>prepareAsync called in state 1, mPlayer(0x0)</p>
<p>start called in state 1, mPlayer(0x0)</p>
<p>error (-38, 0)</p>
</blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在大多数情况下,带有 ACTION 标志的 Intent 旨在打开另一个应用程序。既然你不需要它。您想要自己的自定义播放器。所以Android有一个Media Player类来处理这种场景。 <br/></p>

<p>创建它的实例并传递您的流 URL。现在,设置数据源,然后在 <code>onBtnClickListener()</code> 中调用 prepare() 通过调用 <code>mp.start()</code></p> 开始音乐

<pre><code>Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
</code></pre>

<p><br/>
P.S:捕获所有异常并确保 list 文件中的PERMISSIONS</p></p>
                                   
                                                <p style="font-size: 20px;">关于java - 如何使用 Java 从 url 流式传输音乐 - Android,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46777649/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46777649/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: java - 如何使用 Java 从 url 流式传输音乐 - Android