我在Stackoverflow上阅读了很多关于这个问题的内容,但是没有帮助她解决我的问题。 我的问题是我的应用程序总是停在手机上。 我想要一个开关按钮,如果它打开,它应该每10秒无限振动。
package com.example.myapp;
import android.os.Bundle;
import android.os.Vibrator;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Switch;
public class MainActivity extends Activity {
private Switch mySwitch;
public // Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySwitch = (Switch) findViewById(R.id.myswitch);
//set the switch to off
mySwitch.setChecked(false);
//attach a listener to check for changes in state
mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(isChecked){
// Start without a delay
// Vibrate for 100 milliseconds
// Sleep for 1000 milliseconds
long[] pattern = {0, 100, 1000};
// The '0' here means to repeat indefinitely
// '-1' would play the vibration once
v.vibrate(pattern, 0);
}else{
v.cancel();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
感谢您的帮助!
答案 0 :(得分:1)
您的错误位于以下行: public //从当前Context获取Vibrator的实例 振动器v =(振动器)getSystemService(Context.VIBRATOR_SERVICE);
在调用onCreate()方法之前,您的Activity无法使用系统服务。 所以你必须在onCreate()方法中初始化你的振动器。
答案 1 :(得分:0)
你可以开始Thread
,你可以在其中添加这样的内容:
while (true) {
v.vibrate(500); // Half a second
sleep(10000); // Wait 10 seconds
}
但由于这将无限期地运行,您还需要在Thread
中设置某种条件或事件以在某些情况下停止它(例如,如果某个动作发生,或者BroadcastReceiver
1}}信号触发器。更多信息here。
有关停止Thread
here的更多信息。
答案 2 :(得分:0)
我的建议是
它应该与屏幕关闭。
应用许可:
<uses-permission android:name="android.permission.VIBRATE"/>