我正在製作應用程序中的一部分,如果按下按鈕,則手機會振動,如果再次按下按鈕,手機將停止振動。我正在爲我的按鈕使用單選按鈕。我的代碼是正確的,現在的振動部分:android vibrator打開和關閉
while(hard.isChecked()==true){
vt.vibrate(1000);
}
手機振動,但它並不像充滿電振動,單選按鈕不會改變。我也無法關閉它,因爲手機基本凍結。任何人有任何想法來解決這個問題?
我正在製作應用程序中的一部分,如果按下按鈕,則手機會振動,如果再次按下按鈕,手機將停止振動。我正在爲我的按鈕使用單選按鈕。我的代碼是正確的,現在的振動部分:android vibrator打開和關閉
while(hard.isChecked()==true){
vt.vibrate(1000);
}
手機振動,但它並不像充滿電振動,單選按鈕不會改變。我也無法關閉它,因爲手機基本凍結。任何人有任何想法來解決這個問題?
我已經嘗試過自己。我認爲下面的代碼是你在找什麼:
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"/>
您編程了一個無限循環。您的設備沒有機會改變您的單選按鈕的狀態,因爲它仍處於while循環中。
一種可能性是在單獨的線程中啓動振動代碼。
另一種可能性是在while循環中添加一個Thread.Sleep(100)左右。
你正在使用while循環hard.isChecked()這將永遠是真的,現在它循環到無限循環。所以使用break語句在while循環
while(hard.isChecked()==true){
vt.vibrate(1000);
break;
}
,或者您可以使用下面的代碼:
if(hard.isChecked()){
vt.vibrate(1000);
}
好吧,我希望它不斷振動,所以如果我把它放在休息或if語句會使它如此,電話只振動一次1000米。 – 2012-04-03 04:24:21
我希望它不斷地振動壽所以會把謂的Thread.Sleep使得它,所以它續。振動。 – 2012-04-03 04:25:08
我還沒有測試過,但只要睡眠值低於振動值,它應該以這種方式工作。 – 2012-04-03 08:14:52
我嘗試過,但它仍然無法工作,我想我現在可能只是做兩個按鈕,並有一個取消它,一個啓動它。如果你想別的,請分享。 – 2012-04-05 13:21:34