如何使用adbkit获取Android的屏幕截图

时间:2017-04-15 15:32:59

标签: android node.js adb

我正在使用Node js来获取Android手机屏幕上显示的图像。

使用adbkit,我能够获取设备的ID并建立连接(手机已连接到计算机 - Windows)

以下是应该获取图像的功能:

[RequiredIf("ISBN==\"\"")] // backslash is used for escaping the quotes
public string ISBN13 { get; set; }

[RequiredIf("ISBN13==\"\"")]
public string ISBN { get; set; }

另外,我来自:

function get_screen (device_id) {
   client.framebuffer(device_id, 'jpeg', function(data) {
     var png_name = 'png_name_101.jpeg'
     var stream = fs.createWriteStream(png_name)
     data.pipe(stream)
   })
 }

该函数成功创建/* * @device_id: The serial number of the device. * Corresponds to the device ID in client.listDevices() */ exports.connect_device = function(device_id) { client.tcpip(device_id) .then(function(port) { return client.waitForDevice(device_id).return(port) }) .then(function(port) { return client.getDHCPIpAddress(device_id) .then(function(ip) { return client.connect(ip, port) }) .then(function(id) { return client.waitForDevice(id) }) .then(function(id) { return client.forward(id, 'tcp:9222', 'localabstract:chrome_devtools_remote') }) }) get_screen(device_id) // <--- here } 文件,但其大小为0KB!不是我的预期(预计会看到屏幕截图!)

P.S。没有异常被抛出。已安装GraphicMagick,jpeg守护程序已启动并正在运行。

如何在adb文件中获取实际屏幕?

1 个答案:

答案 0 :(得分:0)

我设法通过这样做获得截图

client.framebuffer(device.id, 'jpeg', function(err, data){
    var bufs = [];
    data.on('data', function(chunk){
        bufs.push(chunk);
    });
    data.on('end', function(){
        var buffer = new Buffer.concat(bufs);
        var out = fs.createWriteStream('out.jpg');
        out.write(buffer);
        out.end();
    });
});

jpegpng都应该可行。