123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- #include "stdafx.h"
- #include "SDKInterface.h"
- bool SDKInterface::m_bShortCut = false;
- std::shared_ptr<IXPhoneDevice> SDKInterface::m_XPhoneDevice = NULL;
- IXPhoneMonitorAddin* SDKInterface::m_pMonitor = NULL;
- SDKInterface::SDKInterface() :m_bInit(false)
- {
- }
- SDKInterface::~SDKInterface()
- {
- }
- bool SDKInterface::IsTaskIdExist(INT nTaskId)
- {
- bool bExist = false;
- for (std::vector<TaskInfo>::iterator it = m_taskinfo.begin(); it != m_taskinfo.end(); it++)
- {
- if (it->nTaskId == nTaskId)
- {
- bExist = TRUE;
- break;
- }
- }
- return bExist;
- }
- bool SDKInterface::IsTaskTypeExist(XPhonePlus::XPhone_TaskType TaskType)
- {
- bool bExist = false;
- for (std::vector<TaskInfo>::iterator it = m_taskinfo.begin(); it != m_taskinfo.end(); it++)
- {
- if (it->TaskType == TaskType)
- {
- bExist = TRUE;
- break;
- }
- }
- return bExist;
- }
- void SDKInterface::StopTask(INT nTaskId)
- {
- }
- INT SDKInterface::GetMaxTaskId()
- {
- INT nMaxTaskId = -1;
- for (std::vector<TaskInfo>::iterator it = m_taskinfo.begin(); it != m_taskinfo.end(); it++)
- {
- nMaxTaskId = it->nTaskId > nMaxTaskId ? it->nTaskId : nMaxTaskId;
- }
- return ++nMaxTaskId;
- }
- bool SDKInterface::Init()
- {
- XString strAdbResult = IXPhoneMonitorAddin::ExecuteAdbCommand(__XT("XPhoneAdb"));
- if (strAdbResult != __XT("XPhoneAdb"))
- {
- printf("adb 服务进程不是本模块的,必须先结束 其他adb 进程\r\n");
- return false;
- }
- m_pMonitor = IXPhoneMonitorAddin::CreateInstance();
- if (XErrorcode_Success == m_pMonitor->Init((IXPhoneDeviceEvent*)this))
- {
- m_pMonitor->StartListen();
- return true;
- }
- return false;
- }
- void SDKInterface::SavePng(const byte*pBuffer, int iLen, const XCHAR* strSavePath)
- {
- FILE* pFile = _wfopen(strSavePath, L"wb+");
- if (NULL == pFile)
- {
- return;
- }
- fwrite(pBuffer, 1, iLen, pFile);
- fclose(pFile);
- }
- void SDKInterface::OnScreenShow(const byte* buffer, int iBufferLen)
- {
- if (m_bShortCut)
- {
- SavePng(buffer, iBufferLen, __XT("c:\\screenshot.png"));
- m_bShortCut = false;
- printf("截图保存完成\r\n");
- }
- }
- void SDKInterface::OnRecvTcpMsg(const XString& strDeviceIdentify, const byte* buffer, int iBufferLen)
- {
- XPhonePlus::XPhone_ReqHead head;
- head.ParseFromArray(buffer, iBufferLen);
- switch (head.head().msgtype())
- {
- case XPhonePlus::MsgType_ContactInfoRsp:
- {
- printf("获取到联系人列表:\r\n");
- XPhonePlus::XPhone_ContactInfoRsp response;
- response.ParseFromArray(buffer, iBufferLen);
- // 打印出所有微信好友信息;
- INT nSize = response.contactlist_size();
- for (int i = 0; i < nSize; i++ )
- {
- XPhonePlus::XPhone_ContactInfo pContactInfo = response.contactlist(i);
- pContactInfo.PrintDebugString();
- }
- response.PrintDebugString();
- }
- break;
- case XPhonePlus::MsgType_ChatroomInfoRsp:
- {
- printf("获取到聊天室列表:\r\n");
- XPhonePlus::XPhone_ChatroomInfoRsp response;
- response.ParseFromArray(buffer, iBufferLen);
- // 打印出所有微信群信息;
- INT nSize = response.roomlist_size();
- INT nMemberSize = 0;
- for (int i = 0; i < nSize; i++ )
- {
- XPhonePlus::XPhone_ChatRoomInfo pChatRoomInfo = response.roomlist(i);
- nMemberSize = pChatRoomInfo.members_size();
- printf("微信群成员数量:%d\r\n",nMemberSize);
- // 获取微信群里的成员信息;
- for (int j = 0; j < nMemberSize; j++ )
- {
- XPhonePlus::XPhone_ContactInfo pContactInfo = pChatRoomInfo.members(j);
- pContactInfo.PrintDebugString();
- }
- printf("\r\n");
- pChatRoomInfo.PrintDebugString();
- }
- //response.PrintDebugString();
- }
- break;
- case XPhonePlus::MsgType_CaijiIDRsp:
- {
- printf("采集到的id:\r\n");
- XPhonePlus::XPhone_CaijiIDRsp response;
- response.ParseFromArray(buffer, iBufferLen);
- response.PrintDebugString();
- }
- break;;
- case XPhonePlus::MsgType_TaskRsp:
- {
- //接收到任务完成或者暂停消息
- XPhonePlus::XPhone_TaskRsp resp;
- resp.ParseFromArray(buffer, iBufferLen);
- switch (resp.tasktype())
- {
- case XPhonePlus::TaskType_OneKeyZan:
- {
- printf("点赞完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_AddNearby:
- {
- printf("添加附近的人完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_AddAddressbook:
- {
- printf("添加通讯录完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_AddQQFriend:
- {
- printf("QQ 好友添加完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_AddWeichatFriend:
- {
- printf("微信好友添加完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_Radar:
- {
- printf("雷达扫描完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_Yaoyiyao:
- {
- printf("摇一摇完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_SendSNS:
- {
- printf("朋友圈发送完成\r\n");
- }
- break;
- case XPhonePlus::TaskType_DeleteZombine:
- {
- printf("僵尸删除完成\r\n");
- }
- break;
- default:
- break;
- }
- }
- break;
- case XPhonePlus::MsgType_ChatMsg:
- {
- printf("接收到好友消息\r\n");
- XPhonePlus::XPhone_ChatMsg response;
- response.ParseFromArray(buffer, iBufferLen);
- response.PrintDebugString();
- }
- break;
- }
- }
- void SDKInterface::OnCommonDisconnect(const XString& strDeviceIdentify)
- {
- printf("设备断开了:%s\r\n", XStringToLocal(strDeviceIdentify).c_str());
- }
- void SDKInterface::XPhoneDeviceChanged(std::shared_ptr<IXPhoneDevice> pXPhoneDevice, enum XDeviceChange changeType)
- {
- XString strIdentify = pXPhoneDevice->GetIdentify();
- printf("device changed: changetype:%d identify:%s\r\n", changeType, XStringToLocal(strIdentify).c_str());
- if (changeType == XDeviceChange_Add)
- {
- m_XPhoneDevice = pXPhoneDevice;
- XErrorcode errorcode = m_XPhoneDevice->ConnectToDevice();
- printf("设备连接:errorcode:%d %s\r\n", errorcode, XStringToLocal(strIdentify).c_str());
- if (errorcode == XErrorcode_Success)
- {
- XDeviceInfo deviceInfo;
- errorcode = m_XPhoneDevice->GetDeviceInfo(deviceInfo, true);
- printf("获取设备信息:errorcode:%d %s\r\n品牌:%s\r\n型号:%s\r\n分辨率:%s\r\n设备名:%s\r\nIMEI:%s\r\n", errorcode, XStringToLocal(strIdentify).c_str(),
- XStringToLocal(deviceInfo.szBrand).c_str(),
- XStringToLocal(deviceInfo.szModel).c_str(),
- XStringToLocal(deviceInfo.szResolution).c_str(),
- XStringToLocal(deviceInfo.szDeviceName).c_str(),
- XStringToLocal(deviceInfo.szIMEI).c_str());
- //设置屏幕回调;
- pXPhoneDevice->SetScreenShowCallback((IXPhoneScreenShow*)this);
- //设置消息回调;
- pXPhoneDevice->SetCommonTcpMsgCallback((IXPhoneCommonRecvMsg*)this);
- m_bInit = true;
- }
- }
- else
- {
- m_XPhoneDevice = NULL;
- m_bInit = false;
- }
- }
- void SDKInterface::BrightScreen(bool bBright /* = true */)
- {
- if (!m_bInit)
- return;
- std::string strRequest;
- if (!bBright)
- {
- XPhonePlus::XPhone_ReqHead request;
- XPhonePlus::XPhone_MsgBase* pBase = new XPhonePlus::XPhone_MsgBase;
- pBase->set_msgtype(XPhonePlus::MsgType_LockScreen);
- request.set_allocated_head(pBase);
- request.SerializeToString(&strRequest);
- }
- else
- {
- XPhonePlus::XPhone_ReqHead request;
- XPhonePlus::XPhone_MsgBase* pBase = new XPhonePlus::XPhone_MsgBase;
- pBase->set_msgtype(XPhonePlus::MsgType_UnlockScreen);
- request.set_allocated_head(pBase);
- request.SerializeToString(&strRequest);
- }
- m_XPhoneDevice->SendCommonTcpMSG((const byte*)strRequest.c_str(), strRequest.length());
- }
- void SDKInterface::StartDianZan()
- {
- // 判断是否已经有任务在执行了;
- if (IsTaskTypeExist(XPhonePlus::TaskType_OneKeyZan))
- return;
- // 获取有效的任务id;
- TaskInfo tagTaskInfo;
- tagTaskInfo.nTaskId = GetMaxTaskId();
- tagTaskInfo.TaskType = XPhonePlus::TaskType_OneKeyZan;
- tagTaskInfo.TaskStatus = XPhonePlus::TaskStatusn_Unknow;
- tagTaskInfo.TaskAction = XPhonePlus::TaskAction_Start;
- m_taskinfo.push_back(tagTaskInfo);
- XPhonePlus::XPhone_TaskReq request;
- XPhonePlus::XPhone_MsgBase* pBase = new XPhonePlus::XPhone_MsgBase;
- pBase->set_msgtype(XPhonePlus::MsgType_TaskReq);
- request.set_allocated_head(pBase);
- request.set_action(XPhonePlus::TaskAction_Start);
- request.set_tasktype(XPhonePlus::TaskType_OneKeyZan);
- request.set_taskid(tagTaskInfo.nTaskId); //设置一个任务ID,使用者自己生成 当任务完成的时候会回调,带上这个id, 如果需要暂停任务也需要这个ID
- //发送命令开始点赞
- std::string strRequest;
- request.SerializeToString(&strRequest);
- m_XPhoneDevice->SendCommonTcpMSG((const byte*)strRequest.c_str(), strRequest.length());
- }
- void SDKInterface::StopDianZan()
- {
- bool bExist = false;
- std::vector<TaskInfo>::iterator it = m_taskinfo.begin();
- for (; it != m_taskinfo.end(); it++)
- {
- if (it->TaskType == XPhonePlus::TaskType_OneKeyZan)
- {
- bExist = true;
- break;
- }
- }
- if (!bExist)
- return;
- XPhonePlus::XPhone_TaskReq request;
- XPhonePlus::XPhone_MsgBase* pBase = new XPhonePlus::XPhone_MsgBase;
- pBase->set_msgtype(XPhonePlus::MsgType_TaskReq);
- request.set_allocated_head(pBase);
- request.set_action(XPhonePlus::TaskAction_Stop);
- request.set_tasktype(XPhonePlus::TaskType_OneKeyZan);
- request.set_taskid(it->nTaskId); //设置一个任务ID,使用者自己生成 当任务完成的时候会回调,带上这个id, 如果需要暂停任务也需要这个ID
- //发送命令开始点赞
- std::string strRequest;
- request.SerializeToString(&strRequest);
- m_XPhoneDevice->SendCommonTcpMSG((const byte*)strRequest.c_str(), strRequest.length());
- m_taskinfo.erase(it);
- }
- void SDKInterface::GetContactList()
- {
- XPhonePlus::XPhone_ReqHead request;
- XPhonePlus::XPhone_MsgBase* pBase = new XPhonePlus::XPhone_MsgBase;
- pBase->set_msgtype(XPhonePlus::MsgType_ContactInfoReq);
- request.set_allocated_head(pBase);
- std::string strRequest;
- request.SerializeToString(&strRequest);
- m_XPhoneDevice->SendCommonTcpMSG((const byte*)strRequest.c_str(), strRequest.length());
- }
- void SDKInterface::GetChatroomList()
- {
- XPhonePlus::XPhone_ReqHead request;
- XPhonePlus::XPhone_MsgBase* pBase = new XPhonePlus::XPhone_MsgBase;
- pBase->set_msgtype(XPhonePlus::MsgType_ChatroomInfoReq);
- request.set_allocated_head(pBase);
- std::string strRequest;
- request.SerializeToString(&strRequest);
- m_XPhoneDevice->SendCommonTcpMSG((const byte*)strRequest.c_str(), strRequest.length());
- }
|