1

アプリでこの pushtotalk ボタンを押すと、キーボード ボタンがスレッド内で 9、*、# などと押され、ボタンを一時的に無効にするプレス間の遅延があります。ただし、このボタンを使い始めてから、電話が再起動することがありますが、その理由は何ですか? スレッドを正しく処理していませんか?

public void pushtotalk2(final View view) {

        final boolean on = ((ToggleButton) view).isChecked();
        ((ToggleButton) view).setEnabled(false);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Instrumentation inst = new Instrumentation();
                    if (on) {

                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_NUMPAD_MULTIPLY);
                        Thread.sleep(500);
                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_9);
                        Thread.sleep(500);

                        runOnUiThread(new Runnable() {
                            public void run() {
                                ((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
                                ((ToggleButton) view).setEnabled(true);
                            }
                        });
                    } else {
                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_POUND);
                        Thread.sleep(500);
                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_9);
                        Thread.sleep(500);
                        runOnUiThread(new Runnable() {
                            public void run() {
                                ((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
                                ((ToggleButton) view).setEnabled(true);
                            }
                        });
                    }
                } catch (InterruptedException e) {
                    Log.d(TAG, "Failed to send keycodes: " + e.getMessage());
                }
            }
        }).start();
    }

ここで何か問題がありますか?

4

0 に答える 0