“智能垃圾分类APP”第一阶段总结

总任务:

一.appUI页面(已完成)

二.首页功能:

  1.图像识别功能(已完成)

  2.语音识别功能(已完成)

  3.垃圾搜索功能(基本完成)

  4.相关新闻爬取

三.我的功能

  1.登陆注册(已完成)

  2.短信服务(已完成)

  3.积分奖励机制

四.路线功能

  1.路线规划(已完成)

  2.地图导航(已完成)

五.社区功能

  1.发布功能(已完成)

  2.评论功能

六.服务器部署(已完成)

源代码:

import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.StrictMode;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast; import com.bumptech.glide.Glide;
import com.example.garbagesorting.AddActivity;
import com.example.garbagesorting.R;
import com.example.garbagesorting.adapter.findAdapter;
import com.example.garbagesorting.dao.FindDao;
import com.example.garbagesorting.model.find;
import com.example.garbagesorting.utils.BitmapUtils;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit; public class FindFragment extends Fragment {
private RecyclerView rec_find;
private View root;
private ArrayList<find> list=new ArrayList<>();
private findAdapter adapter;
private FindDao findDao=new FindDao();
public static final int ADD = 100;
SharedPreferences sp=null;
private LocalBroadcastManager broadcastManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
root=inflater.inflate(R.layout.fragment_find, container, false); initUI();
initData();
new UpdateDateThd(updateDateHandler).start();
return root;
}
private void initUI(){
rec_find=root.findViewById(R.id.rec_find);
sp=getContext().getSharedPreferences("User", getContext().MODE_PRIVATE);
}
private void initData(){
FloatingActionButton fab = root.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
if(sp.getString("phone",null)!=null){
intent.setClass(getActivity(), AddActivity.class);
getActivity().startActivityForResult(intent, ADD);
}
else {
Toast.makeText(getContext(),"请先登录",Toast.LENGTH_SHORT).show();
}
}
});
}
@SuppressLint("HandlerLeak")
private Handler updateDateHandler = new Handler() { @Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//获取日期,显示
Bundle bundle = msg.getData();
ArrayList date = (ArrayList) bundle.getSerializable("value");
//dateView.setText(date);
rec_find.setLayoutManager (new GridLayoutManager(getContext(), 2, GridLayoutManager.VERTICAL, false));
adapter=new findAdapter(getContext(),date);
rec_find.setAdapter(adapter);
}
}; //发送消息给UI线程的子线程.
class UpdateDateThd extends Thread{
private Handler handler;
private boolean bool=true; public UpdateDateThd(Handler handler) {
this.handler = handler;
} @Override
public void run () { while (bool) {
// try {
//每秒向主线程发送一次消息
// TimeUnit.MILLISECONDS.sleep(10000);
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String date = sdf.format(new Date()); try {
list=findDao.queryAll();
sendMessage(list);
TimeUnit.MILLISECONDS.sleep(10000);
bool=false;
} catch (InterruptedException e) {
e.printStackTrace();
}
bool=false;
}
} private void sendMessage(ArrayList msg){
Bundle data = new Bundle();
data.putSerializable("value",list);
Message message = new Message();
message.setData(data); this.handler.sendMessage(message);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//拍照后返回
if (resultCode==8) {
//显示图片
System.out.println("秋明");
find fd=(find) data.getSerializableExtra("find");
System.out.println(fd.getPhone());
rec_find.setLayoutManager (new GridLayoutManager(getContext(), 2, GridLayoutManager.VERTICAL, false));
adapter.notifyItemInserted(0);
list.add(0,fd);
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
rec_find.scrollToPosition(0);
return;
} }
}

团队成员:

燃尽图

scrum项目冲刺_day11 第一阶段总结的更多相关文章

  1. 【1414软工助教】团队作业8——第二次项目冲刺(Beta阶段) 得分榜

    题目 团队作业8--第二次项目冲刺(Beta阶段) 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 团队作业1:团队展示 团队作业2:需求分析&a ...

  2. 团队作业8——第二次项目冲刺(Beta阶段)--5.19 first day

    团队作业8--第二次项目冲刺(Beta阶段)--5.19 Day one: 会议照片 项目进展 由于今天是Beta版本项目冲刺的第一天,所以没有昨天已完成任务.以下是今日具体的任务安排. 队员 今日计 ...

  3. T-MAX组--项目冲刺(第一天)

    THE FIRST DAY 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--项目冲刺(第一天) 团队名称 T-MA ...

  4. 【集美大学1411_助教博客】团队作业8——第二次项目冲刺(Beta阶段)

    写在前面的话 此次团队作业8可以拆分成两部分:1.beta阶段冲刺计划安排,2.7天敏捷冲刺."我们很低调"没有使用leangoo,经过与张老师的商议,张老师同意他们不使用lean ...

  5. 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day

    团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...

  6. 团队作业8——第二次项目冲刺(Beta阶段)--5.23 third day

    团队作业8--第二次项目冲刺(Beta阶段)--5.23 third day Day three: 会议照片 项目进展 今天是beta冲刺的第三天,组长回到了队伍当中,正式开始改进alpha中存在的功 ...

  7. 团队作业8——第二次项目冲刺(Beta阶段)--5.24 forth day

    团队作业8--第二次项目冲刺(Beta阶段)--5.24 forth day Day four: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...

  8. 团队作业8——第二次项目冲刺(Beta阶段)--5.25 5th day

    团队作业8--第二次项目冲刺(Beta阶段)--5.25 fifth day Day five: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...

  9. 团队作业8——第二次项目冲刺(Beta阶段)--5.26 sixth day

    团队作业8--第二次项目冲刺(Beta阶段)--5.26 sixth day Day six: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完成 ...

随机推荐

  1. OpenResty Lua钩子调用完整流程

    前面一篇文章介绍了Openresty Lua协程调度机制,主要关心的是核心调度函数run_thread()内部发生的事情,而对于外部的事情我们并没有涉及.本篇作为其姊妹篇,准备补上剩余的部分.本篇将通 ...

  2. Emlog V6.0.0代码审计笔记

    前言 emlog是一套基于PHP和MySQL的博客及CMS建站系统. emlog v6.0.0存在后台SQL注入漏洞. 分析 官网下载emlog最新版v6.0.0,本地搭建. 前台功能不多,参数基本都 ...

  3. 内网隧道与SOCKS代理思路总结

    早就想总结一下这部分内容了,总是有其他事情卡住,一直拖到现在 内网中有很多边界设备,比如防火墙.这种边界设备会控制内部主机的对外连接,一般会仅允许某些种类的端口开放或某种数据流量出入 这就意味着我们只 ...

  4. noip13

    T1 一开始直接丢了个暴力走人50pts,然后开始打表找规律,啥也没找着,最后二十分钟突然看出来了什么,把 \(f_{n,m}\)式子列了一下,发现常数项没啥规律,最后五分钟,突然闪过一丝灵感,但是是 ...

  5. 【Azure 应用服务】App Service For Container 配置Nginx,设置/home/site/wwwroot/目录为启动目录,并配置反向代理

    问题描述 通过Docker Desktop for Linux,配置Nginx镜像后,自定义nginx.conf文件,修改启动目录和对 /out 路径的反向代理到博客园的博文地址 (https://w ...

  6. nodejs koa2 设置 静态资源目录

    参考这篇文章:https://blog.csdn.net/qq_38262910/article/details/89147571?utm_medium=distribute.pc_relevant_ ...

  7. java多线程的一些面试题

    8.callable与fature Callable与Runnable类似,但是Callable有返回值,并且有一个参数化的类型. Fature保存异步计算的结果.9.执行器 Executor.10. ...

  8. git rebase和git merge的区别

    前言:    平时工作中发现一般同事在同步远程代码的时候都是用git pull,其实git pull包含有两个操作,一个是fetch远程的代码,一个是将本地当前的代码和远程代码进行merge,即git ...

  9. Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性

    什么是对象和类 https://www.cnblogs.com/poloyy/p/15178423.html 什么是 Python 类.类对象.实例对象 https://www.cnblogs.com ...

  10. Consul 入门-初识

    背景 现状:单体架构逐渐被微服务架构所替代,原本两个功能模被拆分成了两个服务.原本两个模块块间的通信只需要函数调用就能够实现,现在却做不到了,因为它们不在同一个进程中,甚至两个服务都可能部署到不同的机 ...