RBM library APIs

High level API for controlling your android phone

The RBM library is an API wrapper of the Robotmon JavaScript APIs.

RBM Config

property

description

appName

The name of the script.

oriScreenWidth

The width of developer's phone.

oriScreenHeight

The height of developer's phone.

oriVirtualButtonHeight

The virtual button height of developer's phone(getVirtualButtonHeight()). If no virtual button in app, just set to 0.

oriResizeFactor

The resize ratio of the screenshot in developer's environment. For screencrop(). Range from 0 to 1.

eventDelay

The delay milliseconds of the event.

imageThreshold

The threshold of image recognition. Range from 0 to 1.

imageQuality

The compression level of the image. Range from 0 to 100.

resizeFactor

The resize ratio of the screenshot in user's environment. Same as oriResizeFactor is better. Range from 0 to 1.

Using

// Import RBM library
importJS('RBM-0.0.2');

// Initial RBM config
var config = {
  appName: 'com.your.script',
  oriScreenWidth: 1080,
  oriScreenHeight: 1920,
  oriVirtualButtonHeight: 0,
  oriResizeFactor: 0.6,
  eventDelay: 200,
  imageThreshold: 0.85,
  imageQuality: 80,
  resizeFactor: 0.6,
};

// Create RBM instance
var rbm = new RBM(config);

// Important! Calculate the screen size, call it after start pressed!
rbm.init();

// Then using the following APIs of the RBM library

RBM library

rbm.log(args)
  • args any type - if argument is object, it will convert object to JSON string

For general output of logging information.

rbm.currentApp()

Returns Object - The current app in foreground. {packageName: String, activityName: String}

rbm.startApp(packageName, activityName)
  • packageName String

  • activityName String

Launch an app by packageName and activityName.

rbm.stopApp(packageName)
  • packageName String

Close an app by packageName.

rbm.click(position)
  • position Object - {x: Integer, y: Integer}

rbm.tapDown(position)
  • position Object - {x: Integer, y: Integer}

rbm.tapUp(position)
  • position Object - {x: Integer, y: Integer}

rbm.moveTo(position)
  • position Object - {x: Integer, y: Integer}

rbm.swipe(from, to, steps)
  • from Object - {x: Integer, y: Integer}

  • to Object - {x: Integer, y: Integer}

  • steps Integer - Interpolation points between from and to

rbm.keycode(label)
  • label String

rbm.typing(words)
  • words String

rbm.sleep()

Sleep with eventDelay.

rbm.getImagePath()
// /sdcard/Robotmon/scripts/com.your.app/images

Returns String - The path of the image folder. All about images used in this library will load and save within this folder.

rbm.screenshot(filename)
  • filename String

Save the screenshot in rbm.getImagePath().

rbm.oriScreencrop(filename, fromX, fromY, toX, toY)

// Examples:
rbm.oriScreencrop('startButton.png', 100, 200, 200, 300)
  • filename String

  • fromX Integer

  • fromY Integer

  • toX Integer

  • toY Integer

Crop the original screenshot and save it with filename. This function will resize the image with oriResizeFactor and compress with imageQuality.

rbm.screencrop(filename, fromX, fromY, toX, toY)

// Examples:
rbm.screencrop('startButton.png', 100, 200, 200, 300)
  • filename String

  • fromX Integer

  • fromY Integer

  • toX Integer

  • toY Integer

Crop the screenshot and save it with filename. This function will resize the image with resizeFactor and compress with imageQuality.

rbm.findImage(filename, threshold)

// Examples:
rbm.findImage('startButton.png', 0.9)
  • filename String

  • threshold Float

Returns Object - Find the image with filename in screen. {x: Integer, y: Integer, score: Float}

rbm.findImages(filename, threshold, countLimit, allowOverlap, deep)

// Examples:
rbm.findImages('startButton.png', 0.9, 3, false, false)
  • filename String

  • threshold Float

  • countLimit Integer

  • allowOverlap Boolean

  • deep Boolean

Returns Object - Find the image with filename in screen. {x: Integer, y: Integer, score: Float}

rbm.imageExists(filename, threshold)
  • filename String

  • threshold Float

Returns Boolean - Whether the image is exists in screen.

rbm.imageClick(filename, threshold)
  • filename String

  • threshold Float

Click the image if the image is exists in screen.

rbm.imageWaitClick(filename, timeout, threshold)
  • filename String

  • timeout Integer

  • threshold Float

Click the image if the image is exists in screen until timeout (milliseconds).

rbm.imageWaitShow(filename, timeout, threshold)
  • filename String

  • timeout Integer

  • threshold Float

Block until the image is found or timeout

rbm.imageWaitGone(filename, timeout, threshold)
  • filename String

  • timeout Integer

  • threshold Float

Block until the image is gone or timeout

rbm.keepScreenshot()

Keep the screenshot in memory. To avoid to many times screencap.

rbm.screencrop(fromX, fromY, toX, toY)
  • fromX Integer

  • fromY Integer

  • toX Integer

  • toY Integer

Keep the partial screenshot in memory. To avoid to many times screencap.

rbm.releaseScreenshot()

Release the screenshot in memory.

Using keepScreenshot

// Screencap three times
rbm.imageClick('apple.png', 0.9); // screencap, and release
rbm.imageClick('banana.png', 0.9); // screencap, and release
rbm.imageClick('cat.png', 0.9); // screencap, and release

// Screencap only one time (used when the screen has not changed)
rbm.keepScreenshot(); // screencap
rbm.imageClick('apple.png', 0.9); // no screencap, no release
rbm.imageClick('banana.png', 0.9); // no screencap, no release
rbm.imageClick('cat.png', 0.9); // no screencap, no release
rbm.releaseScreenshot(); // release

Last updated