歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

在 Android 使用 C# 開發 iBeacons 應用

自從 Apple 在iOS 7中引入了iBeacons, 對它們的關注現在已經甚囂塵上. 例如, Apple 正在將它們應用在其零售商店中, NFL將它們安裝在 Super Bowl 上,而 Major League Baseball 也將會在即將到來的賽季期間使用到它們. 我們之前已經討論過如在用一個‘Find the Monkey’;游戲在你的Xamarin.iOS應用中實現iBeacons,還有如何在一個零售商店環境下運用它們, 而今天我們將要討論的則是如何向你的Xamarin.Android應用加入同樣的iBeancon支持.

iBeacons 可以讓設備發現其附近的“信標”,它們可以是第三方硬件或者是iOS設備. 此前, 探尋iBeacons的功能被限制在 iOS 7. 而這裡得感謝由Chris Riesgo創建的 Radius Networks 和 Xamarin.Android iBeacon Service Component, 由於他們的辛勤工作,現在你可以通過支持Bluetooth LE的Android設備來發現iBeacons了 .

讓我們來看看如何使用Android iBeacon Service 組件來發現 iBeacon, 在這個測試信標中我們將運行一個 iOS 應用程序,它使用如下所示的 Core Bluetooth 來將其 iBeacon 發布出去:

var uuid = new NSUuid ("A1F30FF0-0A9F-4DE0-90DA-95F88164942E");
var beaconId = "iOSBeacon";
var beaconRegion = new CLBeaconRegion (uuid, beaconId) {
  NotifyEntryStateOnDisplay = true,
  NotifyOnEntry = true,
  NotifyOnExit = true
};
var peripheralData = beaconRegion.GetPeripheralData (new NSNumber (-59));
peripheralDelegate = new BTPeripheralDelegate ();
peripheralMgr = new CBPeripheralManager (peripheralDelegate, DispatchQueue.DefaultGlobalQueue);
peripheralMgr.StartAdvertising (peripheralData);

一旦 iBeacon 被發布出來, 其它的 iOS 7 應用和 Android 應用就能夠發現它.

Chris的組件, 像所有的 Xamarin 組件一樣, 包含一個示例項目. 在這裡,示例項目是一個運作起來跟iOS上運行的示例一樣的Android應用程序,出自Find the Monkey這篇文章. 這段代碼是構建屬於你自己的使用iBeancon的應用程序的一個很棒的開始. 示例中包括了兩個叫做MonitorNotifierRangeNotifier 的源代碼, 我們可以將其用來分別處理信標的偵測和范圍.

monitorNotifier = new MonitorNotifier ();
monitoringRegion = new Region (BEACON_ID, UUID, null, null);
rangeNotifier = new RangeNotifier ();
rangingRegion = new Region (BEACON_ID, UUID, null, null);

有了這些通知類,我們就可以創建一個信標管理器, 它將可以協調所有信標的發現和范圍更新.

beaconMgr = IBeaconManager.GetInstanceForApplication (this);

信標管理器處理了偵測器和范圍通知器的實體,這之後它就可以開始偵測和設置范圍了.

public void OnIBeaconServiceConnect ()
{
  beaconMgr.SetMonitorNotifier (monitorNotifier);
  beaconMgr.SetRangeNotifier (rangeNotifier);
  beaconMgr.StartMonitoringBeaconsInRegion (monitoringRegion);
  beaconMgr.StartRangingBeaconsInRegion (rangingRegion);
}

為了實現處理區域偵測和范圍設置的代碼,我們簡單的將Activity綁定到了信標管理器上,並將其同對應的事件處理器連接起來:

beaconMgr.Bind (this);
monitorNotifier.EnterRegionComplete += EnteredRegion;
monitorNotifier.ExitRegionComplete += ExitedRegion;
rangeNotifier.DidRangeBeaconsInRegionComplete += RangingBeaconsInRegion;

在這個應用中,我們將在Android設備發現范圍內的信標時,向用戶展示一個帶有一張QR碼圖片的消息:

void EnteredRegion (object sender, MonitorEventArgs e)
{
  ShowMessage ("Welcome back!");
}
void ExitedRegion (object sender, MonitorEventArgs e)
{
  ShowMessage ("Thanks for shopping here!");
}
void RangingBeaconsInRegion (object sender, RangeEventArgs e)
{
  if (e.Beacons.Count > 0) {
    var beacon = e.Beacons.FirstOrDefault ();
    switch ((ProximityType)beacon.Proximity) {
      case ProximityType.Immediate:
      case ProximityType.Near:
      case ProximityType.Far:
        ShowMessage ("Here's a coupon!", true);
        break;
      case ProximityType.Unknown:
        ShowMessage ("Beacon proximity unknown");
        break;
      }
    }
}

當我們靠近信標的時候,我們看到消息發生了變化,QR碼圖片被顯示了出來.

正如你在這裡和我們之前的文章中所見,整個場景的代碼非常相似,至少iBeacon部分是很相似的. 幸好有這個組件,在 iOS 和 Android上你都能用C#實現這個功能了.

在 Android 使用 C# 開發 iBeacons 應用源碼下載

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2014年資料/2月/12日/在 Android 使用 C# 開發 iBeacons 應用

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved