需求
在酒店、賓館等前臺,服務員使用PC機上的Web頁面進行業務操作,隨後需要客戶掃描二維碼進行信息確認。那麼就需要在靠近客戶的地方展示二維碼,這裏我們有一臺安卓平板,平時輪播廣告,而當客戶確認信息時,在屏幕右下方彈出二維碼方便顧客掃碼。(PC和Android優先採用USB線連接)
解決方案
(1)在PC機上使用此服務端,依據Web頁面上二維碼的URL將圖片下載到本機
(2)使用ADB(安卓調試橋)將二維碼通過USB線傳送到Android機
(3)Android機接收到二維碼後,使用ImageView將其顯示出來
注意事項
(1)ADB需要放置在D:\Software\platform-tools\adb
(2)二維碼放置在D:\img,目錄需要首先存在
代碼
#include "stdafx.h"
#include <cstdio>
#include <UrlMon.h>
#include <time.h>
#include <conio.h>
#pragma comment(lib, "urlmon.lib")
using namespace std;
char *lpStr;
BOOL GetTextFromClipboard()
{
if(::OpenClipboard(NULL)) {
HGLOBAL hMem = GetClipboardData(CF_TEXT);
if(NULL != hMem) {
lpStr = (char*)::GlobalLock(hMem);
if(NULL != lpStr) {
::GlobalUnlock(hMem);
}
}
::CloseClipboard();
return TRUE;
}
return FALSE;
}
int main()
{
system("D:\\Software\\platform-tools\\adb start-service");
system("D:\\Software\\platform-tools\\adb remount");
system("cls");
while(true) {
// 測試網址:http://img1.gtimg.com/news/pics/hv1/237/80/2243/145871712.jpg
GetTextFromClipboard();
printf("URL: %s\n",lpStr);
if(lpStr != NULL)
{
char c;
double start=clock(),tot;
URLDownloadToFile(NULL, lpStr, _T("D:\\img\\1.jpg"), NULL, NULL);
printf("\nDo you want to send to Android [Y/N]: ");
while((tot=clock()-start) <= 1000 && !kbhit()) {
Sleep(1);
}
if(tot > 1000) {
system("cls");
continue;
}else {
scanf("%c",&c);
}
if(c == 'Y' || c == 'y') {
system("D:\\Software\\platform-tools\\adb push D:\\img\\1.jpg system/");
}
}
Sleep(1000);
system("cls");
}
return 0;
}