2017-10-24 10 views
0

はい、私はこれを投稿する前に答えを探しました。 :)アプリでショートトーンがクラッシュすることなく

メイドのボードゲームでは、各ピースがダイスのロールを得て、その後、ステップごとに四角に移動します。短いビープ音で各ステップを踏みたいメソッド "beep();"を追加しました。画面上のピースの位置を移動するハンドラに配置します。

ビープ音()を追加すると、ゲームは動いて動いて、単に報告やエラーメッセージを出さずに停止します。画面での表示が閉じ、ダイアログに「残念なことに、BoardLSが[OK]を停止しました」と表示され、それ以外のことは起こりません。

ビープ音()を取り除くと、ゲームは大丈夫です。

ビープ音がどのようにゲームをクラッシュさせ、どのように回避するかを知っている人は、できるだけ簡単に教えてください。ありがとう。

ここで私はビープ音を作った方法は次のとおりです。

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は、画面座標が2乗の配列です。

ハンドラはMainActivity、

とplayMove.sendEmptyMessageとAsyncTask(0)から呼び出されています。

AsyncTaskはグローバル変数で直接動作するため、ここで問題は発生しません。

+2

logcatにスタックトレースがあるはずです。 –

答えて

0

release()メソッドを使用してToneGeneratorオブジェクトを作成しました。

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

うまく働いた、ありがとう。そして、シンプルさに感謝します。 – Sinisa

+0

喜んで:) – keshav

関連する問題