Android第四次作业

一.团队成员

喇文斌 学号:1600802116 计算机164 博文地址:http://www.cnblogs.com/qwer-lwb/

于昊    学号:1600802134 计算机164 博文地址:http://www.cnblogs.com/yhbooka/

二.链接

1.项目代码链接:https://git.coding.net/lwb1234/lwb1.git

2.APK链接:https://git.coding.net/lwb1234/lwb1.git

三.项目介绍

1.总体效果截图

  

2.功能及其效果的描述

-在上一次的基础上添加了手动获取歌曲

--界面顶部按钮可手动获取手机中的歌曲

--可以暂停,继续,开始播放歌曲

--上一曲,下一曲

四.关键代码

  获取本地歌曲

 

public void obtain(View v){
ContentResolver contentResolver=getContentResolver();
Cursor c=contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
if (c!=null){
int i=0;
while(c.moveToNext()){
Map<String,Object> map= new HashMap<String, Object>();
//songs
name[i]=c.getString(c.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
id[i]=c.getInt(c.getColumnIndex(MediaStore.Audio.Media._ID));
//writer
artical[i]=c.getString(c.getColumnIndex(MediaStore.Audio.Media.ARTIST));
//path
url[i]=c.getString(c.getColumnIndex(MediaStore.Audio.Media.DATA));
map.put("SongName", name[i]);
map.put("id", id[i]);
map.put("Artical", artical[i]);
map.put("url", url[i]);
list.add(map);
i++;
}
adapter = new SimpleAdapter(getApplicationContext(), list, R.layout.content,
new String[] { "SongName","Artical" }, new int[] { R.id.name,R.id.artical});
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//Play the music from the very beginning

if (i<list.size()){
if (mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.reset();
}
Uri conuri= ContentUris.withAppendedId(android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,id[i]);
try {
mediaPlayer.setDataSource(getApplicationContext(),conuri);
} catch (IOException e) {
e.printStackTrace();
}
index=i;
isPause=false;
mediaPlayer.prepareAsync();

 

}
}
});
}else{
Toast.makeText(getApplicationContext(),"There are no music files locally",Toast.LENGTH_LONG).show();
}
}

 设置按钮监听事件

public void onClick(View view) {
switch (view.getId()){
case R.id.up:
try {
up();
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.start:
try {
start();
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.stop:
pause();
break;
case R.id.next:
try {
next();
} catch (IOException e) {
e.printStackTrace();
}
break;
}

}

 

 

 

五.对其他团队项目的评价

1.赵乐组:音乐播放器

功能:

音乐播放器拥有3个界面,欢迎界面,播放界面,列表界面。 播放界面有播放,暂停,上一首,下一首,显示播放进度条,歌曲名称,歌手名称及跳转列表页面功能。列表界面有获取本地MP3格式文件并显示在列表中,点击列表文件会切换到播放界面并播放功能。

优点:

询问用户是否开启此项权限,使软件更加的具有人性化。

有待改进之处:

可以为音乐播放器添加一些组件实现展示歌词,展示专辑封面等。

2.马全兰组:计算器

功能:

计算器可以实现且可以进行小数和整数的加减乘除4则运算。

优点:

界面简洁,不花里胡哨,让人一看,一目了然。

有待改进之处:

功能有点少,可以试着增加一些其他功能,例如:M+,M-。也可以添加一些数学函数例如:cos,开根号,求平方等实现一些复杂的功能。

3.马秀莲组:校园朋友圈代取快递app

功能:

校园朋友圈代取快递app:户登录界面,已注册的用户可以直接登录 ,登录需要学号和密码,没有注册的用户则无法进行登录 ,需要注册,注册页面需要填写完整的信息(用户名、学号、密码)注册成功后,信息保存到数据库中 。在这个平台实现了在朋友圈分享自己的快递,若自己无空闲时间,其他看到此条消息,并且自己打算去取快递,如果顺路的话可以帮同学或朋友取快递。

优点:

注册时要校验两次密码,要求两次注册的密码必须一致,不一致时页面会给出相应的提示,无法注册成功,注册成功后,信息才能保存到数据库中 ,只有数据库里的用户才能进行登录。此app还可以展示一些校园信息,不同快递的介绍。

有待改进之处:

功能挺全面,就是界面可以再美化一些,本来想说加一个诚信积分体制,但又一想,都是朋友圈,没有必要。如果以后要做的大一些,不仅仅是朋友圈,可以考虑一下这方面的问题。

4.韩丽萍组:日记本

功能:

一个简洁实用的日记本:可以新建,编辑,保存,删除日记。

优点:

记录自己的一天,实现了作为一个安卓日记本app的基本功能。

有待改进之处:

新建日记时当天的日期,星期以及天气状况均不能为空,如果其中一个为空,则会提示该项不能为空。如果某人心情不好不想记录这些,就只想想记录日记内容,就不能记录日记了。--------个人意见。

5.季轩石组:任务计划提醒app

功能:

添加计划:点击添加计划按钮,有两个选项可以选择,一个是定量计划,一个是打卡计划。 打卡计划通过自定义填写内容可以直接生成一个打卡计划的卡片,然后每天可以通过该卡片生成一个打卡内容。提醒事项,下面的菜单栏的第二个内容,然后点击添加TODO,输入你要提醒的事项,然后选择提醒时间,就可以添加提醒了。

优点:

可以更换白天或夜晚界面。总体来说界面美观舒适,功能齐全,很专业。

有待改进之处:

待到打卡提醒时,可以由机器人说出计划内容。

六.所遇问题

1600802116 喇文斌

1. 从一首歌中获取,歌名,歌手。

2.listview的运用

1600802134  于昊

1.歌曲的获取,本来打算用filter,就是获取所有文件。然后过滤出后缀名为mp3的文件,后来感觉这种方法有点繁琐。

2.androidstudio模拟器无法进入app,显示Unfortunately  has stopped

七.项目分工

代码的编写是我们小组在机房共同完成,代码的话统一由小组另一位同学上传,编写代码遇到的一些问题也是两个人一起上网查找资料共同完成。

姓名

分工

工作比例

分数(10)

喇文斌

界面,代码编写,代码上传

50%

10

于昊

界面,代码编写,编辑博文

50%

10

 

八.视频演示:

https://pan.baidu.com/s/1bGMEINvv2JHyr32HZK8gAA

posted @ 2018-12-31 19:16  初噫  阅读(279)  评论(0编辑  收藏  举报