kotlin Android Automotive无法创建媒体播放器,setDataSource失败

f45qwnt8  于 2022-12-13  发布在  Kotlin
关注(0)|答案(1)|浏览(136)

我一直在尝试使用一个简单的音频播放器的android自动和只是流音频从一个链接。但当函数被调用的媒体播放器无法设置数据源从url。它会返回以下错误。
编码:

class HelloWorldScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
    val mGridIcon = IconCompat.createWithResource(
        carContext, R.drawable.mainscreenlogo
    )

    val gridItemCar = GridItem.Builder()
        .setTitle("Car Info")
        .setImage(
            CarIcon.Builder(mGridIcon).build(),
            GridItem.IMAGE_TYPE_LARGE
        ).setOnClickListener(this::player).build()
    val gridList = ItemList.Builder()
        .addItem(gridItemCar).build()
   return GridTemplate.Builder()
        .setSingleList(gridList)
        .build()
}
private fun player(){
    var mediaPlayer = MediaPlayer()

    var audioUrl = "https://url"

    var customUri: Uri = Uri.parse(audioUrl)

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)
    mediaPlayer.setAudioAttributes(
        AudioAttributes. Builder()
            .setUsage(AudioAttributes.USAGE_MEDIA)
            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
            .build()
    )
    if(!mediaPlayer.isPlaying){
        try {

            mediaPlayer.setDataSource(audioUrl)
            mediaPlayer.prepareAsync()
            mediaPlayer.setOnPreparedListener {
                mediaPlayer.start()
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
        Log.d("Player" , "Audio started playing..") }
    else {
        if (mediaPlayer.isPlaying) {
            mediaPlayer.stop()
            mediaPlayer.reset()
            //  mediaPlayer.release()
            Log.d("Player" , "Player Released")
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC)

        } else {
            Log.d("Player" , "Audio not played.. Check Error")
        }
    }
}}

我使用了播放器函数来调用播放器。
错误:
E/媒体播放器本机:无法创建媒体播放器W/系统。错误:java.io.IOException:设置数据源失败。错误:状态= 0x 80000000带有系统错误:在Android上。媒体。媒体播放器。nativeSetDataSource(本地方法)W/系统。错误:系统错误:系统错误:系统错误:您好,欢迎访问我们的网站。如果您有任何问题,请与我们联系。如果您有问题,请与我们联系。在创建会话(CarAppService.java:283)时出现系统错误:系统错误:在androidx.car.app.CarAppBinder$$ExternalSyntheticLambda6.dispatch(未知来源:8)中使用系统。错误:系统错误:在androidx.car.app.utils.RemoteUtils$$ExternalSyntheticLambda2.run(未知源代码:6)上运行系统错误:在Android操作系统上。处理程序。句柄回调(Handler.java:883)时出现系统错误:
系统错误:系统错误:系统错误:在java.lang.reflect.方法.invoke(本机方法)中出现系统错误:在运行时初始化$MethodAndArgsCaller.run(运行时初始化. java:492)时出现系统错误:请访问安卓系统内部操作系统。
我这样做错了吗,如果是这样的话,一个如何在android auto中播放音频的小代码指南将会非常感谢。谢谢。

k7fdbhmy

k7fdbhmy1#

从技术上讲,这是由于我自己的错误,没有在清单中添加网络权限。结果是,我使用的Mediaplayer和HLS链接都在汽车仿真器中得到了很好的支持。如果有人看到这个问题,请确保正确添加网络权限。谢谢。

<uses-permission android:name="android.permission.INTERNET"/>

<application....

android:usesCleartextTraffic="true" .../>

相关问题