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

?

一個(gè)為Web2.0網(wǎng)站增加多模態(tài)輸入Android應(yīng)用設(shè)計(jì)與實(shí)現(xiàn)

2016-01-05 13:01:15王麗娟王妍
電腦知識(shí)與技術(shù) 2015年29期
關(guān)鍵詞:應(yīng)用軟件多模態(tài)智能手機(jī)

王麗娟++王妍

摘要:用戶在傳統(tǒng)的Web 2.0網(wǎng)站上主要通過手工方式輸入和搜索各類信息。隨著智能手機(jī)等移動(dòng)設(shè)備的普及,以及智能手機(jī)所提供的傳感器數(shù)量和種類的增加,以多模態(tài)方式輸入和搜索信息成為可能。設(shè)計(jì)并實(shí)現(xiàn)一個(gè)移動(dòng)應(yīng)用程序,為傳統(tǒng)的Web 2.0網(wǎng)站增加多模態(tài)輸入功能。以豆瓣網(wǎng)(www.douban.com)和大眾點(diǎn)評(píng)網(wǎng)(www.dianping.com)為例,程序應(yīng)能夠:通過手機(jī)掃描圖書條形碼,來搜索圖書信息,并記錄于用戶的豆瓣賬號(hào)內(nèi);通過“搖一搖”功能搜索正在播放的音樂,并記錄于用戶的豆瓣賬號(hào)內(nèi);通過GPS定位功能搜索周邊商戶,并在用戶的大眾點(diǎn)評(píng)賬號(hào)中進(jìn)行簽到。

關(guān)鍵詞:Android;智能手機(jī);應(yīng)用軟件;多模態(tài)

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)29-0072-03

在智能手機(jī)的時(shí)代,在網(wǎng)絡(luò)全球化的今天,手機(jī)儼然成為個(gè)人的“超級(jí)計(jì)算機(jī)”,深入生活的方方面面,人們?cè)絹碓诫x不開智能手機(jī)。其中Android系統(tǒng)的迅猛發(fā)展,一定程度上加快了智能手機(jī)的普及速度。移動(dòng)設(shè)備的普及,以及智能手機(jī)所提供的傳感器種類和數(shù)量的增加,使通過移動(dòng)終端以多種方式輸入、記錄和搜索信息成為可能。

基于以上原因,本文提出的“為Web2.0網(wǎng)站增加多模態(tài)輸入的Android應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)”這一設(shè)想,是設(shè)計(jì)一個(gè)利用手機(jī)提供的多種傳感器實(shí)現(xiàn)以多種方式輸入、記錄和搜索信息的Android應(yīng)用。進(jìn)入信息時(shí)代以來,越來越多的信息涌入人們的生活,方便快捷的搜索、獲取和整理信息顯得尤為重要,因此本設(shè)計(jì)在日常生活中將有著不錯(cuò)的實(shí)用性。

1 功能需求分析

本軟件是一個(gè)Android應(yīng)用程序,可以通過手機(jī)所具備的各種傳感器記錄和搜索用戶一天的各種活動(dòng),使用戶通過手機(jī)與Web 2.0網(wǎng)站的交互更為方便快捷。軟件的基本功能需求如下:

記錄文字圖片功能,用戶可以通過App記錄文字、照片,保存文本信息和時(shí)間,編輯和管理文本信息,并且可以導(dǎo)出所記錄的文字信息,以txt純文本格式保存。圖片可以通過相機(jī)獲取,也可以添加本地圖片。

掃描圖書功能,用戶可以通過手機(jī)的攝像頭掃描書籍的條形碼,App會(huì)返回豆瓣網(wǎng)(www.douban.com)API所查找到的書籍信息。如果擁有豆瓣賬戶則可以登錄,并收藏此書籍。用戶也可以輸入自己的信息生成二維碼供其他用戶掃描,使信息分享更為快捷。

查找餐廳簽到功能,在用戶打開GPS的情況下,App會(huì)通過大眾點(diǎn)評(píng)網(wǎng)(www.dianping.com)API返回當(dāng)前位置最近的餐廳信息,用戶簽到后,App會(huì)保存相關(guān)信息到手機(jī)中。如果用戶手機(jī)中已經(jīng)安裝大眾點(diǎn)評(píng)的App,則可以瀏覽更加詳細(xì)的信息

2 系統(tǒng)開發(fā)環(huán)境

本設(shè)計(jì)開發(fā)工具為Eclipse Java EE IDE for Web Developers,版本: Kepler Service Release 2。 SDK(軟件開發(fā)工具包)版本為22.6.2。

3 系統(tǒng)設(shè)計(jì)

3.1系統(tǒng)整體設(shè)計(jì)

根據(jù)系統(tǒng)需求分析可知,軟件共有三個(gè)功能模塊:文字圖片模塊、掃描圖書模塊、餐廳簽到模塊。系統(tǒng)和用戶交互時(shí)需要直觀的圖形化界面,所以本項(xiàng)目共需要7個(gè)用戶界面類,分別是MainActivity(軟件主界面)、BWActivity(文字圖片模塊主界面)、BWNewActivity(文字圖片模塊輸入界面)、Book(掃描圖書功能主界面)、Book_view(掃描圖書結(jié)果顯示界面)、Main_Location(餐廳簽到功能主界面)、Findbusiness(餐廳簽到信息顯示界面)。

4功能實(shí)現(xiàn)

本文主要針對(duì)餐廳簽到功能模塊設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行詳細(xì)說明。餐廳簽到功能流程圖見圖1。

餐廳簽到功能模塊主要分為三個(gè)部分,調(diào)用GPS獲取當(dāng)前位置信息,根據(jù)位置參數(shù)通過大眾點(diǎn)評(píng)API獲取當(dāng)前位置餐廳信息,建立簽到數(shù)據(jù)庫。主要文件見表1。

表1 餐廳簽到功能主要文件說明

[文件名\&說明\&Main_location.java\&主界面activity\& Findbusiness.java\&API連接、簽到activity\&Main_location.xml\&主界面布局文件\&Findbusiness.xml\&結(jié)果顯示頁面布局文件\&Db.xml\&數(shù)據(jù)庫列表顯示布局文件\&]

圖1 餐廳簽到功能流程圖

Android為使用GPS功能支持專門提供了一個(gè)LocationManger類,所有GPS定位相關(guān)的服務(wù)、對(duì)象都將由該對(duì)象產(chǎn)生。程序并不能直接創(chuàng)建LocationManger的實(shí)例,而是通過調(diào)用Context的getSystemService()方法來獲取。首先AndroidManifest.xml文件中配置GPS和網(wǎng)絡(luò)使用權(quán)限,代碼如下:

LocationManager類調(diào)用getSystemService(Context.LOCATION_SERVICE)獲取系統(tǒng)GPS服務(wù),新建Location類調(diào)用locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)獲得最后更新的GPS信息,最后調(diào)用location.getLatitude(),location.getLongtitude()方法分別獲得經(jīng)緯度信息。

得到String類型的經(jīng)度緯度參數(shù)后傳到Findbusiness.java,F(xiàn)indbusiness.java這個(gè)Activity主要負(fù)責(zé)與大眾點(diǎn)評(píng)API的連接及餐廳信息的搜索。使用大眾點(diǎn)評(píng)API需要申請(qǐng)APIkey與密鑰,目前只是測(cè)試用,所以返回的是測(cè)試數(shù)據(jù)。APIurl:http://api.dianping.com/v1/business/find_businesses 請(qǐng)求方法為HTTP GET,請(qǐng)求參數(shù)說明見表2。

表2 請(qǐng)求參數(shù)表

[參數(shù)\&必選/可選\&描述\&Format=json\&必選\&數(shù)據(jù)格式為json\&Latitude=x\&必選\&經(jīng)度信息\&Longitude=y\&必選\&緯度信息\&Category=美食\&必選\&信息分類\&Limit=5\&必選\&返回?cái)?shù)量\&Radius=2000\&必選\&搜索半徑\&offset_type=0\&必選\&偏移類型未偏移\&Sort=7\&必選\&結(jié)果排序:離傳入經(jīng)緯度坐標(biāo)距離近優(yōu)先\&]

對(duì)APIkey、密鑰與參數(shù)進(jìn)行字符串連接,根據(jù)密鑰和appkey生成簽名訪問鏈接,主要代碼如下:

private URL codecParams(String codes) throws MalformedURLException, UnsupportedEncodingException {

String sign = DigestUtils.shaHex(codes).toUpperCase();

StringBuilder sb = new StringBuilder();

sb.append("appkey=").append(appkey).append("&sign=").append(sign);

for (java.util.Map.Entry entry : paramMap.entrySet()) {

sb.append('&').append(entry.getKey()).append('=').append

(URLEncoder.encode(entry.getValue(), "utf-8"));// entry.getValue());

}

String requestUrl = apiUrl + "?" + sb.toString();

URLEncoder.encode(( sb.toString()), "UTF-8");

Log.d(TAG, "after sign the url is " + requestUrl);

return new URL(requestUrl);// requestUrl);

}

連接字符串生成鏈接后,使用HTTP GET方式請(qǐng)求數(shù)據(jù),具體代碼如下:

URL url = codecParams(codes);

System.out.println("the access network url is " + url.toString());

urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setReadTimeout(10000 /* milliseconds */);

urlConnection.setConnectTimeout(15000 /* milliseconds */);

urlConnection.setRequestMethod("GET");

urlConnection.connect();

int response = urlConnection.getResponseCode();

inputStream = urlConnection.getInputStream();

readStream(inputStream);

得到的數(shù)據(jù)是JSON格式,需要進(jìn)行JSON數(shù)據(jù)解析。JSON的全稱是Javascript Object Notation,即Javascript對(duì)象符號(hào),它是一種輕量級(jí)的數(shù)據(jù)交換格式。JSON的數(shù)據(jù)格式既適合人來讀寫,也適合計(jì)算機(jī)本事解析和生成。非常方便的是Android系統(tǒng)內(nèi)置了對(duì)JSON的支持,在Android SDK 的org.JSON包下提供了JSONArray、JSONObject、JSONStringer等類,通過這些類即可非常方便的完成JSON字符串與JSONArray,JSONObject之間的相互轉(zhuǎn)換。因?yàn)槭菍?shí)現(xiàn)簽到功能所以這里省去了許多無關(guān)信息,只解析名字、時(shí)間等必要內(nèi)容。解析過程代碼如下:

String strResult = value;

JSONObject jsonObject=new JSONObject(strResult);

JSONArray jsonArray = jsonObject.getJSONArray("businesses");

JSONObject item = jsonArray.getJSONObject(0);

String name = item.getString("name");

Message msg = new Message();

msg.what = CODE;

msg.obj = name;

handler.sendMessage(msg);

解析完成后,轉(zhuǎn)換為字符串類型調(diào)用setText()方法顯示。由于應(yīng)用沒有經(jīng)過審核所以返回的是測(cè)試數(shù)據(jù)。

得到上述信息后,就可以插入簽到數(shù)據(jù)庫了。點(diǎn)擊右上角簽到按鈕,將textview的內(nèi)容傳到Findbusiness.java。本模塊使用sqlite數(shù)據(jù)庫。加載Findbusiness.xml頁面布局,在簽到按鈕的監(jiān)聽器內(nèi)使用execSQL方法直接寫入SQL語句,創(chuàng)建表結(jié)構(gòu),代碼如下。

db.execSQL("create table qiandao(_id integer"

+ " primary key autoincrement,"

+ " name varchar(255),"

+ " time varchar(255))");

private void insertData(SQLiteDatabase db, String content,String time )

{

db.execSQL("insert into qiandao values(null , ?, ? )"

, new String[] { name, time });

}

在簽到按鈕監(jiān)聽器內(nèi)調(diào)用插入方法執(zhí)行insert語句插入數(shù)據(jù)。insertData(db, name,time);

簽到后將已經(jīng)簽到過的餐廳顯示到頁面上,使用rawQuery()方法直接寫入SQL查詢語句,返回得到Cursor結(jié)果集。將結(jié)果以列表的形式顯示到頁面上,需要使用CursorAdapter(Cursor結(jié)果集數(shù)據(jù)適配器)填充列表,在findbusiness.xml內(nèi)添加listview,同時(shí)新建DB.xml添加倆個(gè)textview作為L(zhǎng)istView中的每一列的View用于填充數(shù)據(jù),實(shí)現(xiàn)代碼如下:

Cursor cursor = db.rawQuery("select * from qiandao", null);

inflateList(cursor);

private void inflateList(Cursor cursor)

{

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

MainApp.this,

R.layout.db, cursor,

new String[] { "name", "time" }

, new int[] {R.id.title, R.id.content },

CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

listView.setAdapter(adapter);}

5 小結(jié)

餐廳簽到功能實(shí)現(xiàn)了對(duì)于系統(tǒng)GPS服務(wù)的調(diào)用,獲取當(dāng)前位置信息,實(shí)現(xiàn)了大眾點(diǎn)評(píng)API的連接、調(diào)用。整個(gè)系統(tǒng)滿足了需求分析中的得到的功能性需求。

參考文獻(xiàn):

[1] 李剛. 瘋狂Android講義[M].北京:電子工業(yè)出版社,2014.

[2] 邁耶,佘建偉,趙凱.Android 4 高級(jí)編程[M].北京:清華大學(xué)出版社,2013.

[3] 李寧.Android開發(fā)權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2011.

[4] 時(shí)貞軍.基于SQLite的Android數(shù)據(jù)庫編程[J].電腦編程技巧與維護(hù),2011(21):30-31.

[5] 徐尤華.Android移動(dòng)優(yōu)化策略[J].計(jì)算機(jī)時(shí)代,2011,2(12):23-24.

[6] 佘志龍.Android SDK 開發(fā)范例大全[M].北京:人民郵電出版社,2011.

[7] Narayan Babu.Android application development skills[J].IT TIME WEEKLY,2012,6(8):55-58.

[8] Android API[EB/OL].http://Androidappdocs.appspot.com/index.html.2013-04-10.

[9] Srowen.ZXing docs[EB/OL].http://code.google.com/p/zxing.html, 2013.

[10] Bruce Eckle.Think in Java 2nd Edition[M].london:Prentice Hall,2000.

猜你喜歡
應(yīng)用軟件多模態(tài)智能手機(jī)
智能手機(jī)是座礦
智能手機(jī)臉
英語文摘(2020年5期)2020-09-21 09:26:30
假如我是一部智能手機(jī)
趣味(語文)(2018年8期)2018-11-15 08:53:00
網(wǎng)絡(luò)環(huán)境下大學(xué)英語多模態(tài)交互式閱讀教學(xué)模式研究
戲劇之家(2016年22期)2016-11-30 18:20:43
從移動(dòng)互聯(lián)網(wǎng)應(yīng)用軟件的發(fā)展論出臺(tái)《信息安全保護(hù)法》必要性
一種基于手機(jī)應(yīng)用軟件測(cè)量聲速的方法
科技視界(2016年25期)2016-11-25 09:21:58
多模態(tài)理論視角下大學(xué)英語課堂的構(gòu)建
基于WebService的自助打印系統(tǒng)的設(shè)計(jì)與應(yīng)用
新媒體環(huán)境下多模態(tài)商務(wù)英語課堂教師角色定位
社保應(yīng)用軟件維護(hù)的相關(guān)探討
万安县| 双江| 梧州市| 射阳县| 庆元县| 顺义区| 安顺市| 台南市| 定州市| 云南省| 莲花县| 梁平县| 盐池县| 乐陵市| 辛集市| 武夷山市| 安达市| 梁平县| 瑞丽市| 华亭县| 佳木斯市| 定襄县| 兴和县| 辽中县| 滕州市| 修文县| 眉山市| 微山县| 曲周县| 太和县| 霍城县| 云安县| 铜山县| 乐昌市| 上杭县| 乌苏市| 长岛县| 呈贡县| 仁寿县| 潜江市| 宁远县|