android - 媒体播放器 : Should have subtitle controller already set: KitKat

标签 android android-mediaplayer android-4.4-kitkat

我遇到了一个奇怪的问题,我的音频文件有时会播放,有时不播放。问题是,当它决定不玩时,DDMS 会给我一个:

E/MediaPlayer﹕ Should have subtitle controller already set

因为这是一对一的音乐不播放,我已经确定这可能是问题......

如果音乐没有播放并且我按下音量按钮,它就会开始播放。 如果我等待大约 30 秒没有播放,它会重新开始(不循环)。

这是怎么回事?我正在使用 KitKat

        player = new MediaPlayer();
        AssetFileDescriptor afd = null;
        try {
            afd = getAssets().openFd("Theme.mp3");
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            player.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        player.setLooping(true); //restart playback end reached
        //player.setVolume(1, 1); //Set left and right volumes. Range is from 0.0 to 1.0
        player.start(); //start play back

最佳答案

查看 previous discussion在 StackOverflow 上,以及引用的 Android commit在引入这一点的地方,上面的代码可能没有完全初始化 MediaPlayer 对象。

KitKat example code对于媒体播放,建议您调用:

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

在你构造 MediaPlayer 之后,在你调用它的 setDataSource 方法之前。

关于android - 媒体播放器 : Should have subtitle controller already set: KitKat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21790824/

相关文章:

Android kitkat webview css 定位

安卓模拟器 : could not get wglGetExtensionsStringARB

android - Android 19 中未显示通知

android - Android L : "This method is not overriding anything" 上 Fragments 的 Lint 错误

java - 使用 Android 播放来自 jar 资源的音频文件

android - 绑定(bind)没有额外参数的 View

android - mediaplayer seekTo() 以字节为单位的偏移量

java - android - 使用 VideoView 的多个实例时出错

java - 在微调器中获取用户选择,将其存储在sharedPreferences中,并在另一个 Activity 中使用它

android - 如何在被杀死时自动重启服务?