• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2016-01-05 13:01王麗娟王妍
      電腦知識與技術 2015年29期
      關鍵詞:應用軟件多模態(tài)智能手機

      王麗娟++王妍

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

      關鍵詞:Android;智能手機;應用軟件;多模態(tài)

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)29-0072-03

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

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

      1 功能需求分析

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

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

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

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

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

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

      3 系統(tǒng)設計

      3.1系統(tǒng)整體設計

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

      4功能實現(xiàn)

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

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

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

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

      圖1 餐廳簽到功能流程圖

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

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

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

      表2 請求參數(shù)表

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

      對APIkey、密鑰與參數(shù)進行字符串連接,根據(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方式請求數(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格式,需要進行JSON數(shù)據(jù)解析。JSON的全稱是Javascript Object Notation,即Javascript對象符號,它是一種輕量級的數(shù)據(jù)交換格式。JSON的數(shù)據(jù)格式既適合人來讀寫,也適合計算機本事解析和生成。非常方便的是Android系統(tǒng)內置了對JSON的支持,在Android SDK 的org.JSON包下提供了JSONArray、JSONObject、JSONStringer等類,通過這些類即可非常方便的完成JSON字符串與JSONArray,JSONObject之間的相互轉換。因為是實現(xiàn)簽到功能所以這里省去了許多無關信息,只解析名字、時間等必要內容。解析過程代碼如下:

      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);

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

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

      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)聽器內調用插入方法執(zhí)行insert語句插入數(shù)據(jù)。insertData(db, name,time);

      簽到后將已經(jīng)簽到過的餐廳顯示到頁面上,使用rawQuery()方法直接寫入SQL查詢語句,返回得到Cursor結果集。將結果以列表的形式顯示到頁面上,需要使用CursorAdapter(Cursor結果集數(shù)據(jù)適配器)填充列表,在findbusiness.xml內添加listview,同時新建DB.xml添加倆個textview作為ListView中的每一列的View用于填充數(shù)據(jù),實現(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 小結

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

      參考文獻:

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

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

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

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

      [5] 徐尤華.Android移動優(yōu)化策略[J].計算機時代,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.

      猜你喜歡
      應用軟件多模態(tài)智能手機
      假如我是一部智能手機
      多模態(tài)理論視角下大學英語課堂的構建
      新媒體環(huán)境下多模態(tài)商務英語課堂教師角色定位
      智能手機如何讓我們變得低能
      临西县| 奈曼旗| 英山县| 深州市| 宜君县| 措美县| 肥城市| 阳高县| 天峻县| 永康市| 辽阳市| 华坪县| 金乡县| 古交市| 信丰县| 车险| 临安市| 崇信县| 拜城县| 泽州县| 临夏县| 东方市| 双柏县| 黔西县| 黄龙县| 镇安县| 个旧市| 三门县| 富源县| 石景山区| 大关县| 沙坪坝区| 涿州市| 恭城| 晋州市| 磴口县| 沙雅县| 昆山市| 平利县| 孝昌县| 和林格尔县|