红外感应
此示例代码展示如何使用红外感应(IRSensor)。
将障碍物放置于手机听筒上方时,背景灯将会熄灭,三秒钟后自动亮起
启用红外感应设备://启用设备 SetIRSensorState(true); //注册红外感应消息 RegisterIRSensorNotify(m_hWnd, MZ_IRSENSORID);
获得红外感应强度等级:IRSensorLevel = GetIRSensorLevel();
/************************************************************************/ /* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved. * 中国珠海, 魅族科技有限公司, 版权所有. * * Author: ZYK * Create on: 2009-07-03 */ /************************************************************************/ //请按照以步骤运行此实例代码: //首先, 打开VS2005/2008创建一个Win 32智能设备项目 //在项目向导中选择M8SDK, 并勾选空项目 //然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中 //最后,按照M8SDK的帮助文档,配置项目属性 //现在,可以运行此程序了 //包含MZFC库的头文件 #include <mzfc_inc.h> #include <IRSensorApi.h> #include <BackLightApi.h> //此代码演示了: // 创建和初始化应用程序 // 创建和初始化窗体 // 红外探测IRSensorAPI的使用 // 背景光BackLightAPI的使用 // 将障碍物放置于听筒上方时会关闭背景光 #define MZ_IDC_IRSENSORBTN 101 #define MZ_IRSENSORID 102 #define MZ_IDC_EXITBTN 103 // 从 CMzWndEx 派生的主窗口类 class CSample1MainWnd: public CMzWndEx { MZ_DECLARE_DYNAMIC(CSample1MainWnd); public: UiButton m_IRSensorBtn; UiButton m_ExitBtn; protected: // 窗口的初始化 virtual BOOL OnInitDialog() { // 必须先调用基类的初始化 if (!CMzWndEx::OnInitDialog()) { return FALSE; } SetIRSensorState(true); RegisterIRSensorNotify(m_hWnd, MZ_IRSENSORID); m_IRSensorBtn.SetPos(100, 150, 280, 100); m_IRSensorBtn.SetID(MZ_IDC_IRSENSORBTN); m_IRSensorBtn.SetText(L"关闭红外感应"); AddUiWin(&m_IRSensorBtn); m_ExitBtn.SetID(MZ_IDC_EXITBTN); m_ExitBtn.SetPos(100, 350, 280, 100); m_ExitBtn.SetText(L"退出"); AddUiWin(&m_ExitBtn); return TRUE; } // 重载命令消息的处理函数 virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_EXITBTN: { if(1 == MzMessageBoxEx(m_hWnd, L"You have pressed Exit button, Really want exit?", L"Exit", MB_YESNO, false)) PostQuitMessage(0); } break; case MZ_IDC_IRSENSORBTN: { if ( wcscmp(L"关闭红外感应", m_IRSensorBtn.GetText()) == 0) { m_IRSensorBtn.SetText(L"打开红外感应"); m_IRSensorBtn.Invalidate(); m_IRSensorBtn.Update(); if (!UnRegisterIRSensorNotify(m_hWnd)) { MzMessageBoxEx(m_hWnd,L"注销红外感应消息失败",L"警告"); } if (!SetIRSensorState(false)) { //MzMessageBoxEx(m_hWnd,L"关闭红外感应失败",L"警告"); } } else if ( wcscmp(L"打开红外感应", m_IRSensorBtn.GetText()) == 0) { m_IRSensorBtn.SetText(L"关闭红外感应"); m_IRSensorBtn.Invalidate(); m_IRSensorBtn.Update(); if (!SetIRSensorState(true)) { MzMessageBoxEx(m_hWnd,L"打开红外感应失败",L"警告"); } if (!RegisterIRSensorNotify(m_hWnd, MZ_IRSENSORID)) { MzMessageBoxEx(m_hWnd, L"RegisterIRSensorNotify false", L"alert"); } if (!SetIRSensorLevel(LEVEL_HIGH)) { MzMessageBoxEx(m_hWnd, L"SetIRSensorLevel false", L"alert"); } int IRSensorLevel ; IRSensorLevel = GetIRSensorLevel(); if (IRSensorLevel == LEVEL_HIGH) { MzMessageBoxEx(m_hWnd, L"红外探测等级:高", L"消息"); } else if (IRSensorLevel == LEVEL_MEDIUM) { MzMessageBoxEx(m_hWnd, L"红外探测等级:中", L"消息"); } else if (IRSensorLevel == LEVEL_LOW) { MzMessageBoxEx(m_hWnd, L"红外探测等级:低", L"消息"); } } } break; } } LRESULT MzDefWndProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case MZ_IRSENSORID: { if (lParam) { //关闭背景光 SetBackLightState(false); } else { //打开背景光 SetBackLightState(true); } } break; default: { return CMzWndEx::MzDefWndProc(message, wParam, lParam); } break; } return 0; } }; MZ_IMPLEMENT_DYNAMIC(CSample1MainWnd) // 从 CMzApp 派生的应用程序类 class CSample1App: public CMzApp { public: // 应用程序的主窗口 CSample1MainWnd m_MainWnd; // 应用程序的初始化 virtual BOOL Init() { // 初始化 COM 组件 CoInitializeEx(0, COINIT_MULTITHREADED); // 创建主窗口 RECT rcWork = MzGetWorkArea(); m_MainWnd.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), 0, 0, 0); m_MainWnd.Show(); // 成功则返回TRUE return TRUE; } }; // 全局的应用程序对象 CSample1App theApp;