我有点问题。
我的应用程序必须在按下按钮时振动,所有工作在我的Samsung S3(API 17)中正常工作,但在我的S2(API 15)上这不起作用。
代码:
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.VIBRATE"/>
主要
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Vibrator x = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
x.cancel();
backgroundVibrate = 0;
//final ToggleButton toggle = (ToggleButton)findViewById(R.id.toggleButton1);
setContentView(R.layout.activity_fullscreen);
Button fast1 = (Button) findViewById(R.id.fast1);
fast1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
long[] pattern = { 0, 100, 300 };
vibrate(pattern, false);
}
});
public void vibrate(long[] pattern, boolean stop)
{
// Get instance of Vibrator from current Context
Vibrator x = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (stop == false)
{
x.vibrate(pattern, 0);
currentVibrate = true;
System.out.println("vibrate ON");
}
if (stop == true)
{
x.cancel();
currentVibrate = false;
}
}
有人有想法吗?
感谢
答案 0 :(得分:0)
那些振动持续时间真的很短。作为一个测试,我建议你在每个结尾处加上一个零,看看振动是否真的可以解决代码运行正常的问题。
然后,我想你必须设置一个在所有硬件上都可以接受的持续时间(因为不同的硬件会有不同的灵敏度,因为想要更好的词)。
答案 1 :(得分:0)
完成这项工作的简单方法是使用Haptic Feedback
Button fast1 = (Button) findViewById(R.id.fast1);
fast1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
}
});
这方面的好处是你不需要在AndroidManifest中设置权限。 请注意,您需要启用触觉反馈作为全局。从http://developer.android.com/reference/android/view/HapticFeedbackConstants.html查看。
您只需使用以下代码为您的应用启用触觉反馈即可。
Settings.System.putInt(getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, 1);
不要忘记在AndroidManifest.xml中添加以下权限
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
答案 2 :(得分:0)
我最初的解决方案一切都很好。
问题来自三星S2设置....
感谢您的帮助