Android-ElectricSheep-Automator

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

    Android device, e.g. a real smartphone, or an emulated (virtual)
    Android device, from your desktop computer using Perl. It's basically a
    thickishly-thin wrapper to the omnipotent Android Debug Bridge (adb)
    program.

    Note that absolutely nothing is installed on the connected device,
    neither any of its settings will be modified by this package. See "WILL
    ANYTHING BE INSTALLED ON THE DEVICE?".

        use Android::ElectricSheep::Automator;
    
        my $mother = Android::ElectricSheep::Automator->new({
          # optional as there is a default, but you may have
          # problems with the location of the adb executable
          'configfile' => $configfile,
          'verbosity' => 1,
          # we already have a device connected and ready to control
          'device-is-connected' => 1,
        });
    
        # find the devices connected to desktop and set one.
        my @devices = $mother->adb->devices;
        $mother->connect_device({'serial' => $devices->[0]->serial})
            or die;
        # no device identification is required for the method call
        # if there is only one connected device:
        $mother->connect_device() if scalar(@devices)==0;
    
        # Go Home
        $mother->home_screen() or die;
    
        # swipe up/down/left/right
        $mother->swipe({'direction'=>up}) or die;
        # dt is the time to swipe in millis,
        # the shorter the faster the swipe
        $mother->swipe({'direction'=>left, 'dt'=>100}) or die;
    
        # tap
        $mother->tap({'position'=>[100,200]});
    
        # uses swipe() to move in screens (horizontally):
        $mother->next_screen() or die;
        $mother->previous_screen() or die;
    
        # bottom navigation:
        # the "triangle" back button
        $mother->navigation_menu_back_button() or die;
        # the "circle" home button
        $mother->navigation_menu_home_button() or die;
        # the "square" overview button
        $mother->navigation_menu_overview_button() or die;
    
        # open/close apps
        $mother->open_app({'package'=>qr/calendar$/i}) or die;
        $mother->close_app({'package'=>qr/calendar$/i}) or die;
    
        # push pull files
        $mother->adb->pull($deviceFile, $localFile);
        $mother->adb->push($localFile, $deviceFileOrDir);
    
        # guess what!
        my $xmlstr = $mother->dump_current_screen_ui();
    
        # Pull the apk(s) for an app from device and save locally
        my $res = $mother->pull_app_apk_from_device({
          package => 'com.google.android.calendar'
            # or qr/calendar/i
          'output-dir' => '/tmp/apks-of-calendar-app',
        });
        print $res->{'com.google.android.calendar'}->[0]->['local-path'};
    
        # Install apk(s) for an app onto the device
        $mother->install_app({
          'apk-filename' => ['/tmp/apks/base.apk', '/tmp/apks/config.apk'],
            # or just a string scalar '/tmp/apks/1.apk'
          # optional params to the adb install command
          'install-parameters' => ['-r', '-g']
        });

CONSTRUCTOR

 new($params)

    Creates a new Android::ElectricSheep::Automator object. $params is a
    hash reference used to pass initialization options which may or should
    include the following:

      * confighash or configfile

      the configuration file holds configuration parameters. Its format is
      "enhanced" JSON (see Config::JSON::Enhanced) which is basically JSON
      which allows comments between  </*  and  */> .

      Here is an example configuration file to get you started:

        {
          "adb" : {
              "path-to-executable" : "/usr/local/android-sdk/platform-tools/adb"
          },
          "debug" : {
              "verbosity" : 0,
              </* cleanup temp files on exit */>
              "cleanup" : 1
          },
          "logger" : {
              </* log to file if you uncomment this, else console */>
              "filename" : "my.log"
          }
        }

      All sections in the configuration are mandatory. Setting "adb" to the
      wrong path will yield problems.

      confighash is a hash of configuration options with structure as above
      and can be supplied to the constructor instead of the configuration
      file.

      If no configuration is specified, then a default configuration will
      be used. In this case please specify adb-path-to-executable to point
      to the location of adb. Most likely the default path will not work
      for you.



( run in 0.723 second using v1.01-cache-2.11-cpan-39bf76dae61 )