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 libraryRBM library
rbm.log(args)argsany 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)packageNameStringactivityNameString
Launch an app by packageName and activityName.
rbm.stopApp(packageName)packageNameString
Close an app by packageName.
rbm.click(position)positionObject -{x: Integer, y: Integer}
rbm.tapDown(position)positionObject -{x: Integer, y: Integer}
rbm.tapUp(position)positionObject -{x: Integer, y: Integer}
rbm.moveTo(position)positionObject -{x: Integer, y: Integer}
rbm.swipe(from, to, steps)fromObject -{x: Integer, y: Integer}toObject -{x: Integer, y: Integer}stepsInteger - Interpolation points betweenfromandto
rbm.keycode(label)labelString
rbm.typing(words)wordsString
rbm.sleep()Sleep with eventDelay.
rbm.getImagePath()
// /sdcard/Robotmon/scripts/com.your.app/imagesReturns String - The path of the image folder. All about images used in this library will load and save within this folder.
rbm.screenshot(filename)filenameString
Save the screenshot in rbm.getImagePath().
rbm.oriScreencrop(filename, fromX, fromY, toX, toY)
// Examples:
rbm.oriScreencrop('startButton.png', 100, 200, 200, 300)filenameStringfromXIntegerfromYIntegertoXIntegertoYInteger
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)filenameStringfromXIntegerfromYIntegertoXIntegertoYInteger
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)filenameStringthresholdFloat
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)filenameStringthresholdFloatcountLimitIntegerallowOverlapBooleandeepBoolean
Returns Object - Find the image with filename in screen. {x: Integer, y: Integer, score: Float}
rbm.imageExists(filename, threshold)filenameStringthresholdFloat
Returns Boolean - Whether the image is exists in screen.
rbm.imageClick(filename, threshold)filenameStringthresholdFloat
Click the image if the image is exists in screen.
rbm.imageWaitClick(filename, timeout, threshold)filenameStringtimeoutIntegerthresholdFloat
Click the image if the image is exists in screen until timeout (milliseconds).
rbm.imageWaitShow(filename, timeout, threshold)filenameStringtimeoutIntegerthresholdFloat
Block until the image is found or timeout
rbm.imageWaitGone(filename, timeout, threshold)filenameStringtimeoutIntegerthresholdFloat
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)fromXIntegerfromYIntegertoXIntegertoYInteger
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(); // releaseLast updated