• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:48:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我对 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap