Проблема со звуковыми эффектами в Onclick (Null Pointer и MediaPlayer Warning - PullRequest
2 голосов
/ 21 февраля 2012

Я создал простой тюнер укулеле (мне кажется, на рынке не хватает визуально приятного и чрезвычайно простого тюнера).

В любом случае, во-первых, через консоль разработчика я вижу, что в событиях Button Onclick есть исключение нулевого указателя. Мне не удалось воссоздать это, однако об этом сообщалось четыре раза.

Во-вторых, просматривая журнал при использовании приложения, я вижу это предупреждение;

E/MP3Extractor(68): Unable to resync. Signalling end of stream.

Эта запись здесь Массив MediaPlayer, вызывающий нулевой указатель в Android , кажется, имеет те же линии.

Как это работает. С помощью переключателей пользователь выбирает воспроизведение одной или непрерывной ноты. Я создал подпрограмму StopMediaPlayer, которая останавливает, сбрасывает и создает экземпляры MediaPlayers снова. Это было использовано потому, что я никогда не мог остановить непрерывное воспроизведение, а только приостановить его.

Связаны ли предупреждение и исключение NullPointerException? Существует ли более эффективное / лучшее средство остановки MediaPlayer, которое будет означать, что мне не придется каждый раз создавать новые экземпляры заметок.

Спасибо

Один из оскорбительных кликов

Button gButton = (Button) findViewById(R.id.gButton);
    gButton.setOnClickListener(new OnClickListener() 
    {
        public void onClick(View v)
        {
            if (singleRadio.isChecked() == true)
            {
                StopMediaPLayer();
                gNote.setLooping(false);
                gNote.start();


            }
            else if (contRadio.isChecked() == true)
            {
                StopMediaPLayer();
                gNote.setLooping(true);
                gNote.start();
            }

        }
    });

Подпрограмма Stop Media Player

public void StopMediaPLayer()
{
    Log.i("UkuleleTuner", "Stop Media Player");
    gNote.setLooping(false);
    cNote.setLooping(false);
    eNote.setLooping(false);
    aNote.setLooping(false);

    gNote.stop();
    cNote.stop();
    eNote.stop();
    aNote.stop();

    gNote.reset();
    cNote.reset();
    eNote.reset();
    aNote.reset();

    gNote = MediaPlayer.create(this, R.raw.g_note);
    cNote = MediaPlayer.create(this, R.raw.c_note);
    eNote = MediaPlayer.create(this, R.raw.e_note);
    aNote = MediaPlayer.create(this, R.raw.a_note);
}
...