Los comentarios hepáticos también se consideran cuando se trata de la experiencia del usuario. Entonces, en esta discusión, se discutieron varios tipos de hápticos o los tipos de vibración del dispositivo. Por ejemplo, hápticas de clic o hápticas de botón de pulsación prolongada. Hay cinco tipos diferentes de modos de vibración en la retroalimentación háptica discutidos son:
- Vibración predeterminada del dispositivo
- Haga clic en efecto de vibración
- Vibración efecto doble click
- Fuerte vibración con efecto de clic.
- Vibración con efecto de garrapata
Pasos para implementar retroalimentación háptica en Android
Paso 1: Cree un proyecto de estudio de Android de actividad vacío
- Cree un proyecto de estudio de Android de actividad vacío.
- Consulte Android | ¿Cómo crear/comenzar un nuevo proyecto en Android Studio?
- Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: Trabajando con activity_main.xml
- En esta discusión, se analizan cuatro tipos diferentes de hápticos.
- Entonces, para generar esa háptica, se incluyen cuatro botones diferentes en el diseño. Invoque el siguiente código dentro del archivo activity_main.xml .
- Asegúrese de proporcionar los ID apropiados para que todos los botones los manejen en el archivo MainActivity.java .
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" tools:ignore="HardcodedText"> <!--Button to generate normal vibration--> <Button android:id="@+id/normalVibrationButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="64dp" android:backgroundTint="@color/colorPrimary" android:text="NORMAL VIBRATION" android:textColor="@android:color/white" /> <!--Button to generate click vibration--> <Button android:id="@+id/clickVibrationButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/normalVibrationButton" android:layout_centerHorizontal="true" android:layout_marginTop="8dp" android:backgroundTint="@color/colorPrimary" android:text="CLICK VIBRATION" android:textColor="@android:color/white" /> <!--Button to generate double click vibration--> <Button android:id="@+id/doubleClickVibrationButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/clickVibrationButton" android:layout_centerHorizontal="true" android:layout_marginTop="8dp" android:backgroundTint="@color/colorPrimary" android:text="DOUBLE CLICK VIBRATION" android:textColor="@android:color/white" /> <!--Button to generate tick vibration--> <Button android:id="@+id/tickVibrationButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/doubleClickVibrationButton" android:layout_centerHorizontal="true" android:layout_marginTop="8dp" android:backgroundTint="@color/colorPrimary" android:text="TICK VIBRATION" android:textColor="@android:color/white" /> <!--Button to generate heavy click vibration--> <Button android:id="@+id/heavyClickVibrationButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tickVibrationButton" android:layout_centerHorizontal="true" android:layout_marginTop="8dp" android:backgroundTint="@color/colorPrimary" android:text="HEAVY CLICK EFFECT VIBRATION" android:textColor="@android:color/white" /> </RelativeLayout>
Interfaz de usuario de salida:
Paso 3: invocar el permiso de vibración en el archivo AndroidManifest
La vibración del dispositivo necesita permisos. Para invocar el siguiente código dentro del archivo AndroidManifest.
XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.adityamshidlyali.vibrationsinandroid"> <!--vibrate permission which needs to be invoked as we hard accessing the vibrator hardware of the device--> <uses-permission android:name="android.permission.VIBRATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Paso 4: trabajar con el archivo MainActivity.java
- Como se dice, hay cinco tipos diferentes de vibraciones. Para esos cinco tipos de vibraciones, hay constantes para cada uno de ellos. Esos son:
DEFAULT_AMPLITUDE -> para la vibración predeterminada del dispositivo
EFFECT_CLICK -> para háptico de un solo clic
EFFECT_DOUBLE_CLICK -> para hacer doble clic en la vista
EFFECT_HEAVY_CLICK -> para un fuerte efecto de clic de la vista
EFFECT_TICK -> para vibración con efecto tick
- Invoque el siguiente código dentro del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
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 { // buttons for all the types of the vibration effects Button bNormalVibration, bClickVibration, bDoubleClickVibration, bTickVibration, bHeavyClickVibration; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get the VIBRATOR_SERVICE system service final Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); // register all of the buttons with their IDs bNormalVibration = findViewById(R.id.normalVibrationButton); bClickVibration = findViewById(R.id.clickVibrationButton); bDoubleClickVibration = findViewById(R.id.doubleClickVibrationButton); bTickVibration = findViewById(R.id.tickVibrationButton); bHeavyClickVibration = findViewById(R.id.heavyClickVibrationButton); // handle normal vibration button bNormalVibration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final VibrationEffect vibrationEffect1; // this is the only type of the vibration which requires system version Oreo (API 26) if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { // this effect creates the vibration of default amplitude for 1000ms(1 sec) vibrationEffect1 = VibrationEffect.createOneShot(1000, VibrationEffect.DEFAULT_AMPLITUDE); // it is safe to cancel other vibrations currently taking place vibrator.cancel(); vibrator.vibrate(vibrationEffect1); } } }); // handle click vibration button bClickVibration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // this type of vibration requires API 29 final VibrationEffect vibrationEffect2; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) { // create vibrator effect with the constant EFFECT_CLICK vibrationEffect2 = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK); // it is safe to cancel other vibrations currently taking place vibrator.cancel(); vibrator.vibrate(vibrationEffect2); } } }); // handle double click vibration button bDoubleClickVibration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final VibrationEffect vibrationEffect3; // this type of vibration requires API 29 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) { // create vibrator effect with the constant EFFECT_DOUBLE_CLICK vibrationEffect3 = VibrationEffect.createPredefined(VibrationEffect.EFFECT_DOUBLE_CLICK); // it is safe to cancel other vibrations currently taking place vibrator.cancel(); vibrator.vibrate(vibrationEffect3); } } }); // handle tick effect vibration button bTickVibration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final VibrationEffect vibrationEffect4; // this type of vibration requires API 29 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) { // create vibrator effect with the constant EFFECT_TICK vibrationEffect4 = VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK); // it is safe to cancel other vibrations currently taking place vibrator.cancel(); vibrator.vibrate(vibrationEffect4); } } }); // handle heavy click vibration button bHeavyClickVibration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final VibrationEffect vibrationEffect5; // this type of vibration requires API 29 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) { // create vibrator effect with the constant EFFECT_HEAVY_CLICK vibrationEffect5 = VibrationEffect.createPredefined(VibrationEffect.EFFECT_HEAVY_CLICK); // it is safe to cancel other vibrations currently taking place vibrator.cancel(); vibrator.vibrate(vibrationEffect5); } } }); } }
Producción:
La salida debe probarse en el dispositivo Android físico. Para saber cómo configurar un estudio físico de Android, consulte ¿Cómo ejecutar la aplicación de Android en un dispositivo real?
Publicación traducida automáticamente
Artículo escrito por adityamshidlyali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA