沈旭 赖淳 孟巍
摘 要:随着经济文化发展水平的不断提高,生活节奏不断加快,人们需要适合自己的娱乐方式释放压力。卡拉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),研究方向:舆情计算、移动应用研究等。