0

私はアプリの一部を作成しています。ボタンを押すと電話が振動し、もう一度ボタンを押すと電話の振動が止まります。ボタンにラジオボタンを使用しています。私のコードは現在、振動部分用です:

                while(hard.isChecked()==true){
                    vt.vibrate(1000);
                }

電話は振動しますが、フルパワーで振動するのは好きではなく、ラジオボタンは変わりません。また、基本的に電話がフリーズするため、オフにできません。誰かがこれを修正するためのアイデアがありますか?

4

3 に答える 3

1

無限ループをプログラムしました。デバイスはまだwhileループにあるため、ラジオボタンの状態を変更する機会はありません。

1つの可能性は、別のスレッドでバイブレーションコードを開始することです。

もう1つの可能性は、whileループにThread.Sleep(100)などを追加することです。

于 2012-04-01T15:01:35.603 に答える
1

whileループhard.isChecked()を使用していますが、これは永久に真になり、無限ループにループします。したがって、whileループでbreakステートメントを使用します

while(hard.isChecked()==true){
    vt.vibrate(1000);
break;
 }

または、以下のコードを使用できます。

if(hard.isChecked()){
   vt.vibrate(1000);
}
于 2012-04-01T15:02:08.817 に答える
0

自分で試してみました。以下のコードはあなたが探しているものだと思います:

private Vibrator vibrator;
private CheckBox checkbox;
private Thread vibrateThread;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    vibrator = ((Vibrator)getSystemService(VIBRATOR_SERVICE));
    checkbox = (CheckBox)findViewById(R.id.checkBox1);
    vibrateThread = new VibrateThread();
}

public void onCheckBox1Click(View view) throws InterruptedException{
    if(checkbox.isChecked()){
        if (vibrateThread.isAlive()) {
            vibrateThread.interrupt();
            vibrateThread = new VibrateThread();
        } else {
            vibrateThread.start();
        }
    } else{
        vibrateThread.interrupt();
        vibrateThread = new VibrateThread();
    }
}

class VibrateThread extends Thread {
    public VibrateThread() {
        super();
    }
    public void run() {
        while(checkbox.isChecked()){                
            try {
                vibrator.vibrate(1000);
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

そしてここにレイアウト:

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="CheckBox"
    android:onClick="onCheckBox1Click"/>
于 2012-04-09T06:56:26.733 に答える