Двойной функциональный стоп и кнопки воспроизведения [дубликат]

  public static class StringExtensions {public static string RemoveUnnecessary (этот источник строки) {string result = string.Empty;  string regex = новая строка (Path.GetInvalidFileNameChars ()) + новая строка (Path.GetInvalidPathChars ());  Regex reg = new Regex (string.Format ("[{0}]", Regex.Escape (regex)));  result = reg.Replace (source, "");  результат возврата;  }}  

Вы можете использовать метод четко.

20
задан Flávio Toribio 4 October 2012 в 00:51
поделиться

4 ответа

Вы должны использовать только один объект медиапланера

    public class PlayaudioActivity extends Activity {

        private MediaPlayer mp;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button b = (Button) findViewById(R.id.button1);
            Button b2 = (Button) findViewById(R.id.button2);
            final TextView t = (TextView) findViewById(R.id.textView1);

            b.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    stopPlaying();
                    mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.far);
                    mp.start();
                }

            });

            b2.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    stopPlaying();
                    mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.beet);
                    mp.start();
                }
            });
        }

        private void stopPlaying() {
            if (mp != null) {
                mp.stop();
                mp.release();
                mp = null;
           }
        }
    }
39
ответ дан mario 16 August 2018 в 01:07
поделиться
  • 1
    Спасибо, он отлично работает – Mohammad Hammad 4 September 2012 в 16:34
  • 2
    Без проблем человек :) – mario 4 September 2012 в 16:37
  • 3
    @mario Я сошел с ума, ища способ реализовать медиаплеера в своем приложении, и хотя многие люди помогали или хотя бы пытались помочь мне, но не успели. Твой трюк. Единственная проблема, с которой я сейчас сталкиваюсь, - это где поставить код, где / как проверить, не перестает ли воспроизведение звука. После прекращения воспроизведения звука я хочу отобразить кнопку. Я одобрил ваш ответ. – Si8 23 August 2013 в 21:37
  • 4
    @ SiKni8 Вы должны задать новый вопрос, не можете ответить на него здесь – mario 26 August 2013 в 14:34
  • 5
    @mario Я понял это. Спасибо за ответ. – Si8 26 August 2013 в 14:35

В соответствии с жизненным циклом MediaPlayer, который вы можете просмотреть в руководстве API Android , я думаю, что вы должны называть reset() вместо stop(), а после этого снова готовиться медиаплеер (используйте только один), чтобы воспроизвести звук с самого начала. Также учтите, что звук может закончиться. Поэтому я также рекомендую реализовать setOnCompletionListener(), чтобы убедиться, что если вы попытаетесь снова воспроизвести звук, он не сработает.

3
ответ дан DINITH RUKSHAN KUMARA 16 August 2018 в 01:07
поделиться

на всякий случай кто-то приходит к этому вопросу, у меня есть более простая версия.

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

        Button b = (Button) findViewById(R.id.button);
        Button b2 = (Button) findViewById(R.id.button2);


        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mp = MediaPlayer.create(MainActivity.this, R.raw.game);
                mp.start();
            }
        });

        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.stop();
               // mp.start();
            }
        });
    }
0
ответ дан dyingStudent 16 August 2018 в 01:07
поделиться

Чтобы остановить Media Player без риска исключения из-за незаконного состояния, вы должны сделать

  try {
        mp.reset();
        mp.prepare();
        mp.stop();
        mp.release();
        mp=null;
       }
  catch (Exception e)
         {
           e.printStackTrace();
         }

, а не только

try {
       mp.stop();
       mp.release();
       mp=null;
    } 
catch (Exception e) 
    {
      e.printStackTrace();
    }
2
ответ дан KUSHA B K 16 August 2018 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: