Android: MediaPlayer 在开始新的 activity 后没有被释放就完成了

Android: MediaPlayer finalized without being released after starting a new activity

在我的 Main activity 一开始,我调用媒体播放器播放歌曲

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ourSurfaceView = new MyBringBack(this);
    ourSurfaceView.setOnTouchListener(this);
    Context ctx;
    firstRun = 0;

    MediaPlayer ourSong = MediaPlayer.create(MainActivity.this, R.raw.music);
    ourSong.setLooping(true);
    ourSong.start();

但是,当我打开 activity 时,它不会停止。下次我开始 activity 时,它不会停止。但是我第三次这样做了。这是使第三个意图的代码 activity:

(为此我使用了 ViewPager)

public void fiveGames(View view){
    Intent i = new Intent(this, WhichNormalLevelActivity.class);
    i.putExtra("uh", 1);
    startActivity(i);
    finish();
}

这是创建的 activity 的代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_which_normal_level);

    ctx = this;

    box = (TextView)findViewById(R.id.box_button);

    whichPage = getIntent().getIntExtra("uh", 1);

    final SharedPreferences prefs = getSharedPreferences("SETTINGS", 0);
    if(whichPage == 1) {
        whichClass = FiveByFiveGame.class;
        box.setText("5x5 Games");
        box.setTextColor(Color.parseColor("#ffecea00"));
        isLevelOneComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_ONE_COMPLETE", false);
        isLevelTwoComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_TWO_COMPLETE", false);
        isLevelThreeComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_THREE_COMPLETE", false);
        isLevelFourComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_FOUR_COMPLETE", false);
        isLevelFiveComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_FIVE_COMPLETE", false);
        isLevelSixComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_SIX_COMPLETE", false);
        isLevelSevenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_SEVEN_COMPLETE", false);
        isLevelEightComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_EIGHT_COMPLETE", false);
        isLevelNineComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_NINE_COMPLETE", false);
        isLevelTenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_TEN_COMPLETE", false);
        isLevelElevenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_ELEVEN_COMPLETE", false);
        isLevelTwelveComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_TWELVE_COMPLETE", false);
        isLevelThirteenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_THIRTEEN_COMPLETE", false);
        isLevelFourteenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_FOURTEEN_COMPLETE", false);
        isLevelFifteenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_FIFTEEN_COMPLETE", false);
        isLevelSixteenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_SIXTEEN_COMPLETE", false);
        isLevelSeventeenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_SEVENTEEN_COMPLETE", false);
        isLevelEighteenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_EIGHTEEN_COMPLETE", false);
        isLevelNineteenComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_NINETEEN_COMPLETE", false);
        isLevelTwentyComplete = prefs.getBoolean("FIVE_BY_FIVE_LEVEL_TWENTY_COMPLETE", false);
    }
    if(whichPage == 2) {
        whichClass = SevenBySevenGame.class;
        box.setText("7x7 Games");
        box.setTextColor(Color.parseColor("#ff00ec1a"));
        isLevelOneComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_ONE_COMPLETE", false);
        isLevelTwoComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_TWO_COMPLETE", false);
        isLevelThreeComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_THREE_COMPLETE", false);
        isLevelFourComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_FOUR_COMPLETE", false);
        isLevelFiveComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_FIVE_COMPLETE", false);
        isLevelSixComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_SIX_COMPLETE", false);
        isLevelSevenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_SEVEN_COMPLETE", false);
        isLevelEightComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_EIGHT_COMPLETE", false);
        isLevelNineComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_NINE_COMPLETE", false);
        isLevelTenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_TEN_COMPLETE", false);
        isLevelElevenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_ELEVEN_COMPLETE", false);
        isLevelTwelveComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_TWELVE_COMPLETE", false);
        isLevelThirteenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_THIRTEEN_COMPLETE", false);
        isLevelFourteenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_FOURTEEN_COMPLETE", false);
        isLevelFifteenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_FIFTEEN_COMPLETE", false);
        isLevelSixteenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_SIXTEEN_COMPLETE", false);
        isLevelSeventeenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_SEVENTEEN_COMPLETE", false);
        isLevelEighteenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_EIGHTEEN_COMPLETE", false);
        isLevelNineteenComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_NINETEEN_COMPLETE", false);
        isLevelTwentyComplete = prefs.getBoolean("SEVEN_BY_SEVEN_LEVEL_TWENTY_COMPLETE", false);
    }
    if(whichPage == 3) {
        whichClass = NineByNineGame.class;
        box.setText("9x9 Games");
        box.setTextColor(Color.parseColor("#ffff4179"));
        isLevelOneComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_ONE_COMPLETE", false);
        isLevelTwoComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_TWO_COMPLETE", false);
        isLevelThreeComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_THREE_COMPLETE", false);
        isLevelFourComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_FOUR_COMPLETE", false);
        isLevelFiveComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_FIVE_COMPLETE", false);
        isLevelSixComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_SIX_COMPLETE", false);
        isLevelSevenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_SEVEN_COMPLETE", false);
        isLevelEightComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_EIGHT_COMPLETE", false);
        isLevelNineComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_NINE_COMPLETE", false);
        isLevelTenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_TEN_COMPLETE", false);
        isLevelElevenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_ELEVEN_COMPLETE", false);
        isLevelTwelveComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_TWELVE_COMPLETE", false);
        isLevelThirteenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_THIRTEEN_COMPLETE", false);
        isLevelFourteenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_FOURTEEN_COMPLETE", false);
        isLevelFifteenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_FIFTEEN_COMPLETE", false);
        isLevelSixteenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_SIXTEEN_COMPLETE", false);
        isLevelSeventeenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_SEVENTEEN_COMPLETE", false);
        isLevelEighteenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_EIGHTEEN_COMPLETE", false);
        isLevelNineteenComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_NINETEEN_COMPLETE", false);
        isLevelTwentyComplete = prefs.getBoolean("NINE_BY_NINE_LEVEL_TWENTY_COMPLETE", false);
    }

    Button levelOne = (Button)findViewById(R.id.level_one);
    Button levelTwo = (Button)findViewById(R.id.level_two);
    Button levelThree = (Button)findViewById(R.id.level_three);
    Button levelFour = (Button)findViewById(R.id.level_four);
    Button levelFive = (Button)findViewById(R.id.level_five);
    Button levelSix = (Button)findViewById(R.id.level_six);
    Button levelSeven = (Button)findViewById(R.id.level_seven);
    Button levelEight = (Button)findViewById(R.id.level_eight);
    Button levelNine = (Button)findViewById(R.id.level_nine);
    Button levelTen = (Button)findViewById(R.id.level_ten);
    Button levelEleven = (Button)findViewById(R.id.level_eleven);
    Button levelTwelve = (Button)findViewById(R.id.level_twelve);
    Button levelThirteen = (Button)findViewById(R.id.level_thirteen);
    Button levelFourteen = (Button)findViewById(R.id.level_fourteen);
    Button levelFifteen = (Button)findViewById(R.id.level_fifteen);
    Button levelSixteen = (Button)findViewById(R.id.level_sixteen);
    Button levelSeventeen = (Button)findViewById(R.id.level_seventeen);
    Button levelEighteen = (Button)findViewById(R.id.level_eighteen);
    Button levelNineteen = (Button)findViewById(R.id.level_nineteen);
    Button levelTwenty = (Button)findViewById(R.id.level_twenty);

levelOne.setBackgroundResource(R.drawable.bluespace);
    if (isLevelOneComplete) {
        levelTwo.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelTwo.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelTwoComplete) {
        levelThree.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelThree.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelThreeComplete) {
        levelFour.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelFour.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelFourComplete) {
        levelFive.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelFive.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelFiveComplete) {
        levelSix.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelSix.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelSixComplete) {
        levelSeven.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelSeven.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelSevenComplete) {
        levelEight.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelEight.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelEightComplete) {
        levelNine.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelNine.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelNineComplete) {
        levelTen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelTen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelTenComplete) {
        levelEleven.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelEleven.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelElevenComplete) {
        levelTwelve.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelTwelve.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelTwelveComplete) {
        levelThirteen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelThirteen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelThirteenComplete) {
        levelFourteen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelFourteen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelFourteenComplete) {
        levelFifteen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelFifteen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelFifteenComplete) {
        levelSixteen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelSixteen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelSixteenComplete) {
        levelSeventeen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelSeventeen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelSeventeenComplete) {
        levelEighteen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelEighteen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelEighteenComplete) {
        levelNineteen.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelNineteen.setBackgroundResource(R.drawable.lockedlevel);
    }
    if (isLevelNineteenComplete) {
        levelTwenty.setBackgroundResource(R.drawable.bluespace);
    } else {
        levelTwenty.setBackgroundResource(R.drawable.lockedlevel);
    }


    Button backButton = (Button)findViewById(R.id.back_button);
    backButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

    levelOne.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent gotoLevelOne = new Intent(ctx, whichClass);
            gotoLevelOne.putExtra("WHICH_LEVEL", 1);
            startActivity(gotoLevelOne);
            finish();

        }
    });
    levelTwo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelOneComplete) {
                Intent gotoLevelTwo = new Intent(ctx, whichClass);
                gotoLevelTwo.putExtra("WHICH_LEVEL", 2);
                startActivity(gotoLevelTwo);
                finish();

            }
        }
    });
    levelThree.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelTwoComplete) {
                Intent gotoLevelThree = new Intent(ctx, whichClass);
                gotoLevelThree.putExtra("WHICH_LEVEL", 3);
                startActivity(gotoLevelThree);
                finish();

            }
        }
    });
    levelFour.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelThreeComplete) {
                Intent gotoLevelFour = new Intent(ctx, whichClass);
                gotoLevelFour.putExtra("WHICH_LEVEL", 4);
                startActivity(gotoLevelFour);
                finish();

            }
        }
    });
    levelFive.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelFourComplete) {
                Intent gotoLevelFive = new Intent(ctx, whichClass);
                gotoLevelFive.putExtra("WHICH_LEVEL", 5);
                startActivity(gotoLevelFive);
                finish();

            }
        }
    });
    levelSix.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelFiveComplete) {
                Intent gotoLevelSix = new Intent(ctx, whichClass);
                gotoLevelSix.putExtra("WHICH_LEVEL", 6);
                startActivity(gotoLevelSix);
                finish();

            }
        }
    });
    levelSeven.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelSixComplete) {
                Intent gotoLevelSeven = new Intent(ctx, whichClass);
                gotoLevelSeven.putExtra("WHICH_LEVEL", 7);
                startActivity(gotoLevelSeven);
                finish();

            }
        }
    });
    levelEight.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelSevenComplete) {
                Intent gotoLevelEight = new Intent(ctx, whichClass);
                gotoLevelEight.putExtra("WHICH_LEVEL", 8);
                startActivity(gotoLevelEight);
                finish();

            }
        }
    });
    levelNine.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelEightComplete) {
                Intent gotoLevelNine = new Intent(ctx, whichClass);
                gotoLevelNine.putExtra("WHICH_LEVEL", 9);
                startActivity(gotoLevelNine);
                finish();

            }

        }
    });
    levelTen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelNineComplete) {
                Intent gotoLevelTen = new Intent(ctx, whichClass);
                gotoLevelTen.putExtra("WHICH_LEVEL", 10);
                startActivity(gotoLevelTen);
                finish();

            }

        }
    });
    levelEleven.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelTenComplete) {
                Intent gotoLevelEleven = new Intent(ctx, whichClass);
                gotoLevelEleven.putExtra("WHICH_LEVEL", 11);
                startActivity(gotoLevelEleven);
                finish();

            }

        }
    });
    levelTwelve.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelElevenComplete) {
                Intent gotoLevelTwelve = new Intent(ctx, whichClass);
                gotoLevelTwelve.putExtra("WHICH_LEVEL", 12);
                startActivity(gotoLevelTwelve);
                finish();

            }

        }
    });
    levelThirteen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelTwelveComplete) {
                Intent gotoLevelThirteen = new Intent(ctx, whichClass);
                gotoLevelThirteen.putExtra("WHICH_LEVEL", 13);
                startActivity(gotoLevelThirteen);
                finish();

            }

        }
    });
    levelFourteen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelThirteenComplete) {
                Intent gotoLevelFourteen = new Intent(ctx, whichClass);
                gotoLevelFourteen.putExtra("WHICH_LEVEL", 14);
                startActivity(gotoLevelFourteen);
                finish();

            }

        }
    });
    levelFifteen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelFourteenComplete) {
                Intent gotoLevelFifteen = new Intent(ctx, whichClass);
                gotoLevelFifteen.putExtra("WHICH_LEVEL", 15);
                startActivity(gotoLevelFifteen);
                finish();

            }

        }
    });
    levelSixteen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelFifteenComplete) {
                Intent gotoLevelSixteen = new Intent(ctx, whichClass);
                gotoLevelSixteen.putExtra("WHICH_LEVEL", 16);
                startActivity(gotoLevelSixteen);
                finish();

            }

        }
    });
    levelSeventeen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelSixteenComplete) {
                Intent gotoLevelSeventeen = new Intent(ctx, whichClass);
                gotoLevelSeventeen.putExtra("WHICH_LEVEL", 17);
                startActivity(gotoLevelSeventeen);
                finish();

            }

        }
    });
    levelEighteen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelSeventeenComplete) {
                Intent gotoLevelEighteen = new Intent(ctx, whichClass);
                gotoLevelEighteen.putExtra("WHICH_LEVEL", 18);
                startActivity(gotoLevelEighteen);
                finish();

            }

        }
    });
    levelNineteen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelEighteenComplete) {
                Intent gotoLevelNineteen = new Intent(ctx, whichClass);
                gotoLevelNineteen.putExtra("WHICH_LEVEL", 19);
                startActivity(gotoLevelNineteen);
                finish();

            }

        }
    });
    levelTwenty.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isLevelNineteenComplete) {
                Intent gotoLevelTwenty = new Intent(ctx, whichClass);
                gotoLevelTwenty.putExtra("WHICH_LEVEL", 20);
                startActivity(gotoLevelTwenty);
                finish();

            }

        }
    });




}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_which_normal_level, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void onBackPressed(){}

}

关于它停止播放音乐的原因有什么想法吗?

谢谢:)

你这样创建你的MediaPlayer

MediaPlayer ourSong = MediaPlayer.create(MainActivity.this, R.raw.music);

您正在将 MainActivity 的实例作为 Context 参数传递。这会将 link 的 MediaPlayer 生命周期变为 MainActivity 的生命周期。

启动时 WhichNormalLevelActivity,像这样:

public void fiveGames(View view){
    Intent i = new Intent(this, WhichNormalLevelActivity.class);
    i.putExtra("uh", 1);
    startActivity(i);
    finish();
}

您在 MainActivity 上致电 finish()。 Android 将清理并销毁生命周期为 link 到 MainActivity 的所有内容,包括您的 MediaPlayer.

如果您希望 MediaPlayer 生命周期独立于特定 Activity,请在创建 MediaPlayer 时将全局应用程序上下文作为 Context 参数传递。要获取全局上下文,请调用 getApplicationContext()。只是不要忘记在完成后关闭它并释放资源!

这应该可以解决您的问题:

MediaPlayer mPlayer = new MediaPlayer();

mPlayer.prepare();
mPlayer.start();

mPlayer.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mPlayer) {
        mPlayer.release();

    }
};