【问题标题】:Getting invalid attributes error when playing sound with MediaPlayer使用 MediaPlayer 播放声音时出现无效属性错误
【发布时间】:2020-05-29 18:52:02
【问题描述】:

当我打电话给mediaPlayer.start() 时,我的应用突然没有声音了。

我在日志中收到以下错误:

2020-05-29 20:43:57.165 4719-1953/? E/AudioSystem: invalid attributes { Content type: AUDIO_CONTENT_TYPE_UNKNOWN Usage: AUDIO_USAGE_UNKNOWN Source: -1 Flags: 0x800 Tags:  } when converting to stream

应用启动时我正在执行此操作:

mMediaPlayer = MediaPlayer.create(context, R.raw.restaurant_order_received)

感谢您的帮助

【问题讨论】:

    标签: android audio attributes android-mediaplayer


    【解决方案1】:

    您需要提供资源 ID。试试这个:

    var resID = context?.resources?.getIdentifier("YOUR_FILE_NAME", "raw", context.packageName)
    
    resID?.let {
        // No fike found when it == 0
        if (it == 0) {
            val errorString = "Error occured."
            Snackbar.make(view, errorString, 2000).show()
            return
        }
        mediaPlayer = MediaPlayer.create(context, it)
        mediaPlayer?.start()
        return
    }
    

    【讨论】:

    • 太好了,它对我有用,非常感谢。
    • 我看不出这有什么帮助。答案显示MediaPlayer.create(context, it),这与问题的MediaPlayer.create(context, R.raw.restaurant_order_received) 相同。唯一改变的是获取资源 ID 的方式。
    【解决方案2】:

    我没有配置属性...

    那么就这样做吧:

    mMediaPlayer = MediaPlayer()
    mMediaPlayer.setAudioAttributes(AudioAttributes.Builder()
        .setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
        .setLegacyStreamType(AudioManager.STREAM_MUSIC)
        .setUsage(AudioAttributes.USAGE_ALARM)
        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
        .build())
    mMediaPlayer.setDataSource(context, Uri.parse("android.resource://com.mypackage.name/raw/restaurant_order_received"))
    mMediaPlayer.isLooping = true
    mMediaPlayer.prepare()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多