Resumiendo y concretando el tema de detectar otra aplicación, para dummies: en una tarea de Tasker podemos saber si otra app concreta está funcionando, ya sea en primer plano o en segundo plano, y dependiendo de eso se pueden tomar decisiones dentro de la tarea. Los detalles son los siguientes.
En primer lugar hay que conocer el nombre que la aplicación tiene dentro de Android. Es lo que técnicamente se llama
package name, y la forma más sencilla de obtenerlo es buscar la aplicación en la web de
Google play y fijarse en la URL del navegador: el package name es lo que aparece tras el "
id=" (y antes del primer "
&", si es que lo hubiera).
Por ejemplo, para la app
Android Terminal Emulator la URL puede ser
https://play.google.com/store/apps/details?id=jackpal.androidterm
o algo más largo como por ejemplo
https://play.google.com/store/apps/details?id=jackpal.androidterm&feature=nav_result#?t=W251bGwsMSwyLDNd
Pues bien, en ambos casos se ve que el package name es
jackpal.androidterm
De forma similar, debes obtener el package name de la app que tú quieras controlar.
Ya en Tasker, hay que usar la acción (del grupo
Script) llamada
Ejecutar-consola. En la casilla del
Comando ponemos
cat /proc/$(pgrep jackpal.androidterm$)/oom_adj
sustituyendo jackpal.androidterm por el package name de la aplicación que hayas elegido. La acción Ejecutar-consola tiene, más abajo, una casilla rotulada como
Almacenar Salida En ; ahí podremos el nombre de una variable que recoja la información devuelta por el comando; por ejemplo podemos escribir
%salida.
Y bastante más abajo hay que marcar una opción que lleva el rótulo
Continuar Tarea Tras Error.
Con eso ya hemos terminado de configurar esta acción. Cuando la tarea se active, Android ejecutará el comando y devolverá una u otra información según sea el estado de la aplicación. A los efectos que nos interesa, si la app está ejecutándose (en primer o segundo plano) el comando devolverá o bien el valor
0 (cero) o bien el valor
2 (dos). O sea que, a continuación, podemos usar en la misma tarea una condición en base a la variable que hayamos usado, del tipo siguiente
Si(If) %salida ~ 0/2
(Si %salida coincide con cero o dos) que será cierta si la app se está ejecutando. O bien podemos usar una condición del tipo contrario
Si %salida !~ 0/2
(si %salida no coincide con cero o dos) que será cierta si la app no se está ejecutando.
Eso es todo. Si quieres más información, lee este hilo desde el inicio, y/o la página siguiente:
http://www.htcmania.com/showthread.p...95#post7356195