PC和Android同屏展示二維碼

需求

在酒店、賓館等前臺,服務員使用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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章