Java Android通用音频资源对象

Java Android通用音频资源对象,java,android,kotlin,Java,Android,Kotlin,我有一个自定义的AudioPlayer类来处理在我的应用程序中播放音频的问题,它在引擎盖下使用android类 它当前有一个方法playsource:MediaDataSource。这需要一些通用的源对象,它可以发挥,所以我决定使用这似乎是正确的 如何从资源(例如R.raw.my_audio_文件)获取MediaDataSource,以便自定义AudioPlayer类可以使用它?或者MediaDataSource是这里使用的错误类型,如果是,我应该使用什么其他类型?一种可能性是使用: 本地资源/

我有一个自定义的AudioPlayer类来处理在我的应用程序中播放音频的问题,它在引擎盖下使用android类

它当前有一个方法playsource:MediaDataSource。这需要一些通用的源对象,它可以发挥,所以我决定使用这似乎是正确的


如何从资源(例如R.raw.my_audio_文件)获取MediaDataSource,以便自定义AudioPlayer类可以使用它?或者MediaDataSource是这里使用的错误类型,如果是,我应该使用什么其他类型?

一种可能性是使用:

本地资源/资产的字符串路径可能通过以下方式转换为路径/URI:


如果您有web端点,这也适用于此。

AudioPlayer不是我搜索文档时使用的一般android类。你用的是什么类?@JoxTraex我有一个定制的音频播放器类啊,我看到了,但是它的基类是什么?我之所以这么问,是因为这将为你如何通过super提供的API与媒体交互定义标准,除非你在做所有的低级解码。另一个问题是不清楚谁生成MediaDataSource,因为文档中提供的API非常简单。您可以使用MediaPlayer将资源翻译成URI。@JoxTraex我已经编辑了我的问题。我使用的是安卓MediaPlayer,它几乎可以正常工作。我现在有一个名为URI的URI。使用MediaPlayer.createcontext,uri可以工作,但我不想每次都创建一个新实例,所以当我使用MediaPlayer.setDataSourceuri.toString时,不会播放音频。也许我使用setDataSource时出错了,所以我会继续查看it@DavidCallanan我相信一旦你创建了它,你只需要再次调用setDataSource,它就会重用同一个对象并解码新的数据源。您不需要每次都调用create。区别在于,当您使用create时,它已经将数据源设置为该URI。没有规则说你不能让那个对象加载一个新的数据源。让它工作吧!我使用了.setDataSourcectx,uri而不是.setDataSourceuri.toString。非常感谢您的帮助!:没关系,它不起作用了。我的应用程序正在崩溃,没有错误消息。可能只是一个小错误,对了,终于成功了,忘了打电话。准备好。再次感谢