2 votes

Exécuter un script shell en arrière-plan, quelle que soit l'activité en avant-plan ?

J'ai un script shell qui ressemble à ce qui suit :

# /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 je l'exécute à partir de Terminal IDE (un émulateur de terminal), il ne fonctionne que lorsque Terminal IDE est au premier plan. J'ai donc pensé créer une véritable application pour l'exécuter et la laisser tourner en arrière-plan. Voici ce que j'ai maintenant :

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) {/*...*/}
    }
}

Mais ça ne fait rien.

Comment faire pour exécuter cette application, puis la laisser tourner en arrière-plan de façon à ce que les taps et les swipes se produisent pendant qu'une autre application est au premier plan ? Vous avez compris l'idée :D

4voto

RunningUtes Points 3872

Ça a marché en faisant juste sh /mnt/sdcard/touch.sh & après avoir démarré un shell avec adb shell . Ensuite, lorsque j'ai fermé le terminal de force alors que le processus était en arrière-plan, le processus est resté en cours d'exécution en arrière-plan de mon téléphone comme prévu. J'ai pu tuer le processus plus tard en obtenant avec adb shell l'utilisation ps pour trouver l'ID du processus et kill -s KILL <ID> pour le tuer.

En fait, il s'est avéré que je n'avais pas besoin de créer une application Android juste pour faire fonctionner mon script en arrière-plan. Clash on...

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X