我想构建一个简单的应用,该应用在单击复选框时会振动,然后在再次单击时停止:
目前看起来像这样:
import android.content.Context;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Vibrator vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
final CheckBox vibrateCheckBox = (CheckBox) findViewById(R.id.checkPowerStrong);
if(vibrateCheckBox.isChecked()) {
while(vibrateCheckBox.isChecked()) {
vibrator.vibrate(1000);
}
} else {
vibrator.cancel();
}
}
}
但是我确实得到了一个错误:
原因:java.lang.IllegalStateException:onCreate()之前Activities无法使用系统服务
我允许清单振动。
如何解决这个问题
它完全可以满足您的需求。做这样的事情
final Vibrator vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE);
final CheckBox vibrateCheckBox = (CheckBox) findViewById(R.id.checkPowerStrong);
final Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
vibrator.vibrate(1000);
handler.postDelayed(this, 1000);
}
};
vibrateCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(vibrateCheckBox.isChecked()) {
handler.postDelayed(r, 100);
} else {
handler.removeCallbacks(r);
vibrator.cancel();
}
}
}
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句