国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android 的物聯(lián)網(wǎng)移動(dòng)感知服務(wù)平臺(tái)

2013-12-29 00:00:00王明曉
電腦知識(shí)與技術(shù) 2013年4期

摘要:針對(duì)稀疏網(wǎng)絡(luò)場(chǎng)景造成的感知空洞問(wèn)題,引入基于智能終端的移動(dòng)感知服務(wù)概念,解決目標(biāo)區(qū)域的感知服務(wù)盲區(qū)問(wèn)題,提高感知服務(wù)質(zhì)量。首先,分析移動(dòng)感知的技術(shù)難點(diǎn),介紹系統(tǒng)的整體框架;其次,針對(duì)感知信息的實(shí)時(shí)獲取,在Android平臺(tái)上編程實(shí)現(xiàn)了移動(dòng)設(shè)備交互記錄、各種內(nèi)嵌傳感器信息和設(shè)備GPS地理位置等感知信息的采集;最后,搭建了用于應(yīng)用程序開發(fā)的編程環(huán)境并設(shè)置了Android模擬器,實(shí)現(xiàn)系統(tǒng)相關(guān)核心技術(shù)。該項(xiàng)目的研究成果對(duì)于提高感知效率,提升感知服務(wù)的可靠性具有重要的理論和現(xiàn)實(shí)意義。

關(guān)鍵詞:物聯(lián)網(wǎng);信息采集;移動(dòng)感知;Android系統(tǒng);服務(wù)質(zhì)量;

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)04-0925-05

The Mobile-aware Service Platform Based on Android System in Internet of Things

WANG Ming-xiao

(No.631 Research Institute, Aviation Industry Corporation of China, Xi’an 710049,China)

Abstract:Aimed at the cavity problem of perception in sparse network, we introduces the concept of mobile-aware services based on Android system, to realize the perception services in the blind target area and improve the perception of quality of service of Things. Firstly, we analyze the difficulties in mobile-awareness, and introduce the total system framework. Then, by introducing and learning application software development knowledge and technology based on the Android system, we program the application software on the Android platform to realize the functions of collecting the interactive record, variety of embedded sensor information and GPS location information of devices. Finally, the programming environment and simulator is built to realize the related core technologies. The research results of this project have important theoretical and practical significance for improving the node selection and found speed of the perceived service in the target area and enhancing the reliability of perception service.

Key words: Internet of Things; information collecting; mobile-awareness; Android; the quality of service

隨著傳感技術(shù)、嵌入式技術(shù)、無(wú)線通信技術(shù)、高性能計(jì)算等相關(guān)領(lǐng)域的迅猛發(fā)展,“物聯(lián)網(wǎng)”(Internet of Things)作為新一代的智能互聯(lián)網(wǎng)絡(luò)應(yīng)運(yùn)而生,而且已經(jīng)成為新一代信息技術(shù)的重要組成部分,被稱為是繼計(jì)算機(jī)、互聯(lián)網(wǎng)以及電信網(wǎng)之后的第三次世界信息浪潮。

由于物聯(lián)網(wǎng)的感知區(qū)域更廣泛,受到資金、環(huán)境因素、地理特點(diǎn)、后期維護(hù)等因素的影響,不可能像傳統(tǒng)傳感器網(wǎng)絡(luò)那樣部署大量的冗余節(jié)點(diǎn),而應(yīng)該是一個(gè)廣泛分布且感知節(jié)點(diǎn)又相對(duì)稀疏的網(wǎng)絡(luò)。稀疏網(wǎng)絡(luò)雖然具有節(jié)約資金、便于維護(hù)等特點(diǎn),但必然會(huì)造成感知空洞,在降低成本的同時(shí)嚴(yán)重的損害了物聯(lián)網(wǎng)的感知服務(wù)質(zhì)量。因此,如何解決感知空洞問(wèn)題,將成為物聯(lián)網(wǎng)感知研究面臨的新問(wèn)題。

因此,課題組利用移動(dòng)設(shè)備中常用的Android平臺(tái),構(gòu)建一個(gè)移動(dòng)感知框架,通過(guò)對(duì)收集和獲取節(jié)點(diǎn)各種感知信息,為提升稀疏網(wǎng)絡(luò)中的感知覆蓋范圍,減少感知空洞,提高感知服務(wù)質(zhì)量提供幫助。

1 Android開發(fā)平臺(tái)

Android系統(tǒng)結(jié)構(gòu)從上到依次為:應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層、Linux核心層。最底層是Linux內(nèi)核,Android的核心系統(tǒng)服務(wù)依賴于Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議和驅(qū)動(dòng)模型。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。開發(fā)人員可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。這種架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用,每一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用這些功能塊,這種應(yīng)用程序重用機(jī)制使用戶可以方便的替換程序組件。在系統(tǒng)架構(gòu)圖中可以清晰展示,如圖1所示。

Android的核心功能之一就是一個(gè)應(yīng)用程序可以使用其它應(yīng)用程序的元素。你的應(yīng)用程序并沒(méi)有吸納或鏈接其它應(yīng)用程序的代碼,它只是在有需求的時(shí)候啟動(dòng)了其它應(yīng)用程序的那個(gè)功能部分。為達(dá)到這個(gè)目的,系統(tǒng)必須在一個(gè)應(yīng)用程序的一部分被需要時(shí)啟動(dòng)這個(gè)應(yīng)用程序,并將那個(gè)部分的Java對(duì)象實(shí)例化。與在其它系統(tǒng)上的應(yīng)用程序不同,Android應(yīng)用程序沒(méi)有為應(yīng)用準(zhǔn)備一個(gè)單獨(dú)的程序入口(比如說(shuō),沒(méi)有main()方法), 而是為系統(tǒng)依照需求實(shí)例化提供了基本的組件。共有四種組件類型:Activity, Service, Broadcast Receiver和Content Provider。

1.1 Activity

Activity是為用戶操作而展示的可視化用戶界面。一個(gè)應(yīng)用程序可以只有一個(gè)activity,也可以包含很多個(gè)。每個(gè)activity的作用,以及其數(shù)目,自然取決于應(yīng)用程序及其設(shè)計(jì)。一般情況下,總有一個(gè)應(yīng)用程序被標(biāo)記為用戶在應(yīng)用程序啟動(dòng)的時(shí)候第一個(gè)看到的。從一個(gè)activity轉(zhuǎn)向另一個(gè)的方式是用當(dāng)前的activity啟動(dòng)下一個(gè)。

窗口顯示的可視內(nèi)容是由一系列視圖構(gòu)成的,這些視圖均繼承自View基類。每個(gè)視圖均控制著窗口中一塊特定的矩形空間。父級(jí)視圖包含并組織它子視圖的布局。葉節(jié)點(diǎn)視圖(位于視圖層次最底端)在它們控制的矩形中進(jìn)行繪制,并對(duì)用戶對(duì)其直接操作做出響應(yīng)。所以,視圖是activity與用戶進(jìn)行交互的界面。比如說(shuō),視圖可以顯示一個(gè)小圖片,并在用戶指點(diǎn)它的時(shí)候產(chǎn)生動(dòng)作。Android有很多既定的視圖供用戶直接使用,包括按鈕、文本域、卷軸、菜單項(xiàng)、復(fù)選框等等。

1.2 Service

服務(wù)沒(méi)有可視化的用戶界面,而是在一段時(shí)間內(nèi)在后臺(tái)運(yùn)行。比如說(shuō),一個(gè)服務(wù)可以在用戶做其它事情的時(shí)候在后臺(tái)播放背景音樂(lè)、從網(wǎng)絡(luò)上獲取一些數(shù)據(jù)或者計(jì)算一些東西并提供給需要這個(gè)運(yùn)算結(jié)果的activity使用。每個(gè)服務(wù)都繼承自Service基類。

你可以連接至(綁定)一個(gè)正在運(yùn)行的服務(wù)(如果服務(wù)沒(méi)有運(yùn)行,則啟動(dòng)之)。連接之后,你可以通過(guò)那個(gè)服務(wù)暴露出來(lái)的接口與服務(wù)進(jìn)行通訊。對(duì)于音樂(lè)服務(wù)來(lái)說(shuō),這個(gè)接口可以允許用戶暫停、回退、停止以及重新開始播放。

1.3 Broadcast Receiver

廣播接收器是一個(gè)專注于接收廣播通知信息,并做出對(duì)應(yīng)處理的組件。很多廣播是源自于系統(tǒng)代碼的,比如,通知時(shí)區(qū)改變、電池電量低、拍攝了一張照片或者用戶改變了語(yǔ)言選項(xiàng)。應(yīng)用程序也可以進(jìn)行廣播──比如說(shuō),通知其它應(yīng)用程序一些數(shù)據(jù)下載完成并處于可用狀態(tài)。應(yīng)用程序可以擁有任意數(shù)量的廣播接收器以對(duì)所有它感興趣的通知信息予以響應(yīng)。所有的接收器均繼承自Broadcast Receiver基類。廣播接收器沒(méi)有用戶界面。然而,它們可以啟動(dòng)一個(gè)activity來(lái)響應(yīng)它們收到的信息,或者用Notification Manager來(lái)通知用戶。通知可以用很多種方式來(lái)吸引用戶的注意力—閃動(dòng)背燈、震動(dòng)、播放聲音等等。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標(biāo),用戶可以打開它并獲取消息。

1.4 Content Provider

內(nèi)容提供者將一些特定的應(yīng)用程序數(shù)據(jù)供給其它應(yīng)用程序使用。數(shù)據(jù)可以存儲(chǔ)于文件系統(tǒng)、SQLite數(shù)據(jù)庫(kù)或其它方式。內(nèi)容提供者繼承于Content Provider 基類,為其它應(yīng)用程序取用和存儲(chǔ)它管理的數(shù)據(jù)實(shí)現(xiàn)了一套標(biāo)準(zhǔn)方法。然而,應(yīng)用程序并不直接調(diào)用這些方法,而是使用一個(gè) Content Resolver 對(duì)象,調(diào)用它的方法作為替代。Content Resolver可以與任意的內(nèi)容提供者進(jìn)行會(huì)話,與其合作來(lái)對(duì)所有相關(guān)交互通訊進(jìn)行管理。

每當(dāng)出現(xiàn)一個(gè)需要被特定組件處理的請(qǐng)求時(shí),Android會(huì)確保那個(gè)組件的應(yīng)用程序進(jìn)程處于運(yùn)行狀態(tài),或在必要的時(shí)候啟動(dòng)它。并確保那個(gè)相應(yīng)組件的實(shí)例的存在,必要時(shí)會(huì)創(chuàng)建那個(gè)實(shí)例。

2 系統(tǒng)框架

本文研究工作主要針對(duì)于物聯(lián)網(wǎng)移動(dòng)感知服務(wù)體系,著力研究手機(jī)客戶端中基于Android平臺(tái)的有關(guān)傳感信息及節(jié)點(diǎn)間交互記錄等信息的提取等部分,從而為以后的感知服務(wù)的提供、傳遞鏈路的選擇等工作提供基礎(chǔ)。系統(tǒng)框架如圖2所示。移動(dòng)端主要實(shí)現(xiàn)了各種感知信息的實(shí)時(shí)獲取,例如內(nèi)嵌傳感器信息、通話記錄、GPS信息等,這些數(shù)據(jù)都將為最終的移動(dòng)感知服務(wù)實(shí)現(xiàn)提供數(shù)據(jù)源。

圖2 系統(tǒng)整體方案

Android開發(fā)平臺(tái)的搭建,首先需要了解Android開發(fā)環(huán)境要素和層次架構(gòu)。Android系統(tǒng)采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語(yǔ)言開發(fā),只提供基本功能;中間層包括函數(shù)庫(kù)Library和虛擬機(jī)Virtual Machine,由C++開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分;其次,通過(guò)官方的開發(fā)文檔學(xué)習(xí)Eclipse、JDK、ADT等插件功能,配置合理的環(huán)境變量;最終構(gòu)建適合本應(yīng)用場(chǎng)景的Android模擬器,為下一步的程序開發(fā)提供基礎(chǔ)。搭建完成后的模擬開發(fā)器平臺(tái)界面如圖3示:

圖3 Android開發(fā)模擬器

3 基于Android客戶端實(shí)現(xiàn)

Android系統(tǒng)中應(yīng)用軟件的設(shè)計(jì)采用了組件開發(fā)模式,每個(gè)應(yīng)用程序由不同功能的組件搭建起來(lái)。所以我們?cè)谲浖O(shè)計(jì)中,將調(diào)用一個(gè)Activity組件,設(shè)計(jì)成為登陸界面,Activity組建的實(shí)現(xiàn)要通過(guò)重寫其中的onCreat()方法來(lái)設(shè)計(jì)我們需要的功能。登陸界面主要起引導(dǎo)作用,在此登陸界面中可以通過(guò)不同按鈕來(lái)選擇啟動(dòng)各項(xiàng)功能進(jìn)入其相應(yīng)的操作界面,其中每個(gè)主要功能也分別用一個(gè)Activity組建實(shí)現(xiàn),通過(guò)設(shè)置相應(yīng)的點(diǎn)擊事件監(jiān)聽器來(lái)響應(yīng)每一次按鈕的的點(diǎn)擊動(dòng)作,這樣當(dāng)點(diǎn)擊相應(yīng)按鈕即可在登陸界面中通過(guò)實(shí)現(xiàn)多個(gè)事件喚醒機(jī)制intent來(lái)啟動(dòng)相應(yīng)功能,跳轉(zhuǎn)到相應(yīng)的業(yè)務(wù)流程中去,而相應(yīng)各部分主要的功能界面中也設(shè)計(jì)了返回按鈕,當(dāng)完成相應(yīng)功能后用戶可以點(diǎn)擊選擇返回主界面,進(jìn)行其他操作。

3.1 登錄界面的實(shí)現(xiàn)

為了響應(yīng)按鈕點(diǎn)擊事件,我們需要對(duì)于每個(gè)按鈕都設(shè)置一個(gè)點(diǎn)擊事件監(jiān)聽器,其設(shè)置方式如下:

button.setOnClickListener(new Button.OnClickListener(){

public void onClick(View V){}

});

通過(guò)實(shí)現(xiàn)其中的public void onClick(View V)方法就可以實(shí)現(xiàn)對(duì)點(diǎn)擊時(shí)間的響應(yīng)做出相應(yīng)的動(dòng)作。

由于每一部分都實(shí)現(xiàn)了一個(gè)單獨(dú)的Activity組件,所以當(dāng)我們點(diǎn)擊按鈕時(shí)所需要做的動(dòng)作是激活相應(yīng)的組件轉(zhuǎn)入到其業(yè)務(wù)流程中去。在Android應(yīng)用程序設(shè)計(jì)中Activity組件需要被一種叫做intent的異步消息所激活。intent是一個(gè)保存著消息內(nèi)容的Intent對(duì)象。對(duì)于Activity來(lái)說(shuō),它指明了請(qǐng)求的操作名稱以及作為操作對(duì)象的數(shù)據(jù)的URI和其它一些信息。具體的實(shí)現(xiàn)方法如下:

Intent contact = new Intent();

contact.setClass(MyAndroidActivity.this,Activity1.class);

startActivity(Activity1);

首先聲明了一個(gè)intent,然后指定Activity組件之間的調(diào)用關(guān)系,最后一句用來(lái)啟動(dòng)相應(yīng)的組件來(lái)轉(zhuǎn)入相應(yīng)的功能流程。在前面設(shè)置的的點(diǎn)擊事件監(jiān)聽器中的public void onClick(View V)方法中,實(shí)現(xiàn)對(duì)intent的聲明和調(diào)用即可實(shí)現(xiàn)按鍵點(diǎn)擊時(shí)自動(dòng)切換組件轉(zhuǎn)入相應(yīng)功能界面的功能,其實(shí)現(xiàn)如下:

Button.setOnClickListener(new Button.OnClickListener(){

public void onClick(View V){

Intent contact = new Intent();

contact.setClass(MyAndroidActivity.this,Activity1.class);

startActivity(Activity1);

}

});

3.2 傳感信息的采集

傳感器是一種物理裝置,能夠探測(cè)、感受外界的信號(hào)、物理?xiàng)l件(如光、熱、濕度),并將探知的信息傳遞給其他裝置或器官。Android操作系統(tǒng)提供了非常完整的感應(yīng)監(jiān)測(cè)管理功能,對(duì)于開發(fā)手機(jī)傳感器應(yīng)用,使用感應(yīng)檢測(cè)Sensor的API我們主要按照以下四個(gè)開發(fā)步驟來(lái)完成我們所需的各個(gè)傳感器信息獲取功能的實(shí)現(xiàn):

取得SensorManager

使用感應(yīng)檢測(cè)Sensor首先要獲取感應(yīng)設(shè)備的檢測(cè)信號(hào),我們通過(guò)調(diào)用Sensor Manager的方法來(lái)取得感應(yīng)檢測(cè)的服務(wù):

SensorManager manager= (SensorManager)getSystemService(SENSOR_SERVICE);

感應(yīng)檢測(cè)Sensor狀態(tài)的監(jiān)聽功能

其主要依靠實(shí)現(xiàn)下列兩個(gè)SensorEventListener方法來(lái)實(shí)現(xiàn)監(jiān)聽,并取得感應(yīng)檢測(cè)Sensor的狀態(tài):

public void onAccuracyChanged(Sensor sensor, int accuracy);

public void onSensorChanged(SensorEvent event);

onAccuracyChanged()方法在感應(yīng)檢測(cè)到Sensor的精密度有變化時(shí)會(huì)被調(diào)用到,而 onSensorChanged()方法在感應(yīng)檢測(cè)到Sensor的值有變化時(shí)會(huì)被調(diào)用到。

實(shí)現(xiàn)取得感應(yīng)檢測(cè)Sensor目標(biāo)種類的值

實(shí)現(xiàn)下列g(shù)etSensorList()方法來(lái)取得感應(yīng)檢測(cè)Sensor的值:

List sensors = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);

注冊(cè)感應(yīng)檢測(cè)Sensor狀態(tài)的監(jiān)聽功能

已實(shí)現(xiàn)取得感應(yīng)檢測(cè)Sensor狀態(tài)的監(jiān)聽功能,要注冊(cè)到Android系統(tǒng):

Public void registerListener(SensorEventListener listener, Sensor sensors, int rate);

3.3 通話記錄的提取

在這部分的程序中我們要實(shí)現(xiàn)的主要功能是提取手機(jī)的通話記錄,由于手機(jī)中都有可以查詢的通話記錄,因此,我們就可以通過(guò)上面提到的方法,訪問(wèn)相應(yīng)的Content Provider查看通話記錄信息。Android平臺(tái)通話記錄開發(fā)的API主要是android.provider.CallLog.Calls類,該類是CallLog的內(nèi)部類。封裝了通話記錄信息和訪問(wèn)數(shù)據(jù)的URI,URI有:CONTENT_URI和CONTENT_FILTER_URI。CONTENT_URI是一個(gè)通用URI,而CONTENT_FILTER_URI是一個(gè)有條件過(guò)濾功能的URI。在我們的應(yīng)用中將只會(huì)用到前者。

在具體的查詢信息實(shí)現(xiàn)代碼中,我們分析查詢代碼:

String[] columns = { CallLog.Calls.NUMBER, CallLog.Calls.CACHED_NAME,CallLog.Calls.TYPE };

cursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null,

CallLog.Calls.DEFAULT_SORT_ORDER);

發(fā)現(xiàn)這部分代碼中的查詢字段有:CallLog.Calls.NUMBER、CallLog.Calls.CACHED_NAME、和CallLog.Calls.TYPE,這些字段都是在CallLog.calls中定義的,制訂了需要查詢的項(xiàng)目,用戶可以根據(jù)需要增減其中的相關(guān)字段。ManagedQuery()中指定了CallLog.Calls.CONTENT_URI,說(shuō)明指定查詢通話信息,并同時(shí)指定CallLog.Calls.DEFAULT_SORT_ORDER參數(shù)將查詢結(jié)果排序顯示。此外,為了程序能夠正常運(yùn)行,我們還應(yīng)該在完成基本的代碼之后還要為應(yīng)用程序聲明獲取通話記錄信息的權(quán)限。在程序的AndroidManifest.xml文件中的標(biāo)記之前插入權(quán)限聲明:

"

3.4 GPS信息的獲取

通過(guò)調(diào)用LocationManager類的getLastKnowLocation(String provider)方法來(lái)獲取地理位置信息,并不對(duì)其設(shè)置特定的查詢要求,那么,getLastKnowLocation方法傳入?yún)?shù)LocationManager.GPS_PROVIDER。該方法將會(huì)返回一個(gè)封裝了經(jīng)緯度等信息的Location對(duì)象,然后再對(duì)其進(jìn)行解析獲取有用信息。雖然我們通過(guò)這個(gè)調(diào)用獲得了設(shè)備的位置信息和數(shù)據(jù),但調(diào)用LocationManager類的getLastKnowLocation方法只是主動(dòng)的查詢地理位置信息,如果需要在地理位置信息發(fā)生變化后自動(dòng)通知系統(tǒng),還必須為L(zhǎng)ocationManager類添加一個(gè)LocationListener監(jiān)聽器。對(duì)其添加監(jiān)聽器并在其中重寫以上各種方法的部分代碼如下:

LocationListenY4ovnP0hd1/BBl+F2MiSPnR3yFCvZ7LIkeFpIAyTf0k=er ll = new LocationListener (){

public void onLocationChanged(Location location) {//重寫onLocationChanged方法

updateView(location);}

public void onProviderDisabled(String provider) {//重寫onProviderDisabled方法

updateView(null);}

public void onProviderEnabled(String provider) {//重寫onProviderEnabled方法

Location l= lm.getLastKnownLocation(provider);//獲取位置信息

updateView(l); } //更新EditText控件的內(nèi)容

public void onStatusChanged(String provider, int status, Bundle extras) {//重寫onStatusChanged方法

}};

3.5 系統(tǒng)界面

手機(jī)端系統(tǒng)的主要界面如圖4所示。

4 結(jié)論

本文針對(duì)移動(dòng)感知服務(wù)場(chǎng)景下的移動(dòng)感知應(yīng)用,研究和實(shí)現(xiàn)了其中Android平臺(tái)客戶端交互及傳感信息獲取部分,為解決移動(dòng)感知中的相關(guān)問(wèn)題,研究和實(shí)現(xiàn)移動(dòng)感知服務(wù)體系的其它部分提供了幫助奠定了基礎(chǔ)。

參考文獻(xiàn):

[1] International Telecommunication Union UIT.ITU Internet Reports 2005: The Internet of Things [R].2005.

[2] 安健,桂小林.物聯(lián)網(wǎng)移動(dòng)感知中的認(rèn)知模型[J].計(jì)算機(jī)學(xué)報(bào),2012,35(6).

[3] 安健,桂小林.面向物聯(lián)網(wǎng)移動(dòng)感知的服務(wù)節(jié)點(diǎn)發(fā)現(xiàn)算法[J].西安交通大學(xué)學(xué)報(bào),2011,45(12).

[4] 張仕成.基于Google Android平臺(tái)的應(yīng)用程序開發(fā)與研究[J].電腦知識(shí)與技術(shù),2009,5(28).

[5] 趙亮,張維.基于Android技術(shù)的界面設(shè)計(jì)與研究[J].電腦知識(shí)與技術(shù),2009,5(29).

[6] WOLF W. Cyber-physical Systems [J].Computer, 2009,42(3):88-89.

凤冈县| 甘肃省| 中阳县| 政和县| 鄂州市| 营口市| 扎兰屯市| 阿坝县| 静乐县| 墨竹工卡县| 乡城县| 甘南县| 南部县| 北京市| 柘荣县| 从江县| 富蕴县| 泰兴市| 抚远县| 井冈山市| 高州市| 武宁县| 杭锦旗| 营口市| 灵寿县| 兴仁县| 德清县| 定西市| 丽江市| 南昌市| 延川县| 喀喇沁旗| 陕西省| 嫩江县| 临西县| 瑞安市| 崇左市| 阳高县| 盘锦市| 海兴县| 墨竹工卡县|