《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 手把手教你如何開發AltBeacon安卓APP

手把手教你如何開發AltBeacon安卓APP

2015-08-03
作者:Martin Woolley

       第一篇文章我介紹了Beacon的一些基礎知識,以及AltBeacon和它的藍牙廣告形式。今天將用一個實際的開發案例,指導讀者學習如何用AltBeacon安卓API開發Beacon原型APP

運用Beacon進行博物館導覽

       將Beacon應用于博物館導覽,這樣當游客靠近展品時,APP可以提示該展品的相關信息,走過路過就再也不會錯過!想象一下,如果故宮有了這款APP, 當游客走到一個不明覺厲的青銅方樽面前,只要拿起手機就能快速了解它的主人、出土信息和花紋的寓意,再也不用擔心被人嘲笑沒文化了。

       這個設計的設想是:首先,博物館內安裝的所有的Beacon基站都在APP能夠探測到的范圍內,而且APP能夠默默地在后臺運行并探測附近的Beacon,但只有當游客與Beacon基站的距離靠近至2米范圍內時才會跳出彈窗,提示與這一Beacon相關的展品信息;其次,針對同一展品,APP不會不識趣地反復跳出提示窗;最后,還能夠查閱APP系統日志底層Beacon相關事件。下面請看實地操作!

       如果你也是第一次創建Beacon應用APP,看這里!

綁定服務,設定“區域”

       對于首次建立應用程序類別的開發者,以下幾點需要注意:首先,用AltBeacon API BeaconManager將APP與后臺運行的AltBeacon庫中的服務綁定。另外,要著手設定一個或多個“區域”。這里所說的“區域”是指一個或一組Beacon,由AltBeacon Beacon ID 域值來規定。Beacon ID域將20個八位字節的標識域分成1個16字節的主ID、1個2字節的二級ID、1個2字節的三級ID。在我的這個APP中,主Beacon是我所關注的,因此只設定了主ID,因此我將二級和三級ID設為空值。

圖片2.png

                                  圖1 – 基本初始化步驟

      更多干貨往下看!

APP程序類別

      針對不同的顯示界面(包括主要展品信息界面、Beacon事件日志界面)的活動類別、以及其他一些輔助性的Java類別,這個APP包括一個自定義應用程序類和一個Actiivity類別。AltBeacon API自身就是一個庫,它負責APP后臺運行彈出,并提供一系列接口來支持與Beacon探測相關的回調函數。這些都通過自定義應用程序類“GyboApplication.java”執行。

圖片3.png

                                 圖2 – AltBeacon API 關鍵接口

測定距離,更新范圍

        AltBeacon API支持“監測”與“測距”功能。監測功能會在APP進入某一個或某一組Beacon區域時生成事件。這其實是一個二進制的概念,因為只有兩種可能——APP在區域內、APP不在區域內。測距功能可以追蹤游客距離某一組Beacon的距離,當兩者近到一定程度時,就可以觸發功能。

       我們還必須對應用程序類別執行的RangeNotifier接口中的單實例對象方法“didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region)”進行編碼。AltBeacon庫的后臺藍牙掃描進程能夠發現附近的Beacon,而“didRangeBeaconsInRegion”每秒鐘調用一次,并提供當次掃描到的Beacon列表。APP絕大多數功能都在此基礎上實現。

       Beacon分類則代表物理意義上的Beacon, 它有著一系列屬性,包括:Beacon類型標示、藍牙MAC地址和名稱、接收信號強度指示器RSSI(Received Signal Strength Indicator)、(制造過程中設定的)校準傳輸的Beacon發射功率、與Beacon相對距離的估算值(以米為單位計量、通過RSSI和Beacon發射功率計算得出)。

定義最近的Beacon,判斷信息推送時間

       有了Beacon列表以及每個Beacon與游客的距離估算值,要推算出哪個Beacon離游客最近應該是不成問題的。但是在測試過程中也有一些問題。有的Beacon明知道就在范圍內,卻沒有出現在didRangeBeaconsInRegion方法獲取的Beacon列表中,到底哪里出了問題?經分析,原因可能是Beacon廣播頻率與安卓APP掃描的頻率和持續時間不匹配,導致有時掃描過程無法接收到實際范圍內所有Beacon的廣告數據包。這就引出了另一個問題:如何控制安卓APP里的這些參數?

       當APP收到范圍更新時,就要判斷是否需要執行相應的功能。具體來說,就是看哪個Beacon離游客最近、有沒有近到需要向游客提示Beacon所對應的展品信息。如果最近的Beacon發生了變化,游客會收到提示信息。例如,游客離開剛剛駐足的展品,下一次范圍更新之后,離他最近的Beacon可能就不是之前那一個(組)了。當然,還要判斷距離最近的Beacon是近到什么程度,才能向游客發送通知信息。實驗中的APP把這一數值設定為2米。當然你也可以允許用戶手動設置、自定義這一類配置。

掃描配置又是什么?

       BeaconManager類允許開發者對APP進行廣告數據包掃描時長、活動間歇時長等參數進行配置??梢栽诔跏即a中添加如下的代碼。

圖片4.png

                                  圖4 – 掃描配置

       想要做好適合APP的掃描配置,需要考慮很多方面。掃描過程的電量消耗是很大的,因此掃描頻次過高或時長過長就會增加電池電量的消耗。但如果掃描頻次跟不上,Beacon探測結果的更新就會延遲,進而影響用戶體驗。

       因此,根據實際應用場景的需要,我們必須在耗電水平和用戶體驗之間進行權衡取舍。例如,一個用來探測路途中經過的店鋪的APP,就需要比博物館導覽APP擁有更快的Beacon廣告探測和反應速度。

       還需要考慮Beacon的廣播頻率。如果掃描頻率高于Beacon廣告,有時就會由于最近一次掃描活動中的廣播數據包丟失而導致實際范圍內的Beacon沒有出現在API回調的報告中。

現實世界中的Beacon探測

       不得不承認,現實世界總是不完美的。為了讓APP能夠更好的為人民服務,程序猿編寫代碼時也不得不考慮現實中的問題種種。在測試過程中,盡管我們很認真地設置了掃描配置,Beacon掃描偶爾還是會有漏網之魚?,F實中,由于游客和Beacon之間的物理屏障(如人群、其他物品等)、或Beacon配置與之前設想的不同,也會出現一些紕漏。物理屏障的存在會導致游客在展廳內行走時,APP數據回報出現短暫的異常。因此,Beacon應用不應當僅根據最近一次的數據回報就立刻作出回應。認識到這一點讓我們收獲頗多:與其中規中矩地根據AltBeacon庫回調的數據行事,不如對算法進行適度的“模糊”處理,也許能改善Beacon APP的表現。為了改善算法,我們決定采用更復雜一些的方法來追蹤范圍內的Beacon。

模糊的Beacon追蹤

       我們的方法簡單而有效——保留了最近15秒的報告中提示位于范圍內的Beacon的相關數據緩存,以及每個Beacon最近一次被探測到的精確時間。通過計時器任務,把最近15秒內沒有被探測到的Beacon視為“過期”、移除緩存。

       在可以稱得上“重中之重”的didRangeBeaconsInRegion方法中,我們更新了Beacon數據緩存和回調的Beacon對象列表,然后評估全部的緩存數據,以判定目前距離最近的Beacon。于是測試的結果有了改善。這類似于數據平滑處理,相關代碼片段如下圖。

圖片5.png

                       圖5 – GyboApplication.java中的Beacon緩存設置和使用

圖片6.png

                                圖6 –BeaconEvent類別

圖片7.png

                        圖7 –負責終止BeaconEvent對象的計時器任務

最后的最后,提醒用戶!

       一旦實際執行了獲取范圍內Beacon報告的代碼、采取了某種方式追蹤Beacon、并根據獲得的數據判斷哪一個Beacon離游客最近,那么就只剩最后一步了:在合適的情況下提示游客Beacon所關聯的展品信息。怎樣判斷是否“合適”呢?主要看最后一次生成的通知是否為同一Beacon相關的,因為沒有必要反復提示用戶同一個展品的信息。還需要將估算的Beacon距離與既設的(觸發行為的)最小距離值進行對比,判斷游客是否足夠靠近Beacon(也就是展品),然后決定是否發送展品信息。

       如果APP是在前臺運行,提示游客的方法就很簡單:更新主要展覽信息頁面、顯示最近的展品介紹。我們使用內存中有關Beacon及其對應展品的數據結構,每個Beacon都有自己的ID,就可以分別對應各自的展品信息,并在APP本地映射了這些數據的對應關系,但正如第一篇中所講到的,對于除了原型以外的任何APP,最好從遠程服務器上獲取相關數據,根據位置或其他信息配置Beacon。

圖片8.png

                           圖8 –Beacon Information類別

圖片9.png

                             圖9 –ThingOfInterest類別

       通知列表下拉菜單中的通知,并將其鏈接到定義展品信息頁面的Activity。

 

圖片10.png

                            圖10 – 安卓系統通知,提示附近發現Beacon

       下圖是安卓通知的代碼。

圖片11.png

                                  圖11 – 創建通知


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品久久久久久久久久久久久久| 久久久精品一区| 国产精品亚洲第一区在线暖暖韩国| 国产午夜亚洲精品不卡| 亚洲观看高清完整版在线观看| 老司机精品视频网站| 一区二区三区免费观看| 久久久7777| 亚洲美洲欧洲综合国产一区| 国产伦精品一区二区三区免费迷| 久久欧美肥婆一二区| 欧美精品一区二区三区一线天视频| 亚洲午夜视频| 日韩一级免费| 久久在线观看视频| 99在线精品免费视频九九视| 国产欧美在线看| 亚洲免费精彩视频| 久久精品在这里| 久久久久久电影| 亚洲国产综合91精品麻豆| 好男人免费精品视频| 一区二区高清| 一区二区在线视频观看| 香蕉久久久久久久av网站| 国产日本亚洲高清| 欧美亚洲综合网| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲欧美成人| 国产一区二区三区高清在线观看| 亚洲美女免费视频| 欧美日本网站| 日韩性生活视频| 亚洲综合日韩中文字幕v在线| 激情综合激情| 欧美在线视频在线播放完整版免费观看| 亚洲国产色一区| 亚洲男人第一av网站| 欧美丝袜一区二区三区| 另类图片综合电影| 欧美亚洲三区| 在线看片欧美| 欧美日本一区二区高清播放视频| 亚洲清纯自拍| 亚洲美女视频在线免费观看| 免费一级欧美片在线观看| 极品少妇一区二区三区| 国产麻豆精品久久一二三| 国产欧美一区二区三区在线老狼| 久久久久九九九九| 欧美日韩在线另类| 欧美视频在线观看一区二区| 欧美在线资源| 国产亚洲va综合人人澡精品| 性久久久久久久久久久久| 嫩草国产精品入口| 夜色激情一区二区| 国产精品美女久久| 国产精品久久久久久久久果冻传媒| 久久午夜影视| 亚洲精品女av网站| 久久久九九九九| 亚洲国产精品久久久| 亚洲精品孕妇| 在线观看日韩av先锋影音电影院| 国产精品久久久久aaaa樱花| 欧美区视频在线观看| 欧美日韩爆操| 久久视频国产精品免费视频在线| 欧美一区三区二区在线观看| 欧美成人午夜激情视频| 女同性一区二区三区人了人一| 欧美精品在线网站| 欧美国产亚洲另类动漫| 亚洲美女免费精品视频在线观看| 欧美日韩高清不卡| 99riav国产精品| 国产欧美日韩综合一区在线播放| 午夜精品一区二区三区电影天堂| 国产揄拍国内精品对白| 久久久久久久一区二区| 亚洲欧美清纯在线制服| 久久精品99国产精品日本| 美女黄毛**国产精品啪啪| 亚洲激情网站免费观看| 久久激情综合网| 伊人影院久久| 亚洲麻豆一区| 影音先锋久久资源网| 最近中文字幕mv在线一区二区三区四区| 黄色成人在线免费| 国产女主播一区二区三区| 亚洲国产清纯| 亚洲欧美精品一区| 亚洲电影在线| 国产资源精品在线观看| 精品盗摄一区二区三区| 亚洲你懂的在线视频| 另类专区欧美制服同性| 国产欧美日韩高清| 亚洲精品永久免费精品| 欧美成人免费一级人片100| 国产精品久久久亚洲一区| 亚洲四色影视在线观看| 欧美激情精品| 亚洲看片网站| 欧美国产精品人人做人人爱| 久久人人爽人人爽爽久久| 久久免费视频在线观看| 依依成人综合视频| 欧美三级黄美女| 欧美色网一区二区| 欧美人与性禽动交情品| 99精品黄色片免费大全| 国产真实精品久久二三区| 美女精品自拍一二三四| 欧美区在线播放| 狠狠色丁香久久婷婷综合丁香| 亚洲欧美在线另类| …久久精品99久久香蕉国产| 国产精品免费小视频| 亚洲视频欧洲视频| 一本不卡影院| 欧美一级黄色录像| aa成人免费视频| 亚洲大胆人体在线| 狠狠色综合色区| 亚洲日韩第九十九页| 欧美视频福利| 亚洲资源在线观看| 日韩午夜中文字幕| 欧美电影免费观看大全| 欧美不卡福利| 欧美va亚洲va日韩∨a综合色| 99精品国产在热久久下载| 亚洲丰满少妇videoshd| 亚洲成色777777在线观看影院| 99综合电影在线视频| 国产欧美日韩伦理| 欧美日韩一区三区| 欧美 亚欧 日韩视频在线| 欧美激情第10页| 狠狠干综合网| 亚洲国产一区二区a毛片| 亚洲嫩草精品久久| 亚洲欧美久久久久一区二区三区| 亚洲高清不卡| 久久蜜桃av一区精品变态类天堂| 欧美成人免费视频| 欧美黑人多人双交| 亚洲图片欧洲图片日韩av| 国产精品久久久久久妇女6080| 久久精品国产免费看久久精品| 一区二区三区高清在线观看| 亚洲香蕉伊综合在人在线视看| 国产精品卡一卡二| 国产偷自视频区视频一区二区| 久久精品免视看| 一本到高清视频免费精品| 亚洲欧美一区二区三区在线| 国产欧美日韩综合一区在线播放| 久久婷婷国产麻豆91天堂| 欧美日本亚洲视频| 日韩一区二区精品| 欧美中文字幕视频在线观看| 亚洲美女黄网| 欧美美女操人视频| 欧美大片免费久久精品三p| 欧美午夜一区二区三区免费大片| 亚洲欧美成人一区二区三区| 激情五月综合色婷婷一区二区| 欧美一区二区三区在线看| 欧美区一区二区三区| 亚洲欧美日韩精品在线| 国产精品区一区| 国产亚洲综合在线| 久久久国产精彩视频美女艺术照福利| 国产精品免费看久久久香蕉| 亚洲一区二区三区乱码aⅴ蜜桃女| 香蕉av777xxx色综合一区| 国产精品jizz在线观看美国| 欧美成人精品在线播放| 国产精品黄色在线观看| 国产精品大片| 亚洲欧洲一区二区在线观看| 久久亚裔精品欧美| 亚洲人成网站999久久久综合| 国产农村妇女毛片精品久久麻豆| 国产欧美va欧美va香蕉在| 国产精品久久久久一区二区| 亚洲欧美日韩在线一区| 91久久久一线二线三线品牌| 欧美一级大片在线免费观看| 欧美欧美午夜aⅴ在线观看| 欧美插天视频在线播放| 国产精品羞羞答答xxdd| 在线免费观看一区二区三区| 欧美精品成人91久久久久久久| 国产一区二区三区在线观看视频| 午夜久久资源| 欧美在线一级视频| 久久午夜羞羞影院免费观看| 一本色道久久综合精品竹菊| 久久久国产午夜精品| 蜜桃av一区二区三区| 黄色免费成人| 一区二区高清在线| 久久国产一区二区三区| 亚洲娇小video精品| 欧美日韩岛国| 欧美视频二区| 精品成人在线观看| 亚洲精品1234| 免费不卡在线观看| 鲁鲁狠狠狠7777一区二区| 亚洲日韩欧美视频一区| 国产精品一区二区三区免费观看| 久热精品视频在线观看一区| 国产日韩精品一区二区浪潮av| 久久成人亚洲| 欧美日韩一区二区三区免费| 国产精品超碰97尤物18| 夜夜嗨av一区二区三区中文字幕| 国产亚洲一区二区三区| 国产婷婷色一区二区三区在线| 一本色道久久综合亚洲精品不| 激情欧美日韩一区| 国产精品99久久久久久有的能看| 欧美三区在线| 一区二区三区高清视频在线观看| 欧美亚洲日本一区| 亚洲大片一区二区三区| 久久精品卡一| 在线观看不卡| 亚洲国产精品精华液网站| 欧美激情综合五月色丁香小说| 国产精品日韩欧美一区二区| 国产精品久久亚洲7777| 美女999久久久精品视频| 欧美a级片一区| 国产精品美女www爽爽爽| 亚洲在线中文字幕| 国产综合18久久久久久| 欧美调教视频| 亚洲精品一线二线三线无人区| 亚洲第一精品久久忘忧草社区| 欧美一区二区三区的| 国产欧美91| 欧美日韩国产在线播放| 欧美日韩免费一区| 国产精品久久久久9999吃药| 欧美女人交a| 亚洲精品视频在线观看免费| 久久人人爽人人爽| 欧美不卡视频一区| 亚洲欧洲日本国产| 欧美一级精品大片| 亚洲欧洲日本mm| 国产精品一区二区久久久久| 一本色道久久综合亚洲精品高清| 国产日韩视频一区二区三区| 蜜桃精品一区二区三区| 欧美一二三区在线观看| 国内伊人久久久久久网站视频| 久久精品五月婷婷| 99riav1国产精品视频| 久久―日本道色综合久久| 国外成人性视频| 国产精品久久久久久久久久妞妞| 欧美大胆成人| 国产在线精品成人一区二区三区| 中文国产亚洲喷潮| 这里只有精品在线播放| 国产精品chinese| 蜜臀91精品一区二区三区| 久久亚洲私人国产精品va媚药| 亚洲区一区二| 国产精品日韩| 91久久精品久久国产性色也91| 国产日产欧美一区| 久久婷婷人人澡人人喊人人爽| 欧美在线视频一区二区三区| 午夜精品久久久久久99热软件| 91久久精品网| 99精品黄色片免费大全| 一色屋精品视频在线看| 久久蜜桃资源一区二区老牛| 一区二区三区色| 欧美亚洲专区| 久久性色av| 国产精品午夜春色av| 国产精品夜夜夜一区二区三区尤| 国产在线观看精品一区二区三区| 久久国产视频网站| 国产精品二区三区四区| 亚洲精品视频免费观看| 国产女主播一区二区| 欧美日韩国语| 午夜激情综合网| 欧美日韩美女在线| 久久高清免费观看| 99国产精品视频免费观看一公开| 国产精品理论片| 欧美三级不卡| 在线免费观看成人网| 欧美日韩一区二区三区免费看| 一本综合久久| 午夜精品久久久久久久久| 欧美极品aⅴ影院| 激情懂色av一区av二区av| 欧美影院成年免费版| 国内成人精品一区| 激情综合在线| 性欧美xxxx视频在线观看| 日韩视频欧美视频| 欧美欧美午夜aⅴ在线观看| 狠狠色香婷婷久久亚洲精品| 毛片av中文字幕一区二区| 另类天堂av| 欧美午夜女人视频在线| 精品成人a区在线观看| 国产一区二区三区在线观看网站| 亚洲伊人第一页| 欧美精品在线网站| 国产女人18毛片水18精品| 久久精品噜噜噜成人av农村| 在线日韩成人| 亚洲三级影片|