張思進(jìn) 李佳 莫偉健



DOI:10.16661/j.cnki.1672-3791.2109-5042-3943
摘? 要:隨著互聯(lián)網(wǎng)技術(shù)飛速發(fā)展,在此基礎(chǔ)上的旅游業(yè)也出現(xiàn)了許多新模式,暢游之家App提供個(gè)性化的定制平臺(tái),普通大眾能夠有效地控制價(jià)格,簡(jiǎn)單的“套餐式”旅游服務(wù)專門為沒(méi)有做攻略的用戶提供適合自身的旅游線路,該App采用Android Studio在Windows平臺(tái)上基于Android 6.0操作系統(tǒng)以及SQLite、JDK 8集成環(huán)境使用面向?qū)ο蟮恼Z(yǔ)言Java編譯語(yǔ)言,最終由主頁(yè)、定制、行程這3個(gè)主界面功能模塊以及登錄注冊(cè)界面功能模塊構(gòu)成。該App界面整潔,使用起來(lái)簡(jiǎn)單方便。
關(guān)鍵詞:定制旅游? ?Android? App? ?Android Studio? ?SQLite
中圖分類號(hào): TP311.56? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-3791(2021)09(a)-0017-06
Changyouzhijia App Development Based on Android
ZHANG Sijin? ?LI Jia*? ? MO Weijian
(Guangzhou Xinhua University, Dongguan, Guangdong Province, 523133 China)
Abstract: With the rapid development of Internet technology, many new models have emerged in the tourism industry on this basis. Changyouzhijia App provides a personalized customized platform, and the ordinary people can effectively control prices. The simple "package" tourism service provides suitable tourism routes for users who do not have strategies. This App uses Android Studio on the Windows platform based on the Android 6.0 operating system and the SQLite and JDK 8 integrated environment. It uses the object-oriented language java to compile the language, and finally composed of three main interface function modules: home page, customization and travel, as well as login and registration interface function modules. The App interface is neat and easy to use.
Key Words: Customized tourism; Android; App; Android Studio; SQLite
隨著疫情的緩和,越來(lái)越多的人選擇了出門旅游,同時(shí)隨著旅游需求的大眾化、普遍化和多樣化,旅游消費(fèi)結(jié)構(gòu)、產(chǎn)品結(jié)構(gòu)也正在發(fā)生重大變化[1-2],細(xì)致入微的觀光、感悟體驗(yàn)、休閑度假等旅游消費(fèi)和產(chǎn)品供給都在快速增長(zhǎng)。“全域旅游”“大旅游時(shí)代”等概念的提出[3],推動(dòng)“攜程”“小紅書”等各種基于移動(dòng)終端的文化旅游開放平臺(tái)迅速崛起。旅游者們?cè)诮K端平臺(tái)訂票、訂酒店、查路線、查攻略,為旅游者們帶來(lái)了極大的便利[3]。而該App將以上兩款軟件很好地結(jié)合并實(shí)現(xiàn)“攻略路線+訂票”。
該軟件使用的技術(shù)有面向?qū)ο蟮腏ava語(yǔ)言編程、SQLite、SQLiteOpenHelper、Android SDK、UI框架。
1? 程序功能設(shè)計(jì)
1.1 程序介紹
該軟件設(shè)計(jì)將Android studio作為開發(fā)平臺(tái),各部分內(nèi)容使用Android SDK,每個(gè)界面設(shè)計(jì)使用UI框架在layout的xml文件內(nèi),Java作為后臺(tái)開發(fā)語(yǔ)言,使用SQLiteOpenHelper技術(shù)連接Android studio中自帶的SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ),結(jié)合百度地圖的API接口進(jìn)行開發(fā)。該App由賬號(hào)模塊、側(cè)滑頁(yè)面模塊、主頁(yè)推送模塊、定制模塊以及行程模塊組成,實(shí)現(xiàn)登錄、注冊(cè)賬號(hào)、找回密碼、用戶詳細(xì)信息、檢索用戶搜索的城市和預(yù)算進(jìn)行路線的生成、將生成的路線用百度地圖顯示出來(lái)等功能。具體功能如圖1所示,源代碼結(jié)構(gòu)如圖2所示。
1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
該軟件使用Android studio內(nèi)嵌的SQLite數(shù)據(jù)庫(kù)進(jìn)行用戶賬號(hào)密碼以及定制界面數(shù)據(jù)的存儲(chǔ),用戶可以對(duì)自己的賬號(hào)可以進(jìn)行增、改操作,定制界面將會(huì)在數(shù)據(jù)庫(kù)中錄入已有的數(shù)據(jù),用戶對(duì)城市名字進(jìn)行檢索時(shí)會(huì)調(diào)用數(shù)據(jù)庫(kù)里對(duì)于的城市并將該城市的旅游路線顯示出來(lái),相當(dāng)于用戶對(duì)數(shù)據(jù)庫(kù)的查詢操作。該模塊的部分?jǐn)?shù)據(jù)庫(kù)創(chuàng)建代碼如下。
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
// TODO Auto-generated method stub
String sql = "create table user(id integer primary key autoincrement,name varchar(20),password varchar(20),sex varchar(2),hobby varchar(20),birth varchar(20),city varchar(20))";
sqLiteDatabase.execSQL(sql);
}
public void addData(SQLiteDatabase sqLiteDatabase,String name,String password,String sex,String hobby,String birth,String city){
ContentValues values = new ContentValues();
values.put("name", name);
values.put("password", password);
values.put("sex", sex);
values.put("hobby", hobby);
values.put("birth", birth);
values.put("city", city);
sqLiteDatabase.insert("user", null, values);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
2? 界面功能實(shí)現(xiàn)
2.1 登錄界面
用戶登錄注冊(cè)是每個(gè)軟件必不可少的一部分[5],該界面使用一層嵌套LinearLayout,外部為整個(gè)界面框架,內(nèi)部則為按鈕的布局,界面設(shè)計(jì)見(jiàn)圖3,用戶的注冊(cè)后會(huì)將數(shù)據(jù)存入SQLite內(nèi),注冊(cè)界面見(jiàn)圖4,方便用戶再次使用[5-6],在Java文件內(nèi)編寫功能邏輯且設(shè)置用戶輸入時(shí)為不為空,若輸入為空或者用戶名、密碼不正確時(shí)用Tosat()方法分別彈出“不能輸入為空”“用戶名不正確”“密碼不正確”的信息提醒用戶重新對(duì)其進(jìn)行輸入,輸入用戶名、密碼都正確時(shí)點(diǎn)擊登錄時(shí)會(huì)彈出“登錄成功”并跳轉(zhuǎn)到activity_main界面。由此實(shí)現(xiàn)該界面的登錄注冊(cè)功能。
2.2 主頁(yè)界面
在側(cè)滑界面放置主要的功能按鈕,點(diǎn)擊對(duì)應(yīng)的按鈕則跳轉(zhuǎn)到對(duì)應(yīng)的功能界面[7],具體情況見(jiàn)圖5,點(diǎn)擊主頁(yè)按鈕跳轉(zhuǎn)到主頁(yè)界面,主頁(yè)界面見(jiàn)圖6,主頁(yè)界面主要框架用LinearLayout布局,由于LinearLayout所需要的數(shù)據(jù)較少,可直接采用靜態(tài)加載數(shù)據(jù)[4],在設(shè)置子控件屬性的時(shí)候,用ImageView和TestView給予用戶瀏覽當(dāng)前最熱門的地方和其他用戶發(fā)表的攻略路線。在Java文件中使用GridLayoutManager里的setSpanSizeLookup方法點(diǎn)擊其中一個(gè)內(nèi)容,則會(huì)跳轉(zhuǎn)到相關(guān)activity界面進(jìn)行介紹。
2.3 定制界面
在側(cè)滑界面點(diǎn)擊定制,則會(huì)跳轉(zhuǎn)到定制的第一個(gè)界面,TextInputLayout控件會(huì)提示用戶輸入一個(gè)的城市和所需要的經(jīng)濟(jì)預(yù)算,具體情況見(jiàn)圖7,點(diǎn)擊搜索后會(huì)連接SQLite數(shù)據(jù)庫(kù),用戶在需要獲取該類的對(duì)象時(shí),需要自定義類繼承自SQLiteOpenHelper類,并實(shí)現(xiàn)其中的onCreate(SQLiteDatabase)onUpgrade(SQLiteDatabase,int,int)方法,可以選擇性地實(shí)現(xiàn) onOpen(SQLiteDatabase)。這個(gè)類會(huì)自動(dòng)幫助用戶在需要時(shí)打開數(shù)據(jù)庫(kù),在不存在時(shí)創(chuàng)建數(shù)據(jù)庫(kù),在必要時(shí)更新數(shù)據(jù)庫(kù)。已有的城市信息和經(jīng)濟(jì)預(yù)算相結(jié)合相當(dāng)于數(shù)據(jù)庫(kù)的條件查詢語(yǔ)句,條件為城市和經(jīng)濟(jì)預(yù)算,查詢成功后會(huì)跳轉(zhuǎn)到第二個(gè)定制界面顯示出相關(guān)信息如圖8所示,該界面上方有3個(gè)分欄分別為:攻略計(jì)劃、機(jī)票預(yù)訂、酒店預(yù)訂,在xml文件主要用RelativeLayout布局,在Java文件編寫SlidePagerAdapter.java適配器,Adapter是連接后端數(shù)據(jù)和前端顯示的適配器接口,是數(shù)據(jù)和UI(View)之間一個(gè)重要的紐帶[8]。機(jī)票預(yù)訂和酒店預(yù)訂的信息填寫后數(shù)據(jù)會(huì)分別儲(chǔ)存在SQLite的PlaneBook表和HotelBook表中。
2.4 行程界面
行程界面相當(dāng)于一個(gè)導(dǎo)航,用戶輸入一個(gè)地方會(huì)出現(xiàn)該地方的特色景點(diǎn),具體情況見(jiàn)圖9,點(diǎn)擊則會(huì)出現(xiàn)該地方的詳細(xì)介紹,具體情況見(jiàn)圖10,該界面的實(shí)現(xiàn)首先是百度地圖API的獲取訪問(wèn)網(wǎng)站,便可進(jìn)行獲取相應(yīng)的產(chǎn)品以及下載相關(guān)SDK和申請(qǐng)key、SHA1等信息,在Android Studio創(chuàng)建應(yīng)用,使用已有的功能清單文件所需權(quán)限,使用BaiduMap.OnMapClickListener地圖單擊事件監(jiān)聽(tīng)接口,首先在布局文件添加mapview,接著在Java文件的MainActivity文件里面添加使用即可實(shí)現(xiàn)地圖點(diǎn)擊呈現(xiàn)詳細(xì)信息。
3? 系統(tǒng)調(diào)試
3.1 SQLite數(shù)據(jù)庫(kù)調(diào)試
使用DOS窗口并且運(yùn)用數(shù)據(jù)庫(kù)查詢語(yǔ)句查詢所有表查看是否創(chuàng)建成功,具體情況見(jiàn)圖11。
3.2 百度地圖API調(diào)試
在AndroidManifest.xml中加入相對(duì)應(yīng)的權(quán)限xml文件,在百度開發(fā)平臺(tái)上就能看到用戶使用的次數(shù)等信息,具體情況見(jiàn)圖12。
4? 結(jié)語(yǔ)
該文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Android的定制游App,當(dāng)前疫情的影響讓很多人在去旅行前沒(méi)有很好地進(jìn)行規(guī)劃,開發(fā)暢游之家App能夠讓更多的人真正體會(huì)到旅游是在享受,而不是在浪費(fèi)時(shí)間和金錢,從而達(dá)到時(shí)間不浪費(fèi),金錢不白花的目的。
參考文獻(xiàn)
[1] 印偉.旅游度假區(qū)的地方行政立法研究[J].中南林業(yè)科技大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,2016,10(6):89-92.
[2] JIA Z Y,LI D,HE F Z.Analysis and Reviews on Tourism and Travel Mobile Apps of China[C]//6th International Conference on EMCM,2016:62-66.
[3] 江中宇,常峻溪,朱繼軍,等.基于軟件定義網(wǎng)絡(luò)的流量工程[J].科技創(chuàng)新導(dǎo)報(bào),2020,17(20):117-119.
[4] 張清.基于Android的個(gè)人健康助理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息與電腦:理論版,2021,33(6):103-105.
[5] 竇海娥,王永虎,楊廣紅.基于移動(dòng)終端的旅游集散地App界面設(shè)計(jì)[J].設(shè)計(jì),2018(20):134-136.
[6] 青幼蕾,譚妙,童強(qiáng),等.基于Android的旅游服務(wù)App開發(fā)[J].電子測(cè)試,2021(4):56-58,92.
[7] 葛凱,馬馳,陳威,等.基于PLC的周拋機(jī)的控制系統(tǒng)[J].建材世界,2021,42(1):4.
[8] 李國(guó)梁.基于移動(dòng)終端的林業(yè)巡護(hù)系統(tǒng)研究與實(shí)現(xiàn)[D].西安:西安理工大學(xué),2016:55.