Android MediaPlayer: как остановиться, если загружается другой аудиофайл? - PullRequest
0 голосов
/ 20 апреля 2019

У меня проблема с Android MediaPlayer. Как только пользователь вводит новый звуковой файл, старый не останавливается, поэтому все аудиофайлы перекрываются.

Я уже пробовал распространенные методы, такие как MediaPlayer.stop (); а также MediaPlayer.release ();

Эти методы всегда приводят к сбою приложения, хотя они вызываются в правильном порядке

public void Abspielen(String Datei) {
    try {
        AndreasPlayer = MediaPlayer.create(MainActivity.this, getResources().getIdentifier(Datei, "raw", getPackageName()));
        AndreasPlayer.start();
    } catch (Exception e) {
        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
    }
}

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

    Abspielen("filename");

}

1 Ответ

0 голосов
/ 24 апреля 2019

Я разработал следующее решение:

    public void Abspielen(String Datei) {

    try {

        stopKnopf = findViewById(R.id.fab2);
        stopKnopf.show();

        try  {
            if (AndreasPlayer.isPlaying()) {
                AndreasPlayer.reset();
            }
        } catch (Exception ex) {

        }

        AndreasPlayer = MediaPlayer.create(MainActivity.this, getResources().getIdentifier(Datei, "raw", getPackageName()));

        AndreasPlayer.start();

        stopKnopf.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                AndreasPlayer.reset();
                stopKnopf.hide();
            }
        });

        AndreasPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                AndreasPlayer.reset();
                stopKnopf.hide();
            }

        });

    } catch (Exception e) {
        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...