Hola a todos hoy veremos un tutorial nuevo, como manipular el vibrador del celular, traigo un ejemplo básico pero muy ilustrativo.
Debemos tener en cuenta a la clase Vibrator para proceder con nuestro ejercicio, si deseas leer algo mas al respecto te dejo un enlace aquí. Al final del articulo podrán descargar el código fuente y recuerden que estoy trabajando en un versión vieja de Android, por experiencia podría decir que funcionaria en cualquier versión pero debemos tener en cuenta esto.
PASO 1: Debemos ir a nuestro AndroidManifest.xml y agregar un permiso.
<uses-permission android:name="android.permission.VIBRATE"/>
PASO 2: Debemos crear 3 botones en nuestro activity_main.xml, uno sera para uno sera para que la vibración sea constante el segundo botón para que sea uno sola vibración y el ultimo nos servirá para parar la vibración y debe quedar como la siguiente imagen:
AndroidManifest
<?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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.androidmorefast.pc.appvibrador01.MainActivity"> <Button android:text="Opcion 2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_brivate_once" android:onClick="performVibrateOnce" android:layout_alignTop="@+id/btn_brivate_repeat" android:layout_alignLeft="@+id/btn_brivate_repeat" android:layout_alignStart="@+id/btn_brivate_repeat" android:layout_marginTop="64dp" /> <Button android:text="Stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_brivate_cancel" android:onClick="performVibrateCancel" android:layout_below="@+id/btn_brivate_once" android:layout_alignLeft="@+id/btn_brivate_once" android:layout_alignStart="@+id/btn_brivate_once" android:layout_marginTop="24dp" /> <Button android:text="Opcion 1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_brivate_repeat" android:onClick="performVibrateRepeat" android:layout_marginTop="35dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> /> </RelativeLayout>
MainActivity
public class MainActivity extends AppCompatActivity { private Button btnOpc1; private Button btnOpc2; private Button btnCancel; private boolean isVibrating = false; private Vibrator vibrador; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnOpc1 = (Button) findViewById(R.id.btn_brivate_once); btnOpc2 = (Button) findViewById(R.id.btn_brivate_repeat); btnCancel = (Button) findViewById(R.id.btn_brivate_cancel); vibrador = ((Vibrator) getSystemService(VIBRATOR_SERVICE)); vibrador.cancel(); } public void performVibrateOnce(View view) { if (!vibrador.hasVibrator()) { Toast.makeText(MainActivity.this, "No soporta Vibrador", Toast.LENGTH_LONG).show(); return; } if (isVibrating) vibrador.cancel(); vibrador.vibrate(1000L); isVibrating = true; btnCancel.setEnabled(true); new Handler().postDelayed(new Runnable() { @Override public void run() { isVibrating = false; btnCancel.setEnabled(false); } }, 1000); } public void performVibrateRepeat(View view) { if (!vibrador.hasVibrator()) { Toast.makeText(MainActivity.this, "No esta activado", Toast.LENGTH_LONG).show(); return; } if (isVibrating) vibrador.cancel(); long delay = 250; long keeVip = 250; long on_off = 250; int repeat = 1; vibrador.vibrate(new long[]{delay, keeVip, on_off, on_off, on_off}, repeat); isVibrating = true; btnCancel.setEnabled(true); } public void performVibrateCancel(View view) { if (!vibrador.hasVibrator()) { Toast.makeText(MainActivity.this, "No hay Vibrador", Toast.LENGTH_LONG).show(); return; } if (isVibrating) { vibrador.cancel(); btnCancel.setEnabled(false); isVibrating = false; } } }
Hola soy Alex Céspedes fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!