diff --git a/.gitignore b/.gitignore index 76d8fc0..31936ec 100644 --- a/.gitignore +++ b/.gitignore @@ -164,6 +164,6 @@ fabric.properties !/gradle/wrapper/gradle-wrapper.jar app/src/main/java/.vscode - +.vscode # End of https://www.gitignore.io/api/android,androidstudio \ No newline at end of file diff --git a/README.md b/README.md index f6845a8..0d2d126 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@  - * 修改用户信息 `changeUserInfo`,注意username必须设置,其他的是需要改的值.**修改会覆盖之前的内容**.比如用户之前illness是健忘食谱,想增加一个高血压食谱, 就需要把之前的也写上,就是一起传 `健忘食谱,高血压食谱`这两个参数.写到List里面. 具体参考main函数里面的 + * **修改用户信息** `changeUserInfo`,注意username必须设置,其他的是需要改的值.**修改会覆盖之前的内容**.比如用户之前illness是健忘食谱,想增加一个高血压食谱, 就需要把之前的也写上,就是一起传 `健忘食谱,高血压食谱`这两个参数.写到List里面. 具体参考main函数里面的 * 获取九体信息 `getPhysique`方法 @@ -304,3 +304,72 @@ * `occupation_name`,`physical_name`的值必须和数据库对应  + + + +## 国赛阶段 + +### 代码 + +* 优化了`getRandomMenus方法`,传入username参数.会根据user的体质,职业,病理推荐菜 + + ```java + public void getRandomMenus(int count, String username, Callback callback) + ``` + + 这个方法之前的版本没有username参数,**现在弃用原来的版本,原来的方法仍然可以调用,需要把项目的所有getRandomMenus方法调用加上一个username参数** + +### 问题 + +* 连续识别,出现错误的,点一下消去 锐 + +* bug: 连续拍照后 点了一周定制 锐 + +* ~~*食材模糊识别 ok*~~ + +* 通过食材组合,搜索菜 ,菜要符合username的信息 赵和锐 + +* 卡路里不对 + +* ~~*早餐晚餐的搜索不随机 shuffle了一下.ok*~~ + + * ~~`get_menus_by_elements` django随机一下~~ + +* 周定制下面的两个按钮 锐 + +* ~~*搜菜如果搜不到 把name减一下再搜 ok*~~ + +* getRandomMenus的username参数改为MyUser类 + + * 更好的解决办法是在更新user的信息后,同步更新到服务器 + + + + ### 时间安排 + +* 周日上午答辩 +* 周五排练 + +### PPT安排 + +* 小组分工介绍 + + +* 产品背景 秦 +* 量身定制 林 +* 周定制 林 +* 动态添加 智能定量 赵 +* 拍食材做菜(食菜帮) 赵 +* 菜谱推荐 秦 + +* 产品亮点 秦 +* 产品难点 王 +* 未来展望 王 + * 相信在不就得将来,在AI智能定制膳食的帮助下,人们不再为职业病,慢性病所烦恼,享受科学膳食带来的健康生活. + +### 需要演示的功能 + +* 拍照 菜品识别 识别 烤鸭 土豆丝 鱼香肉丝 红烧肉 炒面 (动态调量,修改当天余额) +* 拍照 食材识别 胡萝卜 白萝卜 姜 长条茄子 菜花 (根据用户的信息,并且是多搜索) + +* 周定制(最左边的fragment) \ No newline at end of file diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java index c0d88f0..e630a47 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; @@ -42,39 +41,22 @@ public class WebUtil { private WebUtil() { } - - public static WebUtil getInstance() { return instance; } /** - * 获取具体的菜谱信息 - * { - * "flavor": "咸鲜味", - * "calorie": 234, - * "name": "雪丽对虾", - * "technology": "炸", - * "image_url": "http://s1.ig.meishij.net/p/20091012/fed63858e633540c8df73e62692520fb_150x150.jpg", - * "cook_quantity": [ - * { - * "menu": "雪丽对虾", - * "quantity": "500", - * "material": "对虾" - * }, - * { - * "menu": "雪丽对虾", - * "quantity": "60", - * "material": "鸡蛋清" - * }, - * } + * 获取具体的菜谱信息 { "flavor": "咸鲜味", "calorie": 234, "name": "雪丽对虾", + * "technology": "炸", "image_url": + * "http://s1.ig.meishij.net/p/20091012/fed63858e633540c8df73e62692520fb_150x150.jpg", + * "cook_quantity": [ { "menu": "雪丽对虾", "quantity": "500", "material": "对虾" + * }, { "menu": "雪丽对虾", "quantity": "60", "material": "鸡蛋清" }, } */ public void getMenu(String menuName, Callback callback) { Request request = new Request.Builder().url("http://120.77.182.38/menus/" + menuName + "/").build(); mClient.newCall(request).enqueue(callback); } - /** * 获取count个随机菜谱,在回调中解析为一个Menu数组 * @@ -82,7 +64,21 @@ public class WebUtil { * @param callback */ public void getRandomMenus(int count, Callback callback) { - Request request = new Request.Builder().url("http://120.77.182.38/menus/get_random_menus/?count=" + String.valueOf(count)).build(); + Request request = new Request.Builder() + .url("http://120.77.182.38/menus/get_random_menus/?count=" + String.valueOf(count)).build(); + mClient.newCall(request).enqueue(callback); + } + + /** + * 获取count个随机菜谱,在回调中解析为一个Menu数组 根据用户的体质,病理,职业推荐 + * + * @param count + * @param callback + */ + public void getRandomMenus(int count, String username, Callback callback) { + Request request = new Request.Builder().url( + "http://120.77.182.38/menus/get_random_menus/?count=" + String.valueOf(count) + "&username=" + username) + .build(); mClient.newCall(request).enqueue(callback); } @@ -93,30 +89,15 @@ public class WebUtil { * @param callback */ public void getRandomTricks(int count, Callback callback) { - Request request = new Request.Builder().url("http://120.77.182.38/trick/get_random_tricks/?count=" + String.valueOf(count)).build(); + Request request = new Request.Builder() + .url("http://120.77.182.38/trick/get_random_tricks/?count=" + String.valueOf(count)).build(); mClient.newCall(request).enqueue(callback); } - /** - * 获取某食材可以做的菜 - * [ - * { - * "menu": "西红柿鸡蛋汤", - * "quantity": "适量", - * "material": "西红柿" - * }, - * { - * "menu": "瘦身版红菜汤", - * "quantity": "4-5片", - * "material": "西红柿" - * }, - * { - * "menu": "西红柿炖豆腐", - * "quantity": "三个", - * "material": "西红柿" - * }, - * ] + * 获取某食材可以做的菜 [ { "menu": "西红柿鸡蛋汤", "quantity": "适量", "material": + * "西红柿" }, { "menu": "瘦身版红菜汤", "quantity": "4-5片", "material": "西红柿" }, + * { "menu": "西红柿炖豆腐", "quantity": "三个", "material": "西红柿" }, ] * * @param materialName * @param callback @@ -127,42 +108,20 @@ public class WebUtil { } /** - * 获取某菜谱分类对应的菜 - * { - * "classification": "川菜", - * "cure_occupation": [], - * "menu_effect": [ - * "三色鲍脯", - * "三色鸡酪", - * "三菇冬瓜汤", - * "三菌烩蛇段", - * "三鲜乌鱼汤", - * "三鲜参片汤", - * "三鲜猪肝汤", - * "下饭的素版麻婆豆腐", - * "丝瓜鱼肚卷", - * "五更豆酥鱼", - * "元鱼烧鸡", - * "冬苋菜豆腐汤", - * "冬菜排骨汤", + * 获取某菜谱分类对应的菜 { "classification": "川菜", "cure_occupation": [], + * "menu_effect": [ "三色鲍脯", "三色鸡酪", "三菇冬瓜汤", "三菌烩蛇段", "三鲜乌鱼汤", + * "三鲜参片汤", "三鲜猪肝汤", "下饭的素版麻婆豆腐", "丝瓜鱼肚卷", "五更豆酥鱼", "元鱼烧鸡", + * "冬苋菜豆腐汤", "冬菜排骨汤", */ public void getMenuClassification(String classificationName, Callback callback) { - Request request = new Request.Builder().url("http://120.77.182.38/menuclassification/" + classificationName + "/").build(); + Request request = new Request.Builder() + .url("http://120.77.182.38/menuclassification/" + classificationName + "/").build(); mClient.newCall(request).enqueue(callback); } /** - * 获取职业需要的菜谱分类 - * { - * "occupation_name": "电力工程师", - * "menuclassification_set": [ - * "接触电离辐射人员食谱", - * "防癌抗癌食谱", - * "明目食谱", - * "关节炎食谱", - * "壮腰健肾食谱" - * ] - * } + * 获取职业需要的菜谱分类 { "occupation_name": "电力工程师", "menuclassification_set": + * [ "接触电离辐射人员食谱", "防癌抗癌食谱", "明目食谱", "关节炎食谱", "壮腰健肾食谱" ] } */ public void getOccupation(String occupationName, Callback callback) { Request request = new Request.Builder().url("http://120.77.182.38/occupation/" + occupationName + "/").build(); @@ -176,18 +135,8 @@ public class WebUtil { } /** - * 获取体质需要的食材 - * { - * "physical_name": "气虚质", - * "cure_material": [ - * "人参", - * "人参须", - * "去芯莲子", - * "去芯莲子(3~4人份)", - * "土茯苓", - * ... - * ] - * } + * 获取体质需要的食材 { "physical_name": "气虚质", "cure_material": [ "人参", "人参须", + * "去芯莲子", "去芯莲子(3~4人份)", "土茯苓", ... ] } */ public void getPhysique(String physiqueName, Callback callback) { Request request = new Request.Builder().url("http://120.77.182.38/physique/" + physiqueName + "/").build(); @@ -195,30 +144,15 @@ public class WebUtil { } /** - * 获取病相关的菜谱和元素信息 - * 传入含有病的意义的菜谱分类名称,比如青少年食谱 + * 获取病相关的菜谱和元素信息 传入含有病的意义的菜谱分类名称,比如青少年食谱 *
- * { - * "menu_classification": { - * "classification": "青少年食谱", - * "cure_occupation": [ - * "学生" - * ], - * "menu_effect": [ - * "三鲜鳝汤", - * "上海糖醋小排骨", - * ... - * ] - * }, - * "elements": { - * "id": 84, - * "calorie": 1.1, - * ... - * } - * } + * { "menu_classification": { "classification": "青少年食谱", "cure_occupation": [ + * "学生" ], "menu_effect": [ "三鲜鳝汤", "上海糖醋小排骨", ... ] }, "elements": { + * "id": 84, "calorie": 1.1, ... } } */ public void getIllness(String illnessClassification, Callback callback) { - Request request = new Request.Builder().url("http://120.77.182.38/illness/" + illnessClassification + "/").build(); + Request request = new Request.Builder().url("http://120.77.182.38/illness/" + illnessClassification + "/") + .build(); mClient.newCall(request).enqueue(callback); } @@ -231,100 +165,74 @@ public class WebUtil { /** * 注意在回调中处理username重复的情况 *//* - public static void postUser(String username, String password, String sex, @Nullable String occupationName, @Nullable String physicalName, Callback callback) { - RequestBody formBody = new FormBody.Builder() - .add("username", username) - .add("password", password) - .add("sex", sex) - .add("occupation_name", occupationName == null ? "" : occupationName) - .add("physical_name", physicalName == null ? "" : physicalName) - .build(); - Request request = new Request.Builder() - .url("http://120.77.182.38/myuser/") - .post(formBody) - .build(); + * public static void postUser(String username, String password, String + * sex, @Nullable String occupationName, @Nullable String physicalName, Callback + * callback) { RequestBody formBody = new FormBody.Builder() .add("username", + * username) .add("password", password) .add("sex", sex) .add("occupation_name", + * occupationName == null ? "" : occupationName) .add("physical_name", + * physicalName == null ? "" : physicalName) .build(); Request request = new + * Request.Builder() .url("http://120.77.182.38/myuser/") .post(formBody) + * .build(); + * + * OkHttpClient mClient = new OkHttpClient(); + * mClient.newCall(request).enqueue(callback); } + */ - OkHttpClient mClient = new OkHttpClient(); - mClient.newCall(request).enqueue(callback); - }*/ - - /*public static void changeUserPassword(String username, String password, Callback callback) { - String url = "http://120.77.182.38/myuser/" + username + "/"; - RequestBody formBody = new FormBody.Builder() - .add("username", username) - .add("password", password) - .build(); - - Request request = new Request.Builder() - .url(url) - .patch(formBody) - .build(); - - OkHttpClient mClient = new OkHttpClient(); - mClient.newCall(request).enqueue(callback); - } - - *//** - * 修改职业 - * 传入职业名称参数 - *//* - public static void changeUserOccupation(String username, String occupation, Callback callback) { - String url = "http://120.77.182.38/myuser/" + username + "/"; - RequestBody formBody = new FormBody.Builder() - .add("username", username) - .add("occupation", occupation) - .build(); - - Request request = new Request.Builder() - .url(url) - .patch(formBody) - .build(); - - OkHttpClient mClient = new OkHttpClient(); - mClient.newCall(request).enqueue(callback); - } - - *//** - * 修改体质 - * - * @param physique 体质名称 - *//* - public static void changeUserPhysique(String username, String physique, Callback callback) { - String url = "http://120.77.182.38/myuser/" + username + "/"; - RequestBody formBody = new FormBody.Builder() - .add("username", username) - .add("physique", physique) - .build(); - - Request request = new Request.Builder() - .url(url) - .patch(formBody) - .build(); - - OkHttpClient mClient = new OkHttpClient(); - mClient.newCall(request).enqueue(callback); - } - - */ + /* + * public static void changeUserPassword(String username, String password, + * Callback callback) { String url = "http://120.77.182.38/myuser/" + username + + * "/"; RequestBody formBody = new FormBody.Builder() .add("username", username) + * .add("password", password) .build(); + * + * Request request = new Request.Builder() .url(url) .patch(formBody) .build(); + * + * OkHttpClient mClient = new OkHttpClient(); + * mClient.newCall(request).enqueue(callback); } + * + *//** + * 修改职业 传入职业名称参数 + */ + /* + * public static void changeUserOccupation(String username, String occupation, + * Callback callback) { String url = "http://120.77.182.38/myuser/" + username + + * "/"; RequestBody formBody = new FormBody.Builder() .add("username", username) + * .add("occupation", occupation) .build(); + * + * Request request = new Request.Builder() .url(url) .patch(formBody) .build(); + * + * OkHttpClient mClient = new OkHttpClient(); + * mClient.newCall(request).enqueue(callback); } + * + *//** + * 修改体质 + * + * @param physique 体质名称 + *//* + * public static void changeUserPhysique(String username, String physique, + * Callback callback) { String url = "http://120.77.182.38/myuser/" + username + + * "/"; RequestBody formBody = new FormBody.Builder() .add("username", username) + * .add("physique", physique) .build(); + * + * Request request = new Request.Builder() .url(url) .patch(formBody) .build(); + * + * OkHttpClient mClient = new OkHttpClient(); + * mClient.newCall(request).enqueue(callback); } + * + */ /** - * public static void changeUserIllness(String username, String[] illnesses, Callback callback) { - * String url = "http://120.77.182.38/myuser/" + username + "/"; + * public static void changeUserIllness(String username, String[] illnesses, + * Callback callback) { String url = "http://120.77.182.38/myuser/" + username + + * "/"; *
- * FormBody.Builder builder = new FormBody.Builder(); - * for (String illness : illnesses) { - * builder.add("illness", illness); - * } - * RequestBody formBody = builder.build(); + * FormBody.Builder builder = new FormBody.Builder(); for (String illness : + * illnesses) { builder.add("illness", illness); } RequestBody formBody = + * builder.build(); *
- * Request request = new Request.Builder() - * .url(url) - * .patch(formBody) - * .build(); + * Request request = new Request.Builder() .url(url) .patch(formBody) .build(); *
* OkHttpClient mClient = new OkHttpClient();
- * mClient.newCall(request).enqueue(callback);
- * }
+ * mClient.newCall(request).enqueue(callback); }
*/
private static RequestBody buildUserRequestBody(MyUser user) {
try {
@@ -335,9 +243,9 @@ public class WebUtil {
for (Field f : fields) {
String fieldName = f.toString().substring(f.toString().lastIndexOf(".") + 1);
f.setAccessible(true);
- Object object = f.get(user);//获取属性的值
+ Object object = f.get(user);// 获取属性的值
if (object != null) {
- //illness属性是一个list,需要加入每个list的值,而不是list对象
+ // illness属性是一个list,需要加入每个list的值,而不是list对象
if (fieldName.equals("illness")) {
List