正如本文前面“如何在Android中以编程方式振动设备”中讨论的那样。因此,在本文中,已经讨论了如何制作振动模式,该模式会产生不同波形的振动。该实现可以是当有来电时设备产生各种振动模式时产生的振动的复制品。请注意,我们还将使用Java语言来实现该项目。
在Android中实施振动模式的步骤
第1步:创建一个空的android studio项目
- 创建一个空的活动Android Studio项目。并选择Java作为编程语言。
- 参考Android |如何在Android Studio中创建/启动新项目,以了解如何创建空活动的Android Studio项目。
步骤2:使用activity_main.xml文件
- 在布局中实现一个按钮,按下该按钮可创建振动波形。
- 在activity_main.xml文件中调用以下代码。
XML
XML
Java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button bComposeVibration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// register the button with the appropriate ID
bComposeVibration = findViewById(R.id.makeVibrationCompositionButton);
// create instance of the vibrator and initialise it with Vibrator system service
final Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// handle compose vibration button
bComposeVibration.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Note: The first element needs to be 0
long[] vibrationWaveFormDurationPattern = {0, 10, 200, 500, 700, 1000, 300, 200, 50, 10};
// the vibration of the type custom waveforms needs the API version 26
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
// create VibrationEffect instance and createWaveform of vibrationWaveFormDurationPattern
// -1 here is the parameter which indicates that the vibration shouldn't be repeated.
VibrationEffect vibrationEffect = VibrationEffect.createWaveform(vibrationWaveFormDurationPattern, -1);
// it is safe to cancel all the vibration taking place currently
vibrator.cancel();
// now initiate the vibration of the device
vibrator.vibrate(vibrationEffect);
}
}
});
}
}
输出界面:
步骤3:寻求振动权限
- 寻求振动AndroidManifest.xml文件中的权限,因为我们正在访问设备的硬件部分。
- 在AndroidManifest.xml文件中调用以下代码
XML格式
步骤4:使用MainActivity。 Java文件
- 在上一篇文章中,已经讨论了Android设备的预定义振动。但是,此处使用长变量数组创建自定义波形。
- 这里要注意的重要点之一是,在以长类型的类型数组创建波形时,第一个元素必须为零(0)。之所以如此,是因为首先需要打开设备的振动器,然后使其振动以产生其他波形。
- 在这种情况下,波形为long []振动波形式持续时间模式= {0,10,200,500,700,1000,300,200,50,10};从下面的代码。第一个波形是0。
- 在MainActivity中调用以下代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button bComposeVibration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// register the button with the appropriate ID
bComposeVibration = findViewById(R.id.makeVibrationCompositionButton);
// create instance of the vibrator and initialise it with Vibrator system service
final Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// handle compose vibration button
bComposeVibration.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Note: The first element needs to be 0
long[] vibrationWaveFormDurationPattern = {0, 10, 200, 500, 700, 1000, 300, 200, 50, 10};
// the vibration of the type custom waveforms needs the API version 26
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
// create VibrationEffect instance and createWaveform of vibrationWaveFormDurationPattern
// -1 here is the parameter which indicates that the vibration shouldn't be repeated.
VibrationEffect vibrationEffect = VibrationEffect.createWaveform(vibrationWaveFormDurationPattern, -1);
// it is safe to cancel all the vibration taking place currently
vibrator.cancel();
// now initiate the vibration of the device
vibrator.vibrate(vibrationEffect);
}
}
});
}
}
输出:
- 在具有API版本26的物理Android设备中测试此应用程序会更好。
- 要了解如何设置物理Android设备,请参阅如何在真实设备上运行Android应用。