《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于藍(lán)牙技術(shù)的推送系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
基于藍(lán)牙技術(shù)的推送系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
2016年微型機(jī)與應(yīng)用第20期
田林青,,余成波,,孔慶達(dá),,王艷麗
重慶理工大學(xué) 遠(yuǎn)程測(cè)試與控制研究所,,重慶市400054
摘要: 互聯(lián)網(wǎng)和移動(dòng)終端的普及推動(dòng)著LBS向ILBS發(fā)展,,而藍(lán)牙與移動(dòng)終端良好的契合使其成為室內(nèi)定位技術(shù)的首選,。分析了基于藍(lán)牙技術(shù)的推送系統(tǒng)的原理,,實(shí)現(xiàn)了以藍(lán)牙節(jié)點(diǎn),、移動(dòng)終端,、服務(wù)器為三大模塊的推送系統(tǒng),。實(shí)驗(yàn)結(jié)果表明,以藍(lán)牙4.0設(shè)備發(fā)射信號(hào),、BluetoothAdapter掃描搜索,、HttpURLConnection傳輸數(shù)據(jù)、JPush推送信息、Sae云平臺(tái)移植組成的室內(nèi)定位推送系統(tǒng)具有開發(fā)周期短,、消息推送實(shí)時(shí)性強(qiáng),、穩(wěn)定性好等優(yōu)點(diǎn)?;诖藰?gòu)建的藍(lán)牙技術(shù)的推送系統(tǒng)在室內(nèi)定位方面具有很大的市場(chǎng)價(jià)值,。
關(guān)鍵詞: 藍(lán)牙 ILBS 信息推送
Abstract:
Key words :

  田林青,余成波,,孔慶達(dá),,王艷麗

  (重慶理工大學(xué) 遠(yuǎn)程測(cè)試與控制研究所,,重慶市400054)

       摘要:互聯(lián)網(wǎng)和移動(dòng)終端的普及推動(dòng)著LBS向ILBS發(fā)展,,而藍(lán)牙與移動(dòng)終端良好的契合使其成為室內(nèi)定位技術(shù)的首選。分析了基于藍(lán)牙技術(shù)的推送系統(tǒng)的原理,,實(shí)現(xiàn)了以藍(lán)牙節(jié)點(diǎn),、移動(dòng)終端、服務(wù)器為三大模塊的推送系統(tǒng),。實(shí)驗(yàn)結(jié)果表明,,以藍(lán)牙4.0設(shè)備發(fā)射信號(hào)、BluetoothAdapter掃描搜索,、HttpURLConnection傳輸數(shù)據(jù),、JPush推送信息、Sae云平臺(tái)移植組成的室內(nèi)定位推送系統(tǒng)具有開發(fā)周期短,、消息推送實(shí)時(shí)性強(qiáng),、穩(wěn)定性好等優(yōu)點(diǎn)?;诖藰?gòu)建的藍(lán)牙技術(shù)的推送系統(tǒng)在室內(nèi)定位方面具有很大的市場(chǎng)價(jià)值,。

  關(guān)鍵詞:藍(lán)牙;ILBS,;信息推送

  中圖分類號(hào):TP393.0文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674 7720.2016.20.017

  引用格式:田林青,,余成波,孔慶達(dá),,等. 基于藍(lán)牙技術(shù)的推送系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,,2016,35(20):61 64.

0引言

  近幾年,LBS(基于位置信息服務(wù))技術(shù)已經(jīng)在人們生活中得到廣泛應(yīng)用,,比如通過GPS來獲得位置信息,。然而,互聯(lián)網(wǎng)和移動(dòng)終端的普及和發(fā)展,,推動(dòng)著LBS向ILBS(基于室內(nèi)位置服務(wù))過渡,。一些景點(diǎn),、商場(chǎng)、博物館,、機(jī)場(chǎng)等公共場(chǎng)所需要室內(nèi)定位來提供精確的位置信息,,而GPS等室外定位技術(shù)由于信號(hào)在室內(nèi)衰減快,不能用于室內(nèi)定位,。室內(nèi)定位技術(shù)主要有藍(lán)牙,、ZigBee、WiFi,、射頻識(shí)別,、超寬帶等。由于藍(lán)牙和移動(dòng)終端的良好契合以及藍(lán)牙4.0版本推出以來的低功耗,、低成本、高性價(jià)比等優(yōu)點(diǎn),,使得藍(lán)牙技術(shù)成為移動(dòng)終端室內(nèi)定位技術(shù)的首選,。本文基于藍(lán)牙技術(shù),選取藍(lán)牙4.0設(shè)備作為信號(hào)發(fā)射節(jié),,BluetoothAdapter用來掃描搜索各節(jié)點(diǎn)信息,,HttpURLConnection用來傳輸采集到的所需信息,JPush用來向終端推送消息,,以及最后將本地服務(wù)器端程序部署到Sae云平臺(tái),,從而完成整個(gè)推送系統(tǒng)的設(shè)計(jì)。

1推送系統(tǒng)分析

  1.1推送系統(tǒng)工作原理

  推送系統(tǒng)工作原理圖如圖1所示,。在室內(nèi)環(huán)境根據(jù)所需部署一定數(shù)量的藍(lán)牙節(jié)點(diǎn)AP,,攜帶安裝相應(yīng)APP的移動(dòng)終端進(jìn)入定位區(qū)域采集各節(jié)點(diǎn)發(fā)出的信息[1-2]。APP接收各藍(lán)牙節(jié)點(diǎn)發(fā)出的設(shè)備名和信號(hào)強(qiáng)度等信息并將其發(fā)送至服務(wù)器端,,服務(wù)器端結(jié)合室內(nèi)定位算法訪問離線建立的數(shù)據(jù)庫(kù)從而得到終端具體位置,。最后通過得到的具體位置調(diào)用第三方推送服務(wù)器完成消息的推送[3]。系統(tǒng)核心部分包括采集模塊,、傳輸模塊和推送模塊,。而訪問數(shù)據(jù)庫(kù)和調(diào)用第三方推送服務(wù)器的操作都集成在服務(wù)器中。

圖像 006.png

  1.2硬件選型

  推送系統(tǒng)的硬件部分主要是對(duì)藍(lán)牙發(fā)射節(jié)點(diǎn)的選取,。藍(lán)牙4.0是2012年最新藍(lán)牙版本,,是藍(lán)牙3.0的升級(jí)版本,較3.0版本具有更省電,、成本低,、3 ms低延遲、超長(zhǎng)有效連接距離,、AES128加密等優(yōu)點(diǎn),。與4.0以后的版本比較,4.0的優(yōu)勢(shì)則在于其成熟的技術(shù)已經(jīng)得到廣泛的應(yīng)用以及具有更高的性價(jià)比,因此藍(lán)牙4.0設(shè)備是實(shí)驗(yàn)首選的藍(lán)牙發(fā)射節(jié)點(diǎn),。本系統(tǒng)采用CC2540作為核心芯片,,尺寸為41×41×21(mm),采用電池CR2477(1000 mAh),,采用工作時(shí)間能持續(xù)一年以上的iBeacon作為藍(lán)牙發(fā)射節(jié)點(diǎn),。其能提供空曠地大于50 m以上的信號(hào)接收以及500 ms的廣播頻率和-0 dBm的廣播功率,滿足系統(tǒng)所需要求,。產(chǎn)品如圖2所示,。通過產(chǎn)品表面USB接口旁邊的開關(guān)即可打開設(shè)備。

圖像 007.png

2采集模塊

  持有相應(yīng)APP的移動(dòng)終端進(jìn)入藍(lán)牙節(jié)點(diǎn)覆蓋區(qū)域,,當(dāng)用戶打開APP并且根據(jù)用戶名和密碼登錄成功之后便可以進(jìn)行定位,。而定位的觸發(fā)是通過定位按鈕來進(jìn)行開啟定位的。這樣APP就會(huì)自動(dòng)接收來自藍(lán)牙節(jié)點(diǎn)的信息,,這些信息包括UUID,、NAME、RSSI,、Major,、Minor、MAC等,。而采集模塊要做的就是根據(jù)接收到的多個(gè)藍(lán)牙節(jié)點(diǎn)數(shù)據(jù),,從中獲得所需數(shù)據(jù),然后將有用的數(shù)據(jù)打包以進(jìn)行傳輸,。通常的做法是利用Android四大組件之一的Broadcast Receiver[4],。先對(duì)Receiver進(jìn)行注冊(cè),然后再在實(shí)例化的Receiver中根據(jù)filter過濾廣播,。由于實(shí)例化的Receiver是一個(gè)條件循環(huán)語句,,因此便能在其內(nèi)部處理多個(gè)節(jié)點(diǎn)發(fā)過來的信息,從而對(duì)有用數(shù)據(jù)進(jìn)行整理打包,。但此方法的弊端在于廣播接收器本身就是一個(gè)子線程,,而這個(gè)子線程持續(xù)的時(shí)間不長(zhǎng)便會(huì)自動(dòng)結(jié)束,因此不能在其中加入訪問網(wǎng)絡(luò)等耗時(shí)操作,,否則子線程關(guān)閉時(shí)會(huì)強(qiáng)制結(jié)束在其中加入的操作,。然而此系統(tǒng)的定位本身就是一個(gè)訪問服務(wù)器的網(wǎng)絡(luò)耗時(shí)操作,還涉及數(shù)據(jù)庫(kù)的訪問和消息推送,,因此這種方法并不可取,。

  針對(duì)搜索BLE低功耗藍(lán)牙設(shè)備,Android官方提供了一種專門掃描藍(lán)牙設(shè)備的方法startLeScan,。這種方法通過藍(lán)牙適配器BluetoothAdapter啟動(dòng),,并且需要傳入BluetoothAdapter.LeScanCallback類型參數(shù),,這里將其命令為Scancallback。而其內(nèi)部的onLeScan方法實(shí)現(xiàn)了核心數(shù)據(jù)的接收和處理,。核心代碼如下:

  public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {

  int startByte = 2;

  boolean patternfound = false;

  //尋找iBeacon

  while (startByte <= 5) {

  if (((int) scanRecord[startByte + 2] & 0xff) == 0x02 &&((int) scanRecord[startByte + 3] & 0xff) == 0x15) {

  patternfound = true;

  break;

  }

  startByte++;

  }

  //如果找到藍(lán)牙設(shè)備

  if (patternfound) {

  //此處限于篇幅,,獲得所需的設(shè)備名和信號(hào)強(qiáng)度值即可

  ibeaconName = device.getName();

  mrssi = rssi;

  }

  }

  在onLeScan方法內(nèi)部就能拿到所需的節(jié)點(diǎn)發(fā)送信息。由于Scancallback是一個(gè)循環(huán),,設(shè)備會(huì)不斷地搜索來自附近的藍(lán)牙節(jié)點(diǎn)發(fā)出的信息,,并且不會(huì)自動(dòng)關(guān)閉此掃描,因此能夠在此循環(huán)中加入耗時(shí)操作,,很好地解決了室內(nèi)定位的耗時(shí)問題,。

3傳輸模塊

  經(jīng)過APP搜索得到的藍(lán)牙節(jié)點(diǎn)的有用信息要通過聯(lián)網(wǎng)耗時(shí)操作傳輸?shù)椒?wù)器端,然后服務(wù)器根據(jù)搜索到的信息來進(jìn)行相應(yīng)處理,。Android通過HTTP訪問網(wǎng)絡(luò)通常有兩種方式:Apache的HttpClient和Java的HttpURLConnection[5],。前者是Android SDK集成了Apache的模塊,后者是Java的JDK中自帶的類,。盡管HttpClient更加豐富,、高效,但是考慮到實(shí)時(shí)定位要多次地訪問服務(wù)器,,因此這里選擇性能和穩(wěn)定性更好的HttpURLConnection進(jìn)行訪問傳輸[6],。核心代碼如下:

  //定義訪問服務(wù)器地址

  String request_url="";

  //定義傳輸?shù)膮?shù),,即采集模塊中得到的數(shù)據(jù)

  String params="";

  //拼接

  URL url = new URL(request_url + params);

  //開啟連接

  HttpURLConnection connection=(HttpURLConnection) url.openConnection();

  //連接超時(shí)時(shí)限設(shè)置(根據(jù)需要設(shè)置)

  connection.setConnectTimeout(5*1000);

  //POST方式較GET方式更安全

  connection.setRequestMethod("POST");

  //表示訪問網(wǎng)絡(luò)時(shí)需要傳入?yún)?shù)

  connection.setDoInput(true);

  //利用狀態(tài)碼判斷訪問服務(wù)器是否成功

  if (connection.getResponseCode() == 200) {

  //構(gòu)造方法,,傳入?yún)?shù)。從服務(wù)器端拿到相應(yīng)json數(shù)據(jù)

  returninputStream2String(connection.getInputStream());

  }

4推送模塊

  服務(wù)器將傳輸來的數(shù)據(jù)結(jié)合數(shù)據(jù)庫(kù)和室內(nèi)定位算法進(jìn)行處理,,得到位置坐標(biāo),,此處用x和y表示,然后根據(jù)此坐標(biāo)進(jìn)行相應(yīng)的消息推送,。PUSH(推送)技術(shù)相對(duì)于PULL(拉?。┘夹g(shù)而言,其獲得信息的實(shí)時(shí)性和針對(duì)性更強(qiáng),,是一種由服務(wù)器主動(dòng)推送消息的服務(wù)機(jī)制,。實(shí)現(xiàn)推送的方式大致分為四類:C2DM(谷歌提供)、MQTT協(xié)議(非開源),、XMPP協(xié)議,、第三方推送平臺(tái)[7]??紤]到資源的可利用性以及第三方平臺(tái)的逐漸成熟,、免費(fèi)、開發(fā)周期短等優(yōu)點(diǎn),,選擇極光推送JPush作為第三方推送服務(wù)器進(jìn)行消息推送,。利用JPush實(shí)現(xiàn)服務(wù)器向客戶端推送消息需要部署兩個(gè)核心點(diǎn):Android端和服務(wù)器端,。而這種部署方式在JPush官方文檔中已經(jīng)做了大致說明,現(xiàn)將其總結(jié)如下,。

  (1)Android端

 ?、賹?dǎo)入官網(wǎng)提供的的推送所需jar包和3個(gè)so文件;so文件需在main目錄下新建一個(gè)名為jniLibs的文件夾用來存放,,這樣jar包才能通過文件名讀取so文件,。

  ②向APP的配置文件AndroidManifest.xml中加入推送所需權(quán)限,;應(yīng)用程序包名package應(yīng)和官方創(chuàng)建應(yīng)用時(shí)的包名一致,;配置文件中name="JPUSH_APPKEY"一項(xiàng)的value值應(yīng)該填入官網(wǎng)創(chuàng)建應(yīng)用后生成的AppKey,這樣JPush服務(wù)器才會(huì)根據(jù)此key值推送消息到嵌入此key值的客戶端,。

 ?、墼趹?yīng)用程序根目錄下創(chuàng)建繼承application的類,在其方法中加入JPushInterface.init(this)語句來初始化JPush的SDK,。

  (2)服務(wù)器端

 ?、賹?dǎo)入相應(yīng)jar包和3個(gè)依賴包。

 ?、谠诜?wù)器端寫入相應(yīng)相應(yīng)邏輯,。關(guān)鍵在于創(chuàng)建JPushClient對(duì)象,傳入創(chuàng)建應(yīng)用時(shí)產(chǎn)生的參數(shù)AppKey和Master Secret,;再創(chuàng)建PushPayload對(duì)象,,傳入想傳輸?shù)南essage;最后通過jpushClient.sendPush(payload)即可以通過服務(wù)器向JPush服務(wù)器推送消息,,此消息再經(jīng)過JPush服務(wù)器推送到客戶端APP,。

5本地服務(wù)器搭建測(cè)試和云部署

  相應(yīng)邏輯和室內(nèi)定位算法的實(shí)現(xiàn)幾乎全在服務(wù)器端。服務(wù)器是收發(fā)消息的中轉(zhuǎn)站,,訪問數(shù)據(jù)庫(kù)并調(diào)用JPush推送消息,。項(xiàng)目最初是通過搭建本地服務(wù)器進(jìn)行調(diào)試,調(diào)試成功之后再將項(xiàng)目代碼部署到云服務(wù)器上,。

  5.1本地服務(wù)器搭建測(cè)試

  搭建:MyEclipse10.7+MySQL5.6+TomCat7.0構(gòu)成本地服務(wù)器核心環(huán)境,;連接數(shù)據(jù)庫(kù)時(shí)注意數(shù)據(jù)庫(kù)的用戶名、密碼和訪問端口應(yīng)與安裝MySQL服務(wù)器中一致,。

  測(cè)試:服務(wù)器端邏輯采用基本的MVC模式,。室內(nèi)定位算法擬采用基于藍(lán)牙4.0的接近度分類室內(nèi)定位算法進(jìn)行實(shí)現(xiàn)[8-9]。這種非參數(shù)化的室內(nèi)定位算法需要事先在定位范圍內(nèi)采集數(shù)據(jù)并放入數(shù)據(jù)庫(kù)中,,然后設(shè)置好數(shù)據(jù)庫(kù)的連接,,用TomCat啟動(dòng)程序即可。定位范圍擬采用6 m×6 m空間,,在空間內(nèi)4個(gè)角布置4個(gè)藍(lán)牙節(jié)點(diǎn),,客戶端根據(jù)需要設(shè)置固定時(shí)間間隔訪問服務(wù)器進(jìn)行定位,。為方便觀察定位結(jié)果,將接收的信號(hào)強(qiáng)度值,、設(shè)備名稱和定位坐標(biāo)分開調(diào)試并輸出到服務(wù)器控制臺(tái)顯示,。調(diào)試結(jié)果分別如圖3和圖4所示。

圖像 008.png

圖像 009.png

其中flag作為登錄和定位的標(biāo)識(shí),,而返回的json作為是否訪問成功的標(biāo)識(shí),,結(jié)果為1表示訪問成功。調(diào)試結(jié)果表明能夠根據(jù)所搭建環(huán)境和擬采用的算法進(jìn)行實(shí)時(shí)定位,。

  5.2云部署

  應(yīng)用要得到廣泛的應(yīng)用,,其應(yīng)用范圍就要不受距離的限制。將本地服務(wù)器代碼部署到云服務(wù)器上,,讓所有安裝相應(yīng)APP的用戶能夠通過網(wǎng)絡(luò)就能獲得相應(yīng)服務(wù)是必然的選擇[10],。Sae是新浪提供的云服務(wù)器,其在國(guó)內(nèi)云提供商中發(fā)展時(shí)間最長(zhǎng),,功能相對(duì)完善,,文檔全面完整,且支持PHP,、Python,、Java等語言。

 ?。?)工程文件上傳:將本地寫好的工程文件利用MyEclipse導(dǎo)出war包,,且war包名要和Sae官網(wǎng)創(chuàng)建的應(yīng)用名稱相同,這里用bluetooth表示,。注意本地JDK版本的匹配,,選1.6最好,。

  (2)數(shù)據(jù)庫(kù)連接配置:云服務(wù)器自帶數(shù)據(jù)庫(kù)服務(wù),,這和本地MySQL類似,一樣可以利用JDBC進(jìn)行訪問,,修改其中的用戶名,、密碼和端口號(hào)即可。

  //URL中的AppName需要替換成相應(yīng)的AppName

  URL="jdbc:mysql://w.rdc.sae.sina.com.cn:3307/app_AppName";

  USERNAME="SaeUserInfo.getAccesskey()";

  PASSWORD="SaeUserInfo.getSecretkey()";

  AppName="SaeUserInfo.getAppName()";

  其中SaeUserInfo類需要到Sae官網(wǎng)去下載,。代碼上傳后,,利用Web端網(wǎng)頁(yè)進(jìn)行用戶名、密碼登錄測(cè)試,。當(dāng)成功訪問云服務(wù)器數(shù)據(jù)庫(kù)后應(yīng)該返回json格式的數(shù)據(jù)1,,測(cè)試結(jié)果如圖5所示。

圖像 010.png

  在URL處輸入所要訪問的鏈接來檢驗(yàn)代碼是否上傳成功,。通過訪問所傳war包中的登錄模塊,,返回json={“result”:1},,結(jié)果與圖3、圖4中的本地服務(wù)器測(cè)試返回的json一致,,因此代碼上傳成功,。

6系統(tǒng)測(cè)試與效果分析

  設(shè)計(jì)app,實(shí)現(xiàn)基本的登錄,、注冊(cè)功能,,并在登錄成功后提供定位推送功能,通過登錄成功界面的定位按鈕進(jìn)行定位,。

  為了更加清楚地觀察收發(fā)過程核心數(shù)據(jù)的變化,,設(shè)計(jì)一個(gè)界面(圖6所示)作為點(diǎn)擊定位按鈕后來實(shí)時(shí)地顯示藍(lán)牙節(jié)點(diǎn)數(shù)據(jù)。圖6中接收的數(shù)據(jù)會(huì)傳輸?shù)椒?wù)器端,,經(jīng)過提前寫好的室內(nèi)定位算法并且訪問數(shù)據(jù)庫(kù)從而完成相應(yīng)的推送(圖7所示),。

圖像 011.png

圖像 012.png

  推送的結(jié)果是源于對(duì)定位區(qū)域6 m×6 m的四等分。經(jīng)多次定位區(qū)域內(nèi)隨機(jī)測(cè)試,,客戶端能根據(jù)終端位置變化實(shí)時(shí)地接收到推送的消息,。

7結(jié)論

  本文研制了一種基于藍(lán)牙4.0技術(shù)的推送系統(tǒng)。該系統(tǒng)主要由藍(lán)牙節(jié)點(diǎn),、移動(dòng)端APP,、服務(wù)器Server三大部分組成。并且根據(jù)系統(tǒng)的核心難點(diǎn)對(duì)各部分的關(guān)鍵模塊做了分析,,其中包括采集模塊,、傳輸模塊和推送模塊。最后將寫好的本地服務(wù)器代碼部署到云服務(wù)器,,完成了整個(gè)系統(tǒng)的設(shè)計(jì),。經(jīng)測(cè)試,該推送系統(tǒng)具有良好的穩(wěn)定性和實(shí)時(shí)性,,能夠依賴于室內(nèi)定位算法提供較準(zhǔn)確的定位,,在室內(nèi)定位應(yīng)用領(lǐng)域具有巨大的市場(chǎng)價(jià)值。

  參考文獻(xiàn)

 ?。?] 石志京,徐鐵峰,劉太君,,等.基于iBeacon基站的室內(nèi)定位技術(shù)研究[J].移動(dòng)通信,2012,39(7):88-91.

 ?。?] RIDA M E,, Liu Fuqiang, JADI Y, et al.Indoor location position based on Bluetooth signal strength[C].2015 2nd International Conference on Information Science and Control Engineering,2015:769-773.

  [3] 劉平.Android手機(jī)訪問服務(wù)器的一種數(shù)據(jù)交互方法[J].通信與網(wǎng)絡(luò),2010,18(9):96-98.

 ?。?] SMITH D, FRIESEN J. Android recipes:a problemsolution approach (Second Edition)[M].New York: Apress Media,2012.

 ?。?] 馬昭征.基于HTTP的安卓與服務(wù)器交互方法的實(shí)現(xiàn)[J].無線互聯(lián)科技,2015(3):92-96,114.

  [6] 李寧.Android開發(fā)完全講義[M].北京:中國(guó)水利水電出版社,2012.

 ?。?] 田雷.基于移動(dòng)終端的旅游信息推送服務(wù)系統(tǒng)關(guān)鍵技術(shù)研究[D].杭州:浙江大學(xué),2010.

 ?。?] 莫倩,熊碩.基于藍(lán)牙4.0的接近度分類室內(nèi)定位算法[J].宇航計(jì)測(cè)技術(shù),2014,,34(6):66-70.

  [9] LEE S W,,KOO B H,,JIN M G, et al. Rangefree indoor positioning system using smartphone with Bluetooth capability [J]. 2014 IEEE/ION Position, Location and Navigation Symposium, PLANS 2014,, 2014:657-662.

 ?。?0] 張愛玉,周衛(wèi)東,夏吉廣,等.云平臺(tái)搭建的關(guān)鍵技術(shù)研究[J]. 中國(guó)安防,,2012(9):88-94.

  


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。