¿Cómo hacer vibrar un dispositivo mediante programación en Android?

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:

  1. Vibración predeterminada del dispositivo
  2. Haga clic en efecto de vibración
  3. Vibración efecto doble click
  4. Fuerte vibración con efecto de clic.
  5. 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

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:

 Vibrate a Device Programmatically in Android

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *