OGeek|极客世界-中国程序员成长平台

标题: java - 如何使用 Java 从 url 流式传输音乐 - Android [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 13:48
标题: java - 如何使用 Java 从 url 流式传输音乐 - Android

我对 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-推荐答案


在大多数情况下,带有 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4