2022-12-26 来源:华纳网 责任编辑:王双双 人气:
核心提示:大家好,欢迎来到谷雨课堂本节,就插播一下那个小工具 scrcpy 这个工具其实也是一个开源的工具
大家好,欢迎来到谷雨课堂


上讲的课程中,
不少小伙伴对那个安卓投屏软件感兴趣,

那么本节,
就插播一下那个小工具 scrcpy
这个工具其实也是一个开源的工具
它本质上是用android的adb提供的功能
来实现屏幕数据的传输并完成显示
此处还有键盘、鼠标事件的传递

这个开源库有多种语言的实现,
谷雨老师建议同学们只看看c++和python的实现就可以了
毕竟原理都一样

#include "adb_device.h"

#include <stdlib.h>
#include <string.h>

void
sc_adb_device_destroy(struct sc_adb_device *device) {
    free(device->serial);
    free(device->state);
    free(device->model);
}

void
sc_adb_device_move(struct sc_adb_device *dst, struct sc_adb_device *src) {
    *dst = *src;
    src->serial = NULL;
    src->state = NULL;
    src->model = NULL;
}

void
sc_adb_devices_destroy(struct sc_vec_adb_devices *devices) {
    for (size_t i = 0; i < devices->size; ++i) {
        sc_adb_device_destroy(&devices->data[i]);
    }
    sc_vector_destroy(devices);
}

enum sc_adb_device_type
sc_adb_device_get_type(const char *serial) {
    // Starts with "emulator-"
    if (!strncmp(serial, "emulator-", sizeof("emulator-") - 1)) {
        return SC_ADB_DEVICE_TYPE_EMULATOR;
    }

    // If the serial contains a ':', then it is a TCP/IP device (it is
    // sufficient to distinguish an ip:port from a real USB serial)
    if (strchr(serial, ':')) {
        return SC_ADB_DEVICE_TYPE_TCPIP;
    }

    return SC_ADB_DEVICE_TYPE_USB;
}


完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/





免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。