Android 声音:应已设置字幕控制器

Android 声音:应已设置字幕控制器,android,eclipse,android-mediaplayer,Android,Eclipse,Android Mediaplayer,我有一个奇怪的问题,我的音频文件有时播放,有时不播放 问题是,当LogCat决定不玩时,它会给我以下信息: Should have subtitle controller already set 这是我播放声音的代码: public void sound(){ //store the sound file name String filename=f_fruit_ar.m4a; //All sounds stored in assets folder try{

我有一个奇怪的问题,我的音频文件有时播放,有时不播放

问题是,当LogCat决定不玩时,它会给我以下信息:

Should have subtitle controller already set
这是我播放声音的代码:

public void sound(){
    //store the sound file name
    String filename=f_fruit_ar.m4a;

    //All sounds stored in assets folder
    try{
        AssetFileDescriptor afd = getAssets().openFd(filename);
        MediaPlayer player = new MediaPlayer();
        player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        player.prepare();
        player.start();         
        }
        });
    }
    catch (Exception e) {
    e.printStackTrace();
    }
}

我认为问题在于玩家玩完游戏后你没有释放资源,你需要释放资源

示例:

public void sound(){
    //store the sound file name
    String filename=f_fruit_ar.m4a;

    //All sounds stored in assets folder
    try{
        AssetFileDescriptor afd = getAssets().openFd(filename);
        MediaPlayer player = new MediaPlayer();
        player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        player.prepare();
        player.start();
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
        player.release();
        }
});
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

我认为问题在于玩家玩完游戏后你没有释放资源,你需要释放资源

示例:

public void sound(){
    //store the sound file name
    String filename=f_fruit_ar.m4a;

    //All sounds stored in assets folder
    try{
        AssetFileDescriptor afd = getAssets().openFd(filename);
        MediaPlayer player = new MediaPlayer();
        player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
        player.prepare();
        player.start();
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
        player.release();
        }
});
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}