前阵子买了一部诺基亚lumia930手机,这几天才知道有个高大上的功能叫做NFC,可以读取银行卡,一卡通等信息。
把我的银行卡贴在手机上面,手机哔哔的响,但是什么也没显示。百度一下发现只有安卓上面的支付宝钱包有这种功能,于是研究了一下写了一个小程序。如下图
这个程序很简单,银行卡贴在手机上面会输出“银行卡来了”,离开会输出“银行卡走了”。 实现过程很简单,如下:
新建一个空的windows phone工程,在MainPage中添加三个类成员,两个事件函数。
[mw_shl_code=csharp,true]Windows::Foundation::EventRegistrationToken m_arrivedToken;
Windows::Foundation::EventRegistrationToken m_departedToken;
Windows::Networking::Proximity::ProximityDevice^ m_proximityDevice;
void DeviceArrived(Windows::Networking::Proximity::ProximityDevice^ device);
void DeviceDeparted(Windows::Networking::Proximity::ProximityDevice^ device);[/mw_shl_code]
然后在MainPage的构造函数里面得到默认的NFC设备,在OnNavigatedTo里面注册两个事件,用来响应银行卡贴近手机和离开的事件,这样有事件触发的时候,就会调用DeviceArrived和DeviceDeparted过程,过程里面就很简单地执行一次输出log。over
[mw_shl_code=csharp,true]MainPage::MainPage()
{
InitializeComponent();
m_proximityDevice = ProximityDevice::GetDefault();
}
void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
(void) e; // 未使用的参数
if (this->m_proximityDevice)
{
m_arrivedToken = m_proximityDevice->DeviceArrived += ref new DeviceArrivedEventHandler(this, &MainPage::DeviceArrived, CallbackContext::Same);
m_departedToken = m_proximityDevice->DeviceDeparted += ref new DeviceDepartedEventHandler(this, &MainPage::DeviceDeparted, CallbackContext::Same);
}
}
void MainPage::DeviceArrived(ProximityDevice^ device)
{
ErrorText->Text += “银行卡来了!\r\n”;
}
void MainPage::DeviceDeparted(ProximityDevice^ device)
{
ErrorText->Text += “银行卡走了!\r\n”;
}[/mw_shl_code]
这样就完成了这么一个程序,接下来就是读取信息了,百度了一下,发现没什么资料。。。
有时间继续再研究一下,把银行卡的数据读出来。
|