¿Cómo componer patrones de vibración en Android?

Como se analiza en Cómo hacer vibrar un dispositivo mediante programación en Android anteriormente en el artículo. Entonces, en este artículo, se ha discutido cómo hacer patrones de vibración, lo que produce las vibraciones de diferentes formas de onda. Esta implementación puede ser una réplica de la vibración que se produce cuando hay una llamada entrante y el dispositivo hace varios patrones de vibraciones.

Pasos para implementar Patrones de Vibración en Android

Paso 1: Cree un proyecto de estudio de Android de actividad vacía

Paso 2: trabajar con el archivo activity_main.xml

  • Implemente un solo botón en el diseño que se utiliza para crear formas de onda de vibración, cuando se presiona.
  • Invoque el siguiente código en el archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="HardcodedText">
  
    <!--button to compose vibration waveforms when pressed-->
    <Button
        android:id="@+id/makeVibrationCompositionButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:backgroundTint="@color/colorPrimary"
        android:text="COMPOSE VIBRATION"
        android:textColor="@android:color/white" />
  
</RelativeLayout>

Interfaz de usuario de salida:

Compose Vibration Patterns in Android

Paso 3: Buscando vibrar permisos

  • Buscando el permiso de vibración en el archivo AndroidManifest.xml, porque estamos accediendo a la parte de hardware del dispositivo.
  • Invoque el siguiente código dentro del archivo AndroidManifest.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.adityamshidlyali.composevibrationinandroid">
  
    <!--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

  • En el artículo anterior, se ha discutido la vibración predefinida para el dispositivo Android. Pero aquí se crean formas de onda personalizadas utilizando una array variable larga.
  • Uno de los puntos importantes a tener en cuenta aquí es que, al crear las formas de onda en una array de tipos de tipo largo, el primer elemento debe ser cero (0). Esto se debe a que, en primera instancia, es necesario encender el vibrador del dispositivo y luego hacerlo vibrar para las formas de onda adicionales.
  • En este caso, la forma de onda es larga[] vibraciónWaveFormDurationPattern = {0, 10, 200, 500, 700, 1000, 300, 200, 50, 10}; del código de abajo. Y la primera forma de onda es 0.
  • Invoque el siguiente código en el 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 {
  
    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);
                }
            }
        });
    }
}

Producción:

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 *