Я создал простой тюнер укулеле (мне кажется, на рынке не хватает визуально приятного и чрезвычайно простого тюнера).
В любом случае, во-первых, через консоль разработчика я вижу, что в событиях 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);
}