2 votos

¿Correr el shell script en proceso de fondo sin importar la actividad en primer plano?

Tengo una concha script que parece hacer lo siguiente:

# /mnt/sdcard/touch.sh
sleep 10

while [ 1 ]; do
    input swipe 700 380 1020 600 1000
    input tap 960 540
    input swipe 1220 700 900 480 1000
    input tap 960 540
    input swipe 1220 700 900 480 1000
    input tap 960 540
    input swipe 700 380 1020 600 1000
    input tap 960 540
done

Si lo ejecuto desde Terminal IDE (un emulador de terminales), sólo funciona mientras Terminal IDE está en primer plano, así que pensé en hacer una aplicación real para ejecutarlo y mantenerlo funcionando en segundo plano. Esto es lo que tengo ahora:

package com.mycompany.myapp;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import java.io.*;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {
            // RIGHT HERE. WHY DOES NOTHING HAPPEN?
            Runtime.getRuntime().exec(new String[]{"/system/bin/sh", "/mnt/sdcard/touch.sh", });
        }
        catch (IOException e) {/*...*/}
    }
}

Pero no hace nada.

Entonces, ¿cómo ejecutaría esto, y luego lo dejaría funcionando en segundo plano para que los golpes y las pasadas se produzcan mientras otra aplicación está en primer plano? Entiendes la idea.

0 votos

Esta pregunta no debería ser cerrada como offtopic. Acaba de intentar resolverlo mediante la aplicación de escritura, pero su pregunta no tiene nada que ver con ello.

4voto

trusktr Puntos 215

Funcionó con sólo hacer sh /mnt/sdcard/touch.sh & después de haber iniciado una concha con adb shell . Luego, cuando cerré la terminal a la fuerza mientras el proceso estaba en el fondo, el proceso siguió funcionando en el fondo de mi teléfono como se esperaba. Fui capaz de matar el proceso más tarde al conseguir con adb shell el uso ps para encontrar la identificación del proceso y kill -s KILL <ID> para matarlo.

Básicamente, resulta que no tuve que hacer una aplicación para Android sólo para que mi script se ejecutara en segundo plano. Choca con...

0 votos

Tengo curiosidad por saber cuál es el comportamiento de varias versiones de Android. Escribí un script para registrar los niveles de la batería que se ejecuta en un bucle sin fin - y me encuentro con que si empiezo bifurcado como lo hizo & - y tirar del cable USB... que, de hecho, se detiene... pero se reanuda si vuelvo cable USB.

0 votos

tenía las mismas necesidades, ¡la respuesta me ayudó mucho! pero... curiosamente, sólo dentro de adb shell Al ejecutar exactamente el mismo script dentro de una aplicación de terminal de Android, sólo pude lograr el mismo efecto (para realmente conseguir que algunos toques funcionen ) después de activar Root con su ¿alguna pista de por qué puede ser esto?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X