初学者安卓有助于在runnable中播放音频

时间:2015-06-12 12:57:07

标签: java android audio android-mediaplayer

我正在玩一些基本的android,我正在尝试编写一个节拍器应用程序。基本的想法是我使用runnable以便在一段时间(msPeriod)之后触发声音。我曾尝试使用SoundPool,但它只会记录'sample not loaded',并尝试ititialise一个MediaPlayer会导致应用程序在打开时崩溃。你能告诉我哪里出错了吗?以下是我使用MediaPlayer的代码。

//I create the media player first thing inside MainActivity
private Handler handler = new Handler();
int msPeriod = 1000;
MediaPlayer mpHigh = MediaPlayer.create(this, R.raw.hightick);
MediaPlayer mpLow = MediaPlayer.create(this, R.raw.lowtick);

//within an onClick Listener 
onClick(View v) { handler.postDelayed(startMetron, msPeriod); }

//the runnable that starts the metronome
private Runnable startMetron = new Runnable( ) {

    @Override
    public void run() {

        if(isRunning){
            if (count == 4) {
                count = 1;
                mphigh.start();

            } else {
                count++;
                mplow.start();
            }
        }

        textCount.setText(String.valueOf(count));

        //triggering the next run
        handler.postDelayed(this, msPeriod);
    }
};

非常感谢与我合作!

1 个答案:

答案 0 :(得分:0)

您正在运行单独的线程。 UI元素必须从主线程更新...所以..

runOnUiThread(new Runnable(){
        public void run() {
            textCount.setText(String.valueOf(count));
        }
    });

这可确保textview从UI线程更新,您的应用程序不会崩溃。