⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htcsensors.cpp

📁 Example of using HTC sensor api to get Light sensor value and set backlight level in modern HTC phon
💻 CPP
字号:
#include <windows.h>
#include "HtcStuff.h"

// -- Polling the sensor using the SDK dll ------------------------
#define SENSOR_DLL      L"HTCSensorSDK.dll"
#define SENSOR_TILT     1
#define SENSOR_LIGHT	2

typedef VOID * PSENSORDATA;
typedef HANDLE (WINAPI * PFN_HTCSensorOpen)(DWORD);
typedef void (WINAPI * PFN_HTCSensorClose)(HANDLE);
typedef DWORD (WINAPI * PFN_HTCSensorGetDataOutput)(HANDLE, PSENSORDATA);

PFN_HTCSensorOpen           pfnHTCSensorOpen = NULL;
PFN_HTCSensorClose          pfnHTCSensorClose = NULL;
PFN_HTCSensorGetDataOutput  pfnHTCSensorGetDataOutput = NULL;

typedef struct _LSENSORDATA
{
	DWORD  Unknown1;		// Always 3
	BYTE   Luminance;		// between 0 and 30
} LSENSORDATA, *PLSENSORDATA;


HMODULE     ig_hSensorLib = 0;
HANDLE      ig_hLSensor = 0;

bool HTCSensorsInit()
{
	if (pfnHTCSensorOpen == NULL)
	{

		ig_hSensorLib = LoadLibrary(SENSOR_DLL);

		if (ig_hSensorLib == NULL)
		{
			MessageBox(NULL,
				_T("Unable to load Sensor DLL"),
				_T("Error"), MB_TOPMOST | MB_ICONERROR);
			return false;
		}

		pfnHTCSensorOpen = (PFN_HTCSensorOpen)GetProcAddress(ig_hSensorLib, L"HTCSensorOpen");
		pfnHTCSensorClose = (PFN_HTCSensorClose)GetProcAddress(ig_hSensorLib, L"HTCSensorClose");
		pfnHTCSensorGetDataOutput = (PFN_HTCSensorGetDataOutput)GetProcAddress(ig_hSensorLib, L"HTCSensorGetDataOutput");

		if (pfnHTCSensorOpen == NULL ||
			pfnHTCSensorClose == NULL ||
			pfnHTCSensorGetDataOutput == NULL)
		{
			MessageBox(NULL,
				_T("Unable to load Sensor DLL procs"),
				_T("Error"), MB_TOPMOST | MB_ICONERROR);
			return false;
		}
	}
    return true;
}

bool HTCSensorsUninit()
{	
	pfnHTCSensorClose = 0;
	pfnHTCSensorOpen = 0;
	pfnHTCSensorGetDataOutput = 0;
	if (ig_hSensorLib) FreeLibrary(ig_hSensorLib);
	ig_hSensorLib = 0;
	return true;
}

bool HTCLSensorInit()
{
	if (!pfnHTCSensorOpen) HTCSensorsInit();
	if (!pfnHTCSensorOpen) return false;

	if (pfnHTCSensorOpen && !ig_hLSensor)
		ig_hLSensor = pfnHTCSensorOpen(SENSOR_LIGHT);
	return (ig_hLSensor != NULL);
}
bool HTCLSensorFree()
{
	if (pfnHTCSensorClose && ig_hLSensor)
	{
		pfnHTCSensorClose(ig_hLSensor);
		ig_hLSensor = 0;
	}
    return (ig_hLSensor == NULL);
}

int HTCLSensorGetValue()
{
	if (!ig_hLSensor || !pfnHTCSensorGetDataOutput) return 0;
	LSENSORDATA sd;
	ZeroMemory(&sd, sizeof(sd));
    pfnHTCSensorGetDataOutput(ig_hLSensor, &sd);
	double ret = (double)sd.Luminance * (double)755 / (double)208;
	return (int)ret;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -