应用程序中的短音而不会崩溃

时间:2017-10-24 13:31:37

标签: java android beep

是的,我在发布之前确实搜索了答案。 :)

制作棋盘游戏,每件作品都会骰子,然后在正方形上一步一步地移动。想要用短促的哔声跟随每一步。添加方法“beep();”并将其放置在处理器中,以便在屏幕上移动片段的位置。

当我添加beep();游戏工作几个动作,然后只是停止,没有任何报告或错误消息。视图在屏幕上关闭,对话框只是说“不幸的是,BoardLS已停止[确定]”,没有其他事情发生。

当我删除beep();游戏运行正常。

如果有人知道哔哔声如何让游戏崩溃,以及如何避免它,请告诉我尽可能简单。感谢。

以下是我发出哔哔声的方式:

private void beep() {
    ToneGenerator beepSound = new ToneGenerator(AudioManager.STREAM_MUSIC, 60);
    beepSound.startTone(ToneGenerator.TONE_PROP_BEEP, 75);
} // Short sound

我称之为:

private final Handler playMove = new Handler() {
    @Override
    public void handleMessage(Message playMsg) {
        beep();
        player.setX(pcX[playPos]);
        player.setY(pcY[playPos]);
    }
}; // Put Player piece to new coordinates

playPos是该片段的正方形数字,

pcX和pcY是屏幕坐标为正方形的数组。

处理程序在MainActivity中,

并使用playMove.sendEmptyMessage(0)从AsyncTask调用;

AsyncTask直接使用全局变量,这里没有任何问题。

1 个答案:

答案 0 :(得分:0)

只需使用ToneGenerator方法发布已创建的release()个对象。

private void beep() {
        ToneGenerator beepSound = new ToneGenerator(AudioManager.STREAM_MUSIC, 60);
        beepSound.startTone(ToneGenerator.TONE_PROP_BEEP, 75);
        beepSound.release();
    }