Hola vergasianos me preguntaron durante mucho tiempo como dar ordenes por voz a tu celular en android studio, ah! y de forma fácil si porque ustedes todo lo quieren fácil.
Verán después de que san google monetizara todo cof cof quise decir que nos muestre el camino de como programar necesitamos utilizar sus librerías, utilidades y etc de cosas que ellos creen que es importante para su crecimiento, así pues se me vino algo a la mente utilizar como servicio su propio modulo de búsqueda por voz e insertarla a nuestras aplicaciones, así podríamos iniciar el reproductor de música con solo pedirlo, apagar el wifi, llamar a un contacto, enviar mensaje a un contacto, apagar la pantalla del móvil (para esto necesitaremos permisos de root) etc.
como dar ordenes por voz a tu celular en android studio
Contenidos
Cosas que deberías saber sobre comando de voz de google
Google Now supone un portal de acceso al motor principal de búsqueda de Google, así que puedes preguntarle a tu querido asistente digital casi cualquier cosa que buscarías ahí: la altura de la Torre Eiffel, cuantas pulgadas son 6 centímetros o qué hay en tu agenda. Pero no es lo único, pero también puedes indicarle ciertas acciones o comandos a continuación te dejare una lista de estos comandos.
- Ok Google Encender y apagar el Bluetooth.
- Ok Google Encender o apagar la linterna
- Ok Google Leer mensajes
- Ok Google Reproducir música
- Ok Google Llamar (contacto x)
- Ok Google Enviar mensaje (contacto x)
- Ok Google Subir y bajar volumen
- Ok Google Subir y bajar brillo
- Ok Google Activar y desconectar Bluetooth
- Ok Google Apagar pantalla del móvil (se necesita permisos root)
Entro muchos mas que puedes buscarlo por la red de san google
Ahora empezaremos con la parte gráfica donde veremos como se muestra en la imagen que esta arriba, solo utilizaremos:
- 1 textView
- 2 Button
A continuación te dejo el código de la parte gráfica:
activity_main
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context=".MainActivity"> <Button android:id="@+id/btnOn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:layout_marginTop="5dp" android:text="@string/on_String" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" tools:layout_constraintLeft_creator="1" tools:layout_constraintRight_creator="1" tools:layout_constraintTop_creator="1" /> <Button android:id="@+id/btnOff" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:layout_marginTop="7dp" android:text="@string/off_String" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/btnOn" tools:layout_constraintLeft_creator="1" tools:layout_constraintRight_creator="1" /> <TextView android:id="@+id/textView" android:layout_width="0dp" android:layout_height="79dp" android:layout_marginTop="8dp" android:text="@string/desc" app:layout_constraintTop_toBottomOf="@+id/btnOff" tools:layout_constraintRight_creator="1" app:layout_constraintRight_toRightOf="@+id/btnOff" tools:layout_constraintLeft_creator="1" app:layout_constraintLeft_toLeftOf="@+id/btnOff" /> </android.support.constraint.ConstraintLayout>
Ahora nos vamos a la parte del código en nuestro MainActivity:
MainActivity
public class MainActivity extends AppCompatActivity { Button on, off; //TODO run Broadcast reciever in terminateable background service BroadcastReceiver miVoz = new BroadcastReceiver() { // Cuando se ejecuta el evento, se llama al método onReceive @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("[BroadcastReceiver]", "MyReceiver"); if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { Log.i("[BroadcastReceiver]", "Pantalla ON"); // código que se ejecuta después de que se enciende la pantalla try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("restablecimiento de la batería dumpsys \n"); outputStream.flush(); outputStream.writeBytes("salir\n"); outputStream.flush(); su.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } // termina la pantalla en el código } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { Log.i("[BroadcastReceiver]", "Pantalla OFF"); // Código que se ejecuta después de que la pantalla se apaga try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("conjunto de batería dumpsys ac 1\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } }; // CÓDIGO DEL RECEPTOR FINAL DE TRANSMISIÓN PARA SER EJECUTADO EN SERVICIO @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); on = (Button)findViewById(R.id.btnOn); off = (Button) findViewById(R.id.btnOff); registerReceiver(miVoz, new IntentFilter(Intent.ACTION_SCREEN_ON)); registerReceiver(miVoz, new IntentFilter(Intent.ACTION_SCREEN_OFF)); try { Process su = Runtime.getRuntime().exec("su"); Toast.makeText(getApplicationContext(), "Acceso root otorgado con éxito", Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(), "Acceso root no otorgado", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "La aplicación requiere permisos de root, rootee el dispositivo y vuelva a intentarlo", Toast.LENGTH_LONG).show(); } on.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "Ejecutado", Toast.LENGTH_SHORT).show(); try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("dumpsys battery set ac 1\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); Log.i("[Estado de carga] "," habilitado manualmente a través del interruptor"); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }); off.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "Executed", Toast.LENGTH_SHORT).show(); try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("restablecimiento de la batería dumpsys\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); Log.i("[Estado de carga]", "Desactivado manualmente a través del interruptor"); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } }); } }
En nuestro buil
build.gradle
compile 'com.android.support.constraint:constraint-layout:1.0.2'
Con eso hemos terminado, así que les voy dejar a continuación el enlace de descarga, pero recuerda. Copiar no es lo mismo que comparar.
Nota:
Si vas a descargar la aplicación de ejemplo, te sugiero que primero observes si tienes tu IDE actualizado, pues para este ejercicio nosotros utilizamos Android Studio 3.0.1.
Si usas una versión inferior tal vez tengas problemas al momento de ejecutarlo.
Descargar ordenar aplicación por voz.
También te puede interesar Como calcular la hipotenusa de un triangulo
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!
hola linda tarde, e visto tus trabajos y están muy padres. quisiera ver si podrías ayudarme en un proyecto donde tengo algunas dificultades. si me puedes contactar estaría genial te lo agradezco.
[email protected]
Xenia, la que debe contactarse con nosotros eres tu, arriba en la pestaña pedir ayudahay un correo, que tenga buen día.
oh lo siento, esque solo vi facebook, twitter y eso pero no vi algun un correo electronico, pero gracias.