306 lines
15 KiB
C++
306 lines
15 KiB
C++
/*
|
|
* BuriedPoint 类使用了 kysdk-log 和 kysdk-diagnostics 库,调用方需要链接 kysdk-log 和 kysdk-diagnostics 库
|
|
*/
|
|
|
|
#ifndef BURIEDPOINT_HPP_
|
|
#define BURIEDPOINT_HPP_
|
|
|
|
#include <sstream>
|
|
#include <iostream>
|
|
#include <string.h>
|
|
#include <map>
|
|
|
|
#include <libkydiagnostics.h>
|
|
#include <libkylog.h>
|
|
|
|
#include "utils.hpp"
|
|
|
|
namespace kabase
|
|
{
|
|
|
|
class BuriedPoint
|
|
{
|
|
public:
|
|
BuriedPoint() = default;
|
|
~BuriedPoint() = default;
|
|
|
|
/* 埋点类型 */
|
|
enum BuriedPointType {
|
|
FunctionType = 0, /* 功能性打点 */
|
|
PerformanceType, /* 性能型打点 */
|
|
StabilityType, /* 稳定型打点 */
|
|
TestType /* 测试预留 */
|
|
};
|
|
|
|
/* 点位 */
|
|
/* 规则说明 */
|
|
/* 0x 00 0 000
|
|
* | | |
|
|
* 应用标识 类型标识 点位
|
|
*/
|
|
enum PT {
|
|
KylinIpmsgNicknameModify = 0x010001, /* 昵称修改 */
|
|
KylinIpmsgOpenSaveDir = 0x010002, /* 打开文件保存目录(主界面入口) */
|
|
KylinIpmsgMainSearch = 0x010003, /* 主界面搜索 */
|
|
KylinIpmsgHistorySearch = 0x010004, /* 历史记录搜索 */
|
|
KylinIpmsgSetTop = 0x010005, /* 设置置顶 */
|
|
KylinIpmsgModifyFriendNotes = 0x010006, /* 修改好友备注 */
|
|
KylinIpmsgViewInformation = 0x010007, /* 查看资料 */
|
|
KylinIpmsgChangeDir = 0x010008, /* 更改目录 */
|
|
KylinIpmsgCleanCache = 0x010009, /* 清空缓存 */
|
|
KylinIpmsgClearChatRecord = 0x010010, /* 清空聊天记录 */
|
|
KylinIpmsgClearSingleChatRecord = 0x010011, /* 清空单人聊天记录 */
|
|
KylinIpmsgDeleteRecord = 0x010012, /* 删除记录 */
|
|
KylinIpmsgBatchDelete = 0x010013, /* 批量删除 */
|
|
KylinIpmsgSendMessage = 0x010014, /* 发送消息 */
|
|
KylinIpmsgSendFiles = 0x010015, /* 发送文件 */
|
|
KylinIpmsgSendDir = 0x010016, /* 发送目录 */
|
|
KylinIpmsgSendScreenshot = 0x010017, /* 发送截屏 */
|
|
KylinIpmsgResend = 0x010018, /* 重新发送 */
|
|
KylinIpmsgCopy = 0x010019, /* 复制 */
|
|
KylinIpmsgOpen = 0x010020, /* 打开 */
|
|
KylinIpmsgOpenDir = 0x010021, /* 打开目录 */
|
|
KylinIpmsgSaveAs = 0x010022, /* 另存为 */
|
|
KylinIpmsgTray = 0x010023, /* 托盘 */
|
|
|
|
KylinFontViewInstallFont = 0x020001, /* 安装字体 */
|
|
KylinFontViewUninstallFont = 0x020002, /* 卸载字体 */
|
|
KylinFontViewSearchFont = 0x020003, /* 搜索字体 */
|
|
KylinFontViewApplyFont = 0x020004, /* 应用字体 */
|
|
KylinFontViewExportFont = 0x020005, /* 导出字体 */
|
|
KylinFontViewCollectionFont = 0x020006, /* 收藏字体 */
|
|
KylinFontViewCancelCollectionFont = 0x020007, /* 取消收藏字体 */
|
|
KylinFontViewFontInformation = 0x020008, /* 字体信息 */
|
|
KylinFontViewCopywritingChange = 0x020009, /* 文案更改 */
|
|
KylinFontViewFontSizeChange = 0x020010, /* 预览字号调整 */
|
|
|
|
KylinCalaulatorStandardMode = 0x030001, /* 标准模式 */
|
|
KylinCalaulatorScientificMode = 0x030002, /* 科学模式 */
|
|
KylinCalaulatorRateMode = 0x030003, /* 汇率模式 */
|
|
KylinCalaulatorProgrammerMode = 0x030004, /* 程序员模式 */
|
|
|
|
KylinWeatherCollection = 0x040001, /* 收藏 */
|
|
KylinWeatherChangeCity = 0x040002, /* 切换城市 */
|
|
KylinWeatherCitySearch = 0x040003, /* 城市搜索 */
|
|
KylinWeatherFullScreen = 0x040004, /* 全屏 */
|
|
|
|
KylinPhotoViewerOpenPicture = 0x050001, /* 打开图片 */
|
|
KylinPhotoViewerSwitchPicture = 0x050002, /* 切换图片 */
|
|
KylinPhotoViewerFlip = 0x050003, /* 翻转 */
|
|
KylinPhotoViewerRotate = 0x050004, /* 旋转 */
|
|
KylinPhotoViewerAddPicture = 0x050005, /* 添加图片 */
|
|
KylinPhotoViewerZoomInandOut = 0x050006, /* 放大缩小 */
|
|
KylinPhotoViewerPictureDetails = 0x050007, /* 图片详情 */
|
|
KylinPhotoViewerCutting = 0x050008, /* 裁剪 */
|
|
KylinPhotoViewerCoyp = 0x050009, /* 复制 */
|
|
KylinPhotoViewerPrint = 0x050010, /* 打印 */
|
|
KylinPhotoViewerDelete = 0x050011, /* 删除 */
|
|
KylinPhotoViewerSaveAs = 0x050012, /* 另存为 */
|
|
KylinPhotoViewerRename = 0x050013, /* 重命名 */
|
|
KylinPhotoViewerSetAsDesktopWallpaper = 0x050014, /* 设置为桌面壁纸 */
|
|
KylinPhotoViewerShowInFolder = 0x050015, /* 在文件夹中显示 */
|
|
KylinPhotoViewerPicturePreview = 0x050016, /* 图片预览 */
|
|
KylinPhotoViewerCurrentPointZoom = 0x050017, /* 当前点缩放 */
|
|
|
|
KylinServiceSupportFileUpload = 0x060001, /* 文件上传 */
|
|
KylinServiceSupportVideoape = 0x060002, /* 录像 */
|
|
KylinServiceSupportFileCopy = 0x060003, /* 文件拷贝 */
|
|
KylinServiceSupportJumpOfficicalWebsite = 0x060004, /* 跳转官网主页 */
|
|
KylinServiceSupportJumpOnlineService = 0x060005, /* 跳转在线客服 */
|
|
|
|
KylinPrinterManuallyInstallPrinter = 0x070001, /* 手动安装打印机 */
|
|
KylinPrinterSetResolution = 0x070002, /* 设置分辨率 */
|
|
KylinPrinterSetPaperSize = 0x070003, /* 设置纸张大小 */
|
|
KylinPrinterSetPaperType = 0x070004, /* 设置纸张类型 */
|
|
KylinPrinterSetCationSource = 0x070005, /* 设置纸盒来源 */
|
|
KylinPrinterSetDuplexPrint = 0x070006, /* 设置双面打印 */
|
|
KylinPrinterSetInkType = 0x070007, /* 设置墨水类型 */
|
|
KylinPrinterADDRemovePrinter = 0x070008, /* 添加删除打印机 */
|
|
KylinPrinterSetShareStartup = 0x070009, /* 设置共享启动 */
|
|
KylinPrintTestPage = 0x070010, /* 打印测试页 */
|
|
KylinPrinterCancelPrintJob = 0x070011, /* 取消打印任务 */
|
|
KylinPrinterDeletePrintJob = 0x070012, /* 删除打印任务 */
|
|
KylinPrinterRePrint = 0x070013, /* 重新打印 */
|
|
KylinPrinterManualyModifyDrive = 0x070014, /* 手动修改驱动 */
|
|
KylinPrinterRename = 0x070015, /* 重命名 */
|
|
|
|
KylinRecorderRecording = 0x080001, /* 录音 */
|
|
KylinRecorderPlayPause = 0x080002, /* 播放暂停 */
|
|
KylinRecorderClip = 0x080003, /* 剪辑 */
|
|
KylinRecorderSign = 0x080004, /* 标记 */
|
|
KylinRecorderDelete = 0x080005, /* 删除 */
|
|
KylinRecorderBluetoothRecord = 0x080006, /* 蓝牙录音 */
|
|
KylinRecorderSaveAs = 0x080007, /* 另存为 */
|
|
KylinRecorderOpenFileLocation = 0x080008, /* 打开文件位置 */
|
|
KylinRecorderTopicSwitch = 0x080009, /* 主题切换 */
|
|
|
|
KylinCameraPreviewMonitor = 0x090001, /* 预览画面 */
|
|
KylinCameraSingleShot = 0x090002, /* 单拍 */
|
|
KylinCameraContinuousShot = 0x090003, /* 连拍 */
|
|
KylinCameraDelay = 0x090004, /* 延时拍照 */
|
|
KylinCameraVideotape = 0x090005, /* 录像 */
|
|
KylinCameraCameraSelection = 0x090006, /* 摄像头选用 */
|
|
KylinCameraResolutionSelection = 0x090007, /* 分辨率选用 */
|
|
KylinCameraVideoFormatSelection = 0x090008, /* 视频格式选用 */
|
|
KylinCameraPictureFormatSelection = 0x090009, /* 图片格式选用 */
|
|
KylinCameraChangeSavePath = 0x090010, /* 更改存储路径 */
|
|
KylinCameraThumbnail = 0x090011, /* 缩略图 */
|
|
KylinCameraGridLine = 0x090012, /* 网格线 */
|
|
KylinCameraMirrorFun = 0x090013, /* 镜像功能 */
|
|
|
|
KylinNotebookOrderList = 0x100001, /* 有序列表 */
|
|
KylinNotebookUnorderList = 0x100002, /* 无序列表 */
|
|
KylinNotebookBold = 0x100003, /* 加粗 */
|
|
KylinNotebookItalics = 0x100004, /* 斜体 */
|
|
KylinNotebookUnderline = 0x100005, /* 下划线 */
|
|
KylinNotebookDeleteline = 0x100006, /* 删除线 */
|
|
KylinNotebookFontSize = 0x100007, /* 字号 */
|
|
KylinNotebookFontColor = 0x100008, /* 字体颜色 */
|
|
KylinNotebookInsertPicture = 0x100009, /* 插入图片 */
|
|
KylinNotebookInterfaceColor = 0x100010, /* 界面配色 */
|
|
KylinNotebookDeleteCurrent = 0x100011, /* 删除当前 */
|
|
KylinNotebookUiTop = 0x100012, /* UI 置顶 */
|
|
KylinNotebookListMode = 0x100013, /* 列表模式 */
|
|
KylinNotebookIconMode = 0x100014, /* 图标模式 */
|
|
KylinNotebookNewNote = 0x100015, /* 新建便签 */
|
|
KylinNotebookSearch = 0x100016, /* 搜索 */
|
|
KylinNotebookDelete = 0x100017, /* 删除 */
|
|
KylinNotebookModeChange = 0x100018, /* 模式切换 */
|
|
|
|
KylinOsManagerGarbageClean = 0x110001, /* 垃圾清理 */
|
|
KylinOsManagerFileShredding = 0x110002, /* 文件粉碎 */
|
|
|
|
KylinGpuControllerBaseInfo = 0x120001, /* 基本信息 */
|
|
KylinGpuControllerRunState = 0x120002, /* 运行状态 */
|
|
KylinGpuControllerDriveInfo = 0x120003, /* 驱动信息 */
|
|
KylinGpuControllerSwitch = 0x120003, /* 显卡切换 */
|
|
|
|
KylinNetworkCheckStartCheck = 0x130001, /* 开始检测 */
|
|
|
|
KylinGallerySwitchFolder = 0x140001, /* 切换目录 */
|
|
KylinGalleryOpenViewer = 0x140002, /* 打开麒麟看图 */
|
|
|
|
KylinMobileAssistantAndroidConn = 0x150001, /* 安卓链接 */
|
|
KylinMobileAssistantPcConn = 0x150002, /* PC链接 */
|
|
KylinMobileAssistantUsbConn = 0x150003, /* Usb链接 */
|
|
KylinMobileAssistantWifiConn = 0x150004, /* Wifi链接 */
|
|
KylinMobileAssistantDeviceDiscovery = 0x150005, /* 设备发现 */
|
|
KylinMobileAssistantDisconnect = 0x150006, /* 断开链接 */
|
|
KylinMobileAssistantMobileScreen = 0x150007, /* 手机投屏 */
|
|
KylinMobileAssistantPcScreen = 0x150008, /* PC 投屏 */
|
|
KylinMobileAssistantPictureList = 0x150009, /* 图片列表 */
|
|
KylinMobileAssistantVideoList = 0x150010, /* 视频列表 */
|
|
KylinMobileAssistantAudioList = 0x150011, /* 音频列表 */
|
|
KylinMobileAssistantDocList = 0x150012, /* 文档列表 */
|
|
KylinMobileAssistantQQFileList = 0x150013, /* QQ 文件列表 */
|
|
KylinMobileAssistantWechatFileList = 0x150014, /* 微信文件列表 */
|
|
KylinMobileAssistantMobileStorage = 0x150015, /* 手机存储 */
|
|
KylinMobileAssistantSwitchView = 0x150016, /* 切换视图 */
|
|
KylinMobileAssistantRefreshList = 0x150017, /* 刷新列表 */
|
|
KylinMobileAssistantUploadFile = 0x150018, /* 上传文件 */
|
|
KylinMobileAssistantDownloadFile = 0x150019, /* 下载文件 */
|
|
KylinMobileAssistantOpenFile = 0x150020, /* 打开文件 */
|
|
|
|
KylinScannerOneClickBeautification = 0x160001, /* 一键美化 */
|
|
KylinScannerRectification = 0x160002, /* 自动纠偏 */
|
|
KylinScannerTextRecognition = 0x160003, /* 文本识别 */
|
|
KylinScannerCutting = 0x160004, /* 裁剪 */
|
|
KylinScannerRotate = 0x160005, /* 旋转 */
|
|
KylinScannerImage = 0x160006, /* 镜像 */
|
|
KylinScannerAddWatermark = 0x160007, /* 加水印 */
|
|
KylinScannerSendMail = 0x160008, /* 发送邮件 */
|
|
KylinScannerSaveAs = 0x160009, /* 另存为 */
|
|
KylinScannerSinglePageScan = 0x160010, /* 单页扫描 */
|
|
KylinScannerMultiPageScan = 0x160011, /* 多页扫描 */
|
|
|
|
KylinCalendarMonthDetails = 0x170001, /* 查看月详情 */
|
|
KylinCalendarMonthSwitch = 0x170002, /* 月切换 */
|
|
KylinCalendarDoday = 0x170003, /* 定位到今天 */
|
|
|
|
TestFunPoint = 0x999999 /* 测试预留 */
|
|
};
|
|
|
|
static bool functionBuriedPoint(AppName packageName, PT point)
|
|
{
|
|
static char *messageType = (char *)"FunctionType";
|
|
char *appName = strdup(Utils::getAppName(packageName).c_str());
|
|
|
|
std::string hex;
|
|
std::stringstream ss;
|
|
|
|
ss << std::hex << point;
|
|
ss >> hex;
|
|
|
|
KBuriedPoint pt;
|
|
pt.key = "FunctionName";
|
|
pt.value = hex.c_str();
|
|
|
|
if (kdk_buried_point(appName, messageType, &pt, 1)) {
|
|
free(appName);
|
|
klog_err("kabase: buried point fail !\n");
|
|
return false;
|
|
}
|
|
|
|
free(appName);
|
|
|
|
return true;
|
|
};
|
|
|
|
static bool buriedPoint(AppName packageName, BuriedPointType buriedPointType, std::map<std::string, std::string> data)
|
|
{
|
|
char *appName = strdup(Utils::getAppName(packageName).c_str());
|
|
|
|
char type[128];
|
|
memset(type, '\0', sizeof(type));
|
|
switch (buriedPointType) {
|
|
case BuriedPointType::FunctionType:
|
|
strcpy(type, "FunctionType");
|
|
break;
|
|
case BuriedPointType::PerformanceType:
|
|
strcpy(type, "PerformanceType");
|
|
break;
|
|
case BuriedPointType::StabilityType:
|
|
strcpy(type, "StabilityType");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (!strlen(type)) {
|
|
klog_err("kabase: buried point type is empty !\n");
|
|
return false;
|
|
}
|
|
|
|
int size = data.size();
|
|
if (size == 0) {
|
|
klog_err("kabase: buried point data is empty !\n");
|
|
return false;
|
|
}
|
|
|
|
KBuriedPoint *pt = (KBuriedPoint *)malloc(sizeof(KBuriedPoint) * size);
|
|
{
|
|
int i;
|
|
std::map<std::string, std::string>::iterator it;
|
|
for (i = 0, it = data.begin(); it != data.end() && i < size; it++, i++) {
|
|
pt[i].key = it->first.c_str();
|
|
pt[i].value = it->second.c_str();
|
|
}
|
|
}
|
|
|
|
if (kdk_buried_point(appName, type, pt, size)) {
|
|
free(appName);
|
|
free(pt);
|
|
klog_err("kabase: buried point fail !\n");
|
|
return false;
|
|
}
|
|
|
|
free(appName);
|
|
free(pt);
|
|
|
|
return true;
|
|
};
|
|
};
|
|
|
|
}
|
|
|
|
#endif |