沈旭 賴淳 孟巍
摘 要:隨著經濟文化發展水平的不斷提高,生活節奏不斷加快,人們需要適合自己的娛樂方式釋放壓力。卡拉OK是一種深受大眾喜愛的娛樂方式,為了使人們方便快捷的通過手機K歌放松,設計開發了K歌應用APP。APP基于Android平臺,采用Java編程語言設計開發、MySQL數據庫存儲數據,APP具有使用方便快捷、運行穩定可靠的特點,達到了設計目標。
關鍵詞:Android;MySQL;K歌APP
中圖分類號:TP311.56 文獻標識碼:A 文章編號:2096-4706(2019)02-0001-05
Abstract:With the continuous improvement of economic and cultural development level,the pace of life continues to accelerate,people need to adapt to their own way of entertainment to release pressure. Karaoke is a popular way of entertainment. In order to make people relax quickly and conveniently through the mobile phone K song,the design and development of K song application APP. The APP is based on Android platform,using Java programming language design and development,MySQL database storage data,APP is easy to use,running stable and reliable features,to achieve the design goals.
Keywords:Android;MySQL;Karaoke APP
0 引 言
1945年,計算機的問世標志著社會進入了一個新的時代,隨著時間推移,計算機技術在飛速發展,伴隨而來的物聯網開始改變人們的生活常態。如今,計算機與互聯網覆蓋了生活中的方方面面。
隨著智能手機技術的不斷成熟,移動互聯網時代正式到來,所有用戶可以通過手機、平板獲得互聯網信息,智能手機因此也成為了標志性的客戶端工具。智能手機使我們的生活發生了巨大變化。Android系統和iOS智能手機操作系統占據了全球的大部分市場,但是由于Android系統的開源性,得到了除蘋果公司之外幾乎所有手機廠商的使用。自然而然,性價比高的Android手機成為大部分人的首選[1]。
因此,K歌應用APP開發,選擇基于Android系統進行開發,讓用戶通過安卓手機可使用K歌娛樂、溝通交流等功能。
1 系統分析
1.1 系統需求分析
1.1.1 系統技術需求
基于Android的K歌應用APP使用的是現在應用最廣泛的的Android開發框架,開發模式比較成熟,設計模式多樣化,開源性的Android能使手機技術緊跟時代科技的潮流步伐,手機自帶的數據庫對數據進行操作的管理,提高了數據庫的可靠性和穩定性[2]。
1.1.2 系統安全需求
用戶要想進入K歌應用APP,首先需要進入登錄系統,未登錄用戶不可查看系統任何信息和數據,確保系統的安全可靠性、準確性以及數據完整性[3]。
1.1.3 系統界面需求
(1)界面簡潔。為了滿足用戶使用時高效率、低出錯率等要求,在系統用戶界面的設計上要求簡潔清晰明了。用戶在使用軟件的時候,簡潔便捷的功能選擇模塊,讓用戶對系統的功能一目了然,通過選擇功能模塊實現用戶功能需求[4,5]。
(2)層次清晰。所有用戶在第一次打開應用時,看到簡潔明了的應用主界面,為用戶展示應用各個功能模塊。用戶界面劃分成多個條目,點擊相應條目可進入對應的數據處理界面,所以清晰的系統層次使用戶更容易熟悉APP的使用。
1.2 系統功能分析
K歌應用APP主要實現用戶注冊、登錄、歌單、關注、我的等功能,用戶用例圖,如圖1:
1.3 系統流程分析
1.3.1 登錄流程
所有用戶在進入系統之前,首先必須登錄;同時,管理員要想進入后臺管理系統,進行管理等操作,也需要先登錄,登錄流程圖,如圖2:
1.3.2 注冊流程
尚未有賬號的用戶,可通過注冊操作進行注冊,注冊流程圖,如圖3:
2 系統設計
2.1 系統功能結構設計
在課題的需求分析階段,已經對系統將要做成什么樣有了基本的思路和框架。對于一個實際的開發項目,需要通過需求說明書把需求進行描述。繼而要做的工作就是將系統做什么的邏輯模型進一步轉換為怎么做的物理模型,即著手去實現系統的需求,并將設計的結果反映在設計說明書文檔中[6,7]。K歌應用APP系統功能結構如圖4所示:
2.2 數據庫設計
數據庫是計算機信息系統的基礎,信息的收集、整理、存儲、檢索、更新、加工、統計和傳播等操作必須在數據庫管理系統的支持下才能進行[8,9]。目前,計算機系統的關鍵以及核心部分就是數據庫,數據庫開發的優劣直接影響整個系統的質量和速度。數據庫設計由幾個關鍵步驟組成:分析需求、設計概念、設計邏輯和設計物理。
2.2.1 E-R圖設計
E-R圖是一種描述顯示數據類型間關系的數據描述方法,E-R圖可以完整地映射出現實模型的關系[10]。
(1)用戶實體圖。如圖5:
(2)關注實體圖。如圖6:
(3)評論信息實體圖。如圖7:
(4)歌曲信息實體圖。如圖8:
2.2.2 數據庫表設計
本基于Android的K歌應用采用MySQL數據庫進行數據的儲存,歌曲信息表設計見表1:
3 系統實現
3.1 注冊登錄模塊
未有賬號用戶在打開程序的時候,首先要進入注冊界面實行賬戶的注冊,注冊時需要:用戶名、密碼,注冊成功后,可進入登錄界面,然后再進行登錄操作,用戶注冊登錄界面,如圖9:
用戶填寫賬號和密碼之后,點擊登陸按鈕,系統會通過OkHttp進行聯網,發送登錄請求,具體實現代碼如下:
OkHttpTools.sendPost(mContext,ApiManager.LOGIN)
.addParams("name",user)
.addParams("pwd",pwd)
.build()
.execute(new BaseCallBack
@Override
public void onResponse(UserObjBeanuserObjBean) {
SpUtils.setUserBean(mContext,userObjBean.getData());
MyApplication.getInstance().setUserBean(user ObjBean.getData());
startActivity(new Intent(mContext,UserMain Activity.class));
finish();
}
});
3.2 歌單模塊
用戶登錄后可進入歌單界面查看已有歌曲信息,并可點擊查看歌曲詳情,在歌曲詳情界面可進行歌曲播放、關注、點贊以及評論操作,歌單界面如圖10:
歌曲信息主要是使用一個RecyclerView進行展示,其中獲取歌曲列表信息和RecyclerView的適配器、歌曲播放代碼下所示:
//從服務器獲取歌曲信息
OkHttpTools.sendGet(mContext,ApiManager.SONG_LIST)
.build()
.execute(new BaseCallBack
@Override
public void onResponse(SongListBeansongListBean) {
mData= songListBean.getData();
adapter.notifyDataSetChanged(mData);
}
});
//RecyclerView適配器
private class MyAdapterextends BaseAdapter
public MyAdapter(Context context,int layoutId,ArrayList
super(context,layoutId,data);
}
@Override
public void initItemView(BaseViewHolder holder,SongBeansongBean,int position) {
if(TextUtils.isEmpty(songBean.getHeadUrl())){
Glide.with(getActivity()).load("").into((ImageView)holder.getView(R.id.head_image));
}else{
Glide.with(getActivity()).load(ApiManager.HEAD_URL+songBean.getHeadUrl()).into((ImageView)holder.getView(R.id.head_image));
}
holder.setText(R.id.tv_name,songBean.getName());
holder.setText(R.id.tv_total,"時間:" + My Application.formatTime.format(songBean.getLength()));
holder.setText(R.id.tv_username,"用戶名:" + song Bean.getUname());
}
}
}
//播放
public void play(booleanflag) {
try {
if (!mediaPlayer.isPlaying()) {
if (flag) {
mediaPlayer.setVolume(1.0f,1.0f);
} else {
mediaPlayer.setVolume(0.5f,0.5f);
}
mediaPlayer.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
3.3 關注模塊
用戶在關注界面可查看個人已關注的歌曲信息,并可點擊進行歌曲播放、點贊以及評論操作,關注界面如圖11:
3.4 錄制歌曲模塊
用戶登錄后可進行錄制歌曲操作,在錄制歌曲時,首先可進行選擇伴奏界面進行下載伴奏,伴奏下載完成后,點擊演唱按鈕即可開始錄制歌曲,同時,如果有之前已經下載過的歌曲,可以直接點擊演唱按鈕進行錄制。歌曲錄制界面如圖12所示。
其中,下載伴奏,查詢已存在的伴奏,開始錄音的核心代碼:
@PermissionSuccess(requestCode = 522)
private void ok1() { //下載伴奏
OkHttpUtils.get().url(ApiManager.BZ_PATH+ downMusic.getAddr())
.build()
.execute(new FileCallBack(
Environment.getExternalStorageDirectory(). getAbsolutePath() + "/bsktv",
downMusic.getName() + ".mp3") {
@Override
public void onError(Call call,Exception e,int id) {
}
@Override
public void onResponse(File response,int id) {
dialog.dismiss();
loadLocalData();
}
@Override
public void inProgress(float progress,long total,int id) {
super.inProgress(progress,total,id);
dialog.setPor(progress);
}
});
}
//開始錄音使用amr格式錄音文件
public void startRecord() {
if (mMediaRecorder== null)
mMediaRecorder= new MediaRecorder();
try { mMediaRecorder.setAudioSource(Media Recorder.AudioSource.MIC);// 設置麥克風
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
filePath= FolderPath+ System.currentTimeMillis() + ".amr";
mMediaRecorder.setOutputFile(filePath);
mMediaRecorder.prepare();
mMediaRecorder.start();
startTime= System.currentTimeMillis();
updateMicStatus();
Log.e("fan","startTime" + startTime);
} catch (IllegalStateException e) {
Log.i(TAG,"call startAmr(File mRecAudioFile) failed!" + e.getMessage());
} catch (IOException e) {
Log.i(TAG,"call startAmr(File mRecAudioFile) failed!" + e.getMessage());
}
}
3.5 我的
在我的歌曲界面,用戶可以查看個人已錄制的歌曲,點擊后可看到關注量和評論。
4 結 論
智能手機的普及,極大的改變了人們的休閑娛樂方式。人們希望使用科技讓生活、工作、學習等變得更加便捷,由此催生了大量移動應用APP。人們的日常生活和移動互聯網息息相關,但關于娛樂K歌的APP比較少。因此,開發一款基于Android的K歌娛樂應用APP就非常有必要,既可以自娛自樂K歌休閑,又可以利用發布功能,把錄好的歌曲上傳共享,供大家欣賞評論、交流互動。
參考文獻:
[1] Rafael Ufology. GOOGLE ANDROID MARKET [J]. Computer Canada,2009,25(13):24-25.
[2] 袁浩.基于J2EE平臺的制造業企業產品知識管理系統設計與實現 [D].長沙:湖南大學,2016.
[3] 張劉正.Android系統下軟件的自動化測試框架(本地化平臺)的研究與實現 [D].成都:西南交通大學,2012.
[4] 張娜.Android系統架構研究與應用 [D].西安:西安科技大學,2013.
[5] 李光革(Ri Kwanghyok).基于Android的物聯網應用結構研究與實現 [D].北京:北京郵電大學,2014.
[6] 徐雪麗.基于Android平臺的虛擬試衣關鍵技術研究 [D].西安:陜西科技大學,2014.
[7] 曾鵬飛.基于Wi-Fi信號強度與多傳感器信息融合的室內定位系統研究 [D].無錫:江南大學,2014.
[8] 容麗.移動端家庭理財系統的設計與實現 [D].天津:天津大學,2015.
[9] 王垚鑫.基于Android平臺數字水印的應用研究 [D].南京:南京郵電大學,2015.
[10] 葉錦標.基于Android平臺的流媒體傳輸系統的設計與實現 [D].南京:南京郵電大學,2015.
作者簡介:沈旭(1979-),男,漢族,山東單縣人,講師,碩士,CCF會員(66155M),研究方向:輿情計算、移動應用研究等。