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
|