【发布时间】:2019-04-04 23:59:53
【问题描述】:
我有一个为用户流式传输音乐的应用程序,此代码在运行最高 API 25 的 Android 设备上运行良好,当我在运行 API 26 或更高版本的设备上测试时,音乐不会播放,也不会显示错误消息,附上我使用 API 28 设备时的日志。
我尝试过的:
- MediaPlayer.setAudioStreamType(int streamtype) 已弃用,因此我为 26 以上的 API 实现了 AudioAttributes
- 不同类型的 mp3 文件,但它们在 api 25 及更低版本中播放相同,当我尝试使用 API 26 的设备或模拟器时,没有任何反应
-
在文档和示例中搜索,但看起来都一样,我发现我的代码没有区别
private void playMusic() { try { mMediaPlayer.reset(); // For Android API 26 (Android 8 Oreo) and newer, specify AudioAttributes. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { Log.d("Record", "setAudioAttributes()"); AudioAttributes.Builder builder = new AudioAttributes.Builder(); builder.setUsage(AudioAttributes.USAGE_MEDIA); builder.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC); AudioAttributes attributes = builder.build(); mMediaPlayer.setAudioAttributes(attributes); } else { Log.d("Record", "setAudioStreamType()"); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } mMediaPlayer.setDataSource(String.format("http://www.server.com/mp3/%s.mp3", mp3File)); mMediaPlayer.prepareAsync(); mMediaPlayer.start(); } catch (IOException e) { Log.d("Record", "error playing mp3"); e.printStackTrace(); } }
日志
2019-04-04 17:51:38.911 2947-24864/com.roneskinder.karaoke
V/MediaPlayer: resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
2019-04-04 17:51:38.911 2947-24864/com.roneskinder.karaoke V/MediaPlayer: cleanDrmObj: mDrmObj=null mDrmSessionId=null
2019-04-04 17:51:38.913 2947-3054/com.roneskinder.karaoke D/EGL_emulation: eglMakeCurrent: 0xe830ce20: ver 3 0 (tinfo 0xe8315bd0)
2019-04-04 17:51:38.915 2947-24864/com.roneskinder.karaoke V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@aa03fa3): Cookies: null
2019-04-04 17:51:38.920 2947-4147/com.roneskinder.karaoke V/MediaHTTPService: makeHTTPConnection: CookieHandler (java.net.CookieManager@ead45b3) exists.
2019-04-04 17:51:38.920 2947-4147/com.roneskinder.karaoke V/MediaHTTPService: makeHTTPConnection(android.media.MediaHTTPService@aa03fa3): cookieHandler: java.net.CookieManager@ead45b3 Cookies: null
【问题讨论】:
标签: android android-mediaplayer android-8.0-oreo