Java 每5秒钟重复一次声音

Java 每5秒钟重复一次声音,java,android,audio,logcat,Java,Android,Audio,Logcat,我编辑并尝试了许多方法。基本上没有按钮。我想要的是,如果我点击它,它会在每5秒后再次播放“挪威语”,直到我再次点击那个按钮。我写的脚本对我来说似乎很好,但每次都会崩溃:(。这是代码和错误,你能帮我吗 //BUTTON SHIT\\ teebheli = false; magamine = MediaPlayer.create(this, R.raw.norse); bhelitegija = (Button) findViewById(R.id.bTeeHeli

我编辑并尝试了许多方法。基本上没有按钮。我想要的是,如果我点击它,它会在每5秒后再次播放“挪威语”,直到我再次点击那个按钮。我写的脚本对我来说似乎很好,但每次都会崩溃:(。这是代码和错误,你能帮我吗

    //BUTTON SHIT\\

    teebheli = false;
    magamine = MediaPlayer.create(this, R.raw.norse);
    bhelitegija = (Button) findViewById(R.id.bTeeHeli);
    bhelitegija.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (teebheli == false ){
                bhelitegija.setText("Lõpeta heli!");
                magamine.start();
                teebheli = true;
                }
            if (teebheli == true) {
                bhelitegija.setText("Tee heli!");
                magamine.stop();
                teebheli = false;
            }

            }

    });
    piiksumine = new Thread(){
        public void run(){
            try {
                int piiksumine = 0;
                while (piiksumine < 5000) {
                    sleep(100);
                    piiksumine = piiksumine + 100;
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finally {
                piiksumine.start();
            }
            }
        };

您尚未为
首选项管理器设置名称。GetDefaultSharedReferenceName

(在我的脑海中,尝试以下方法):

在尝试获取共享首选项之前,请执行此操作

如果变量名不清楚,请查看文档:)

希望这有帮助

编辑:


现在您正在尝试访问另一个线程中实例化的MediaPlayer。你不能这样做。您需要在同一线程中创建MediaPlayer.create()和MediaPlayer.start()。

您尚未为
首选项管理器.getDefaultSharedReferencesName设置名称

(在我的脑海中,尝试以下方法):

在尝试获取共享首选项之前,请执行此操作

如果变量名不清楚,请查看文档:)

希望这有帮助

编辑:


现在您正在尝试访问另一个线程中实例化的MediaPlayer。你不能这样做。您需要在同一个线程中创建MediaPlayer.create()和MediaPlayer.start()。

一个实现就是启动一个异步任务,然后启动一个无限循环,在循环中不断询问系统时间,将时间与初始时间进行比较,如果经过的时间等于5秒,只需发出嘟嘟声

一种实现方法是启动一个异步任务,然后启动一个无限循环,在循环中不断询问系统时间,将时间与初始时间进行比较,如果经过的时间等于5秒,只需发出嘟嘟声

你的线程中有很多piiksumine,不管这意味着什么,我宁愿给线程和int取不同的名称


另外,我不确定我是否很好地理解了这里的意图,但我认为不应该使用piiksumine.start()在线程自身的run()方法中启动线程

你的线程中有很多piiksumine,不管这意味着什么,我宁愿给线程和int取不同的名称



另外,我不确定我是否很好地理解了这里的意图,但我认为不应该使用piiksumine.start()在线程自身的run()方法中启动线程

您可以尝试改用android.os.CountDownTimer并使用长倒计时。有一个方法onTick()可以用来播放声音(通过在构造函数中将countDownInterval设置为5秒)。下次按下按钮时,可以通过调用cancel()停止该操作

您可以尝试改用android.os.CountDownTimer并使用长倒计时。有一个方法onTick()可以用来播放声音(通过在构造函数中将countDownInterval设置为5秒)。下次按下按钮时,可以通过调用cancel()停止该操作

该死的你从哪里来的人,找不到它是什么语言:)它是纯爱沙尼亚语:)-->viimane.voimalus.MainStuff.(MainStuff.java:37).getDefaultSharedReferences(getBaseContext());我用代码重新启动。我尝试不同的方法。不是它没有崩溃,但它仍然不起作用:/该死的,你从哪里来,不知道它是什么语言:)它是纯爱沙尼亚语:)-->viimane.voimalus.MainStuff.(MainStuff.java:37).GetDefaultSharedReferences(getBaseContext());我用代码重新启动。我尝试不同的方法。不是它没有崩溃,但它仍然不工作:/实际上,我认为有:SharedReferences preferences=PreferenceManager下一行。GetDefaultSharedReferences(getBaseContext());我认为问题可能是真是假,因为它给出了nullexception或其他东西:/?当您尝试使用
GetDefaultSharedReferences
时,它给出了NullReferenceException,因为您尚未设置默认的共享首选项。确定。我在OP post中编辑代码。这应该是更简单的方法。但出于某种原因,它似乎根本就不可能是真是假。可能有什么问题?实际上,我认为有:SharedReferences preferences=PreferenceManager下一行。GetDefaultSharedReferences(getBaseContext());我认为问题可能是真是假,因为它给出了nullexception或其他东西:/?当您尝试使用
GetDefaultSharedReferences
时,它给出了NullReferenceException,因为您尚未设置默认的共享首选项。确定。我在OP post中编辑代码。这应该是更简单的方法。但出于某种原因,它似乎根本就不可能是真是假。可能有什么问题?我用代码重新启动了。我尝试不同的方法。不是它没有崩溃,但它仍然不工作:/I我在代码中重新启动了。我尝试不同的方法。不是说它没有崩溃,但它仍然不工作:/但是这不应该一次又一次地循环,直到它被称为停止吗?在调用start()之前,您应该准备好MediaPlayer;这仍然不能修正上限错误。没有任何变化:(.我想问题可能在真/假或这些中…当我删除条件时,如果我只想发出声音,它似乎起作用。但有条件,它不起作用。但我需要条件!问题在teebheli变量的范围内我不明白,我没有设置teebheli=false;?但这不应该反复给出循环,直到它被称为stop?在调用start()之前,您应该准备MediaPlayer;这仍然不能修复上面的错误。没有任何更改:(.我认为问题可能在真/假或这些中…当我删除条件时,如果我只想发送声音,它似乎起作用。但有条件,它不起作用。但我需要条件!问题在teebheli变量的范围内我不明白,我没有设置teebheli=false?
08-11 18:09:36.738: ERROR/MediaPlayer(1224): start called in state 0
08-11 18:09:36.738: ERROR/MediaPlayer(1224): error (-38, 0)
08-11 18:09:36.746: ERROR/MediaPlayer(1224): stop called in state 0
08-11 18:09:36.746: ERROR/MediaPlayer(1224): error (-38, 0)
08-11 18:09:36.777: ERROR/MediaPlayer(1224): Error (-38,0)
08-11 18:09:36.786: ERROR/MediaPlayer(1224): Error (-38,0)
PreferenceManager.setDefaultValues(context, sharedPreferencesName, 
    sharedPreferencesMode, resId, readAgain);