diff --git a/README.md b/README.md
index c22d2e4..a8ca9fe 100644
--- a/README.md
+++ b/README.md
@@ -263,6 +263,6 @@
* POST新建用户信息`params`示例
* 1♂ 0♀
- * `occupation_name`,`physique`的值必须和数据库对应
+ * `occupation_name`,`physical_name`的值必须和数据库对应

diff --git a/app/build.gradle b/app/build.gradle
index ce04b2a..8af0acf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -83,4 +83,7 @@ dependencies {
// json解析库
implementation 'com.google.code.gson:gson:2.8.5'
+ //横向picker
+ compile 'com.github.adityagohad:HorizontalPicker:1.0.1'
+
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3055424..3b6865a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,7 +44,7 @@
-
+
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java
index 67edc29..24a86e6 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java
@@ -4,16 +4,25 @@ import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
+import com.example.ninefourone.nutritionmaster.bean.FoodMenu;
import com.example.ninefourone.nutritionmaster.bean.MyUser;
import com.example.ninefourone.nutritionmaster.bean.Occupation;
import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
-import com.example.ninefourone.nutritionmaster.utils.WebUtils;
+import com.example.ninefourone.nutritionmaster.utils.WebUtil;
import com.google.gson.Gson;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
@@ -35,7 +44,6 @@ public class NutritionMaster extends Application {
super.onCreate();
mInstance = this;
init();
- initUser();
}
/**
@@ -80,6 +88,15 @@ public class NutritionMaster extends Application {
}
});
initOccupations();
+ initUser();
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ initBD();
+ }
+ });
+ thread.start();
+
}
public static NutritionMaster getInstance() {
@@ -109,7 +126,7 @@ public class NutritionMaster extends Application {
*/
private void initOccupations() {
- WebUtils.getAllOccupations(new Callback() {
+ WebUtil.getAllOccupations(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
@@ -118,7 +135,6 @@ public class NutritionMaster extends Application {
@Override
public void onResponse(Call call, Response response) throws IOException {
Occupation[] occupations = new Gson().fromJson(response.body().string(), Occupation[].class);
-// Logger.d(Arrays.toString(occupations));
for (int i = 0; i < occupations.length; i++) {
ConstantUtils.occupationList.add(occupations[i].getOccupation_name());
}
@@ -128,4 +144,58 @@ public class NutritionMaster extends Application {
}
+ /**
+ * BDAPI init
+ */
+ private void initBD() {
+ ConstantUtils.BD_ACCESS_TOKEN = getAccessToken();
+// Logger.d(ConstantUtils.BD_ACCESS_TOKEN);
+ }
+
+
+ private String getAccessToken() {
+ String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
+ String ak = ConstantUtils.BD_API_KEY;
+ String sk = ConstantUtils.BD_SECRET_KEY;
+ String getAccessTokenUrl = authHost
+ // 1. grant_type为固定参数
+ + "grant_type=client_credentials"
+ // 2. 官网获取的 API Key
+ + "&client_id=" + ak
+ // 3. 官网获取的 Secret Key
+ + "&client_secret=" + sk;
+ try {
+ URL realUrl = new URL(getAccessTokenUrl);
+ // 打开和URL之间的连接
+ HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
+ connection.setRequestMethod("GET");
+ connection.connect();
+ // 获取所有响应头字段
+ Map> map = connection.getHeaderFields();
+ // 遍历所有的响应头字段
+ for (String key : map.keySet()) {
+ System.err.println(key + "--->" + map.get(key));
+ }
+ // 定义 BufferedReader输入流来读取URL的响应
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String result = "";
+ String line;
+ while ((line = in.readLine()) != null) {
+ result += line;
+ }
+ /**
+ * 返回结果示例
+ */
+// System.err.println("result:" + result);
+ JSONObject jsonObject = new JSONObject(result);
+ String access_token = jsonObject.getString("access_token");
+// Logger.d(access_token);
+ return access_token;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/PickerAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/PickerAdapter.java
new file mode 100644
index 0000000..defeb3f
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/PickerAdapter.java
@@ -0,0 +1,42 @@
+package com.example.ninefourone.nutritionmaster.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.example.ninefourone.nutritionmaster.R;
+
+import java.util.ArrayList;
+
+/**
+ * Created by ScorpioMiku on 2018/10/5.
+ */
+
+public class PickerAdapter extends RecyclerView.Adapter {
+ private ArrayList list;
+ private Context context;
+
+ public PickerAdapter(ArrayList list, Context context) {
+ super();
+ this.list = list;
+ this.context = context;
+ }
+
+ @Override
+ public PickerHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(context).inflate(R.layout.picker_item, parent, false);
+ return new PickerHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(PickerHolder holder, int position) {
+ holder.bindView(list.get(position));
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/PickerHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/PickerHolder.java
new file mode 100644
index 0000000..2d06438
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/PickerHolder.java
@@ -0,0 +1,28 @@
+package com.example.ninefourone.nutritionmaster.adapter;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+import com.example.ninefourone.nutritionmaster.R;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+/**
+ * Created by ScorpioMiku on 2018/10/5.
+ */
+
+public class PickerHolder extends RecyclerView.ViewHolder {
+ @BindView(R.id.picker_item)
+ TextView pickerItem;
+
+ public PickerHolder(View itemView) {
+ super(itemView);
+ ButterKnife.bind(this, itemView);
+ }
+
+ public void bindView(String text) {
+ pickerItem.setText(text);
+ }
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListAdapter.java
new file mode 100644
index 0000000..b4cf8b1
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListAdapter.java
@@ -0,0 +1,51 @@
+package com.example.ninefourone.nutritionmaster.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.example.ninefourone.nutritionmaster.NutritionMaster;
+import com.example.ninefourone.nutritionmaster.R;
+import com.example.ninefourone.nutritionmaster.bean.ClassifyResult;
+import com.example.ninefourone.nutritionmaster.modules.classifyresult.DishResultActivity;
+import com.example.ninefourone.nutritionmaster.utils.CalculateUtils;
+
+import java.util.ArrayList;
+
+import travel.ithaka.android.horizontalpickerlib.PickerLayoutManager;
+
+/**
+ * Created by ScorpioMiku on 2018/10/5.
+ */
+
+public class ResultListAdapter extends RecyclerView.Adapter {
+ private ArrayList mList;
+ private Context context;
+ private PickerLayoutManager pickerLayoutManager;
+
+ public ResultListAdapter(ArrayList list, Context context) {
+ super();
+ mList = list;
+ this.context = context;
+ mList = CalculateUtils.getDishQuantity(mList, NutritionMaster.user);
+ }
+
+ @Override
+ public ResultListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(context).inflate(R.layout.dish_result_item, parent, false);
+ pickerLayoutManager = new PickerLayoutManager(context, PickerLayoutManager.HORIZONTAL, false);
+ return new ResultListHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(ResultListHolder holder, int position) {
+ holder.bindView(mList.get(position), pickerLayoutManager, (DishResultActivity) context, position);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mList.size();
+ }
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java
new file mode 100644
index 0000000..b5c578a
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/ResultListHolder.java
@@ -0,0 +1,71 @@
+package com.example.ninefourone.nutritionmaster.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.LinearSnapHelper;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.SnapHelper;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.example.ninefourone.nutritionmaster.R;
+import com.example.ninefourone.nutritionmaster.bean.ClassifyResult;
+import com.example.ninefourone.nutritionmaster.modules.classifyresult.DishResultActivity;
+import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
+import com.example.ninefourone.nutritionmaster.utils.MessageUtils;
+import com.github.siyamed.shapeimageview.CircularImageView;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import travel.ithaka.android.horizontalpickerlib.PickerLayoutManager;
+
+/**
+ * Created by ScorpioMiku on 2018/10/5.
+ */
+
+public class ResultListHolder extends RecyclerView.ViewHolder {
+ @BindView(R.id.image)
+ ImageView image;
+ @BindView(R.id.name)
+ TextView name;
+ @BindView(R.id.picker)
+ RecyclerView picker;
+
+ private PickerAdapter pickerAdapter;
+ private Context context;
+
+ public ResultListHolder(View itemView) {
+ super(itemView);
+ ButterKnife.bind(this, itemView);
+ context = itemView.getContext();
+ }
+
+ public void bindView(ClassifyResult classifyResult, PickerLayoutManager pickerLayoutManager,
+ final DishResultActivity dishResultActivity,final int position) {
+ pickerLayoutManager.setChangeAlpha(true);
+ pickerLayoutManager.setScaleDownBy(0.99f);
+ pickerLayoutManager.setScaleDownDistance(0.8f);
+ picker.setLayoutManager(pickerLayoutManager);
+ SnapHelper snapHelper = new LinearSnapHelper();
+ snapHelper.attachToRecyclerView(picker);
+ pickerAdapter = new PickerAdapter(ConstantUtils.dishPicerData, context);
+ picker.setAdapter(pickerAdapter);
+ picker.setNestedScrollingEnabled(false);
+ picker.scrollToPosition(48);
+ picker.smoothScrollBy(10, 0);
+
+ pickerLayoutManager.setOnScrollStopListener(new PickerLayoutManager.onScrollStopListener() {
+ @Override
+ public void selectedView(View view) {
+ String text = ((TextView) view).getText().toString();
+// MessageUtils.MakeToast(text);
+ dishResultActivity.refreshData(Integer.valueOf(text),position);
+ }
+ });
+
+
+ name.setText(classifyResult.getName());
+ Glide.with(context).load("http://s2.boohee.cn/house/food_big/big_photo20155149534910631.jpg").into(image);
+ }
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java
index 614d9e1..c86a8c3 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java
@@ -6,6 +6,7 @@ import android.support.v7.app.AppCompatActivity;
import com.example.ninefourone.nutritionmaster.NutritionMaster;
import com.example.ninefourone.nutritionmaster.bean.MyUser;
+import com.example.ninefourone.nutritionmaster.utils.WebUtil;
import com.orhanobut.logger.Logger;
import butterknife.ButterKnife;
@@ -18,6 +19,7 @@ import butterknife.Unbinder;
public abstract class BaseActivity extends AppCompatActivity {
private Unbinder unbinder;
protected MyUser user;
+ private WebUtil webUtil;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -26,10 +28,13 @@ public abstract class BaseActivity extends AppCompatActivity {
setContentView(getLayoutId());
unbinder = ButterKnife.bind(this);
initViews(savedInstanceState);
+ webUtil = new WebUtil();
initToolBar();
-
}
+ public WebUtil getWebUtil() {
+ return webUtil;
+ }
/**
* 设置布局layout
@@ -94,7 +99,7 @@ public abstract class BaseActivity extends AppCompatActivity {
protected void upUser() {
NutritionMaster.user = user;
- Logger.d("用户信息已改"+NutritionMaster.user.toString());
+ Logger.d("用户信息已改" + NutritionMaster.user.toString());
}
@Override
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java
index fb21713..5b30d8f 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java
@@ -11,6 +11,7 @@ import android.view.ViewGroup;
import com.example.ninefourone.nutritionmaster.NutritionMaster;
import com.example.ninefourone.nutritionmaster.bean.MyUser;
+import com.example.ninefourone.nutritionmaster.utils.WebUtil;
import com.orhanobut.logger.Logger;
import butterknife.ButterKnife;
@@ -27,6 +28,8 @@ public abstract class BaseFragment extends Fragment {
protected boolean isPrepared;
protected boolean isVisible;
private Unbinder unbinder;
+ private WebUtil webUtil;
+
public abstract
@LayoutRes
@@ -44,10 +47,15 @@ public abstract class BaseFragment extends Fragment {
super.onViewCreated(view, savedInstanceState);
unbinder = ButterKnife.bind(this, view);
initView(savedInstanceState);
+ webUtil = new WebUtil();
this.user = NutritionMaster.user;
}
+ public WebUtil getWebUtil() {
+ return webUtil;
+ }
+
/**
* 初始化自己的ui
*
@@ -157,7 +165,7 @@ public abstract class BaseFragment extends Fragment {
protected void upUser() {
NutritionMaster.user = user;
- Logger.d("用户信息已改"+NutritionMaster.user.toString());
+ Logger.d("用户信息已改" + NutritionMaster.user.toString());
}
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java
new file mode 100644
index 0000000..93ec75c
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java
@@ -0,0 +1,107 @@
+package com.example.ninefourone.nutritionmaster.bean;
+
+import com.example.ninefourone.nutritionmaster.utils.WebUtil;
+import com.google.gson.Gson;
+import com.orhanobut.logger.Logger;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Response;
+
+/**
+ * Created by ScorpioMiku on 2018/10/4.
+ */
+
+public class ClassifyResult implements Serializable {
+
+ private String imgPath;
+ private double probability;
+ private String name;
+ private double calorie;
+ private Boolean has_calorie;
+ private double quantity = -1;
+ private FoodMenu foodMenu;
+
+
+ public void getMenu() {
+ WebUtil webUtil = new WebUtil();
+ webUtil.getMenu("素红烧肉", new Callback() {
+ @Override
+ public void onFailure(Call call, IOException e) {
+ name = "-1";
+ Logger.e("我们数据库没有这个菜");
+ }
+
+ @Override
+ public void onResponse(Call call, Response response) throws IOException {
+ FoodMenu menu = new Gson().fromJson(response.body().string(), FoodMenu.class);
+ foodMenu = menu;
+ Logger.d(name + "|" + menu);
+ }
+ });
+ }
+
+ public FoodMenu getFoodMenu() {
+ return foodMenu;
+ }
+
+ public void setFoodMenu(FoodMenu foodMenu) {
+ this.foodMenu = foodMenu;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(double quantity) {
+ this.quantity = quantity;
+ }
+
+ public String getImgPath() {
+ return imgPath;
+ }
+
+ public void setImgPath(String imgPath) {
+ this.imgPath = imgPath;
+ }
+
+ public double getProbability() {
+ return probability;
+ }
+
+ public void setProbability(double probability) {
+ this.probability = probability;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getCalorie() {
+ return calorie;
+ }
+
+ public void setCalorie(double calorie) {
+ this.calorie = calorie;
+ }
+
+ public Boolean getHas_calorie() {
+ return has_calorie;
+ }
+
+ public void setHas_calorie(Boolean has_calorie) {
+ this.has_calorie = has_calorie;
+ }
+
+ @Override
+ public String toString() {
+ return name + ";置信度" + probability + ";卡路里" + calorie;
+ }
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java
index 46aaf55..b8e243f 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenu.java
@@ -1,9 +1,9 @@
package com.example.ninefourone.nutritionmaster.bean;
+import java.io.Serializable;
import java.util.List;
-public class FoodMenu {
-
+public class FoodMenu implements Serializable {
/**
* flavor : 五香味
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java
index 2043ab3..8cd6815 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java
@@ -52,6 +52,11 @@ public class MyUser {
private List> user_permissions;
private List> illness;
+ public MyUser() {
+ height = new Integer(0);
+ occupation_name = "";
+ }
+
@Override
public String toString() {
return "MyUser{" +
@@ -80,11 +85,11 @@ public class MyUser {
'}';
}
- public int getId() {
+ public Integer getId() {
return id;
}
- public void setId(int id) {
+ public void setId(Integer id) {
this.id = id;
}
@@ -120,11 +125,11 @@ public class MyUser {
this.last_login = last_login;
}
- public boolean isIs_superuser() {
+ public Boolean getIs_superuser() {
return is_superuser;
}
- public void setIs_superuser(boolean is_superuser) {
+ public void setIs_superuser(Boolean is_superuser) {
this.is_superuser = is_superuser;
}
@@ -160,19 +165,19 @@ public class MyUser {
this.email = email;
}
- public boolean isIs_staff() {
+ public Boolean getIs_staff() {
return is_staff;
}
- public void setIs_staff(boolean is_staff) {
+ public void setIs_staff(Boolean is_staff) {
this.is_staff = is_staff;
}
- public boolean isIs_active() {
+ public Boolean getIs_active() {
return is_active;
}
- public void setIs_active(boolean is_active) {
+ public void setIs_active(Boolean is_active) {
this.is_active = is_active;
}
@@ -184,43 +189,43 @@ public class MyUser {
this.date_joined = date_joined;
}
- public int getSex() {
+ public Integer getSex() {
return sex;
}
- public void setSex(int sex) {
+ public void setSex(Integer sex) {
this.sex = sex;
}
- public int getAge() {
+ public Integer getAge() {
return age;
}
- public void setAge(int age) {
+ public void setAge(Integer age) {
this.age = age;
}
- public int getHeight() {
+ public Integer getHeight() {
return height;
}
- public void setHeight(int height) {
+ public void setHeight(Integer height) {
this.height = height;
}
- public int getWeight() {
+ public Integer getWeight() {
return weight;
}
- public void setWeight(int weight) {
+ public void setWeight(Integer weight) {
this.weight = weight;
}
- public int getBmi() {
+ public Integer getBmi() {
return bmi;
}
- public void setBmi(int bmi) {
+ public void setBmi(Integer bmi) {
this.bmi = bmi;
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ResultList.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ResultList.java
new file mode 100644
index 0000000..b4650dd
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ResultList.java
@@ -0,0 +1,39 @@
+package com.example.ninefourone.nutritionmaster.bean;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * Created by ScorpioMiku on 2018/10/5.
+ */
+
+public class ResultList implements Serializable {
+
+ private ArrayList results;
+
+ public ResultList(ArrayList results) {
+ super();
+ this.results = results;
+ }
+
+ public ArrayList getResults() {
+ return results;
+ }
+
+ public void setResults(ArrayList results) {
+ this.results = results;
+ }
+
+ /**
+ * 用于Intent传递
+ */
+
+ @Override
+ public String toString() {
+ String log = "";
+ for (int i = 0; i < results.size(); i++) {
+ log += results.get(i).getName() + ";卡路里" +results.get(i).getCalorie() + "\n";
+ }
+ return log;
+ }
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java
similarity index 56%
rename from app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java
rename to app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java
index 0c15f16..dcbe994 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/FoodMaterialCamera.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java
@@ -2,12 +2,13 @@ package com.example.ninefourone.nutritionmaster.camera;
import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
-import android.view.Display;
+import android.util.Base64;
import android.view.Surface;
import android.view.View;
import android.view.Window;
@@ -17,9 +18,20 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.example.ninefourone.nutritionmaster.R;
+import com.example.ninefourone.nutritionmaster.bean.ClassifyResult;
+import com.example.ninefourone.nutritionmaster.modules.classifyresult.DishResultActivity;
+import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
import com.example.ninefourone.nutritionmaster.utils.MessageUtils;
+import com.example.ninefourone.nutritionmaster.utils.WebUtil;
import com.orhanobut.logger.Logger;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
@@ -28,7 +40,11 @@ import butterknife.OnClick;
* Created by ScorpioMiku on 2018/9/3.
*/
-public class FoodMaterialCamera extends AppCompatActivity {
+public class ClassifierCamera extends AppCompatActivity {
+
+ public static int MATERAIL_CODE = 0;
+ public static int DISH_CODE = 1;
+
@BindView(R.id.camera_preview)
FrameLayout mCameraLayout;
@BindView(R.id.results_text_view)
@@ -37,20 +53,22 @@ public class FoodMaterialCamera extends AppCompatActivity {
ImageView moreTakePhotoButtonCapture;
@BindView(R.id.more_takephoto_ok)
ImageView moreTakephotoOk;
- @BindView(R.id.more_camera_cover_linearlayout)
- FrameLayout moreCameraCoverLinearlayout;
+ @BindView(R.id.camera_cover_linearlayout)
+ FrameLayout cameraCoverLinearlayout;
private Camera mCamera;
private CameraPreview mPreview;
private int mCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
- private int widthPixel;
- private float heightPixel;
+ private ArrayList resultList = new ArrayList<>();
+
+ private int code = -1;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ Intent intent = getIntent();
+ code = intent.getIntExtra("CODE", -1);
//取消toolbar
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置全屏
@@ -59,9 +77,6 @@ public class FoodMaterialCamera extends AppCompatActivity {
//注意:上面两个设置必须写在setContentView前面
setContentView(R.layout.cameras_layout);
ButterKnife.bind(this);
- Display display = getWindowManager().getDefaultDisplay();
- widthPixel = display.getWidth();
- heightPixel = display.getHeight() * (14.0f / 16);
if (!checkCameraHardware(this)) {
MessageUtils.MakeToast("不支持相机");
@@ -101,13 +116,6 @@ public class FoodMaterialCamera extends AppCompatActivity {
if (null == mCamera) {
mCamera = getCameraInstance();
mPreview = new CameraPreview(this, mCamera);
-// mPreview.setOnTouchListener(new View.OnTouchListener() {
-// @Override
-// public boolean onTouch(View v, MotionEvent event) {
-// mCamera.autoFocus(null);
-// return false;
-// }
-// });
mCameraLayout.addView(mPreview);
mCamera.startPreview();
}
@@ -124,8 +132,10 @@ public class FoodMaterialCamera extends AppCompatActivity {
c = Camera.open();
Camera.Parameters mParameters = c.getParameters();
- Logger.d(widthPixel+", "+heightPixel);
- mParameters.setPictureSize(widthPixel, (int) heightPixel);
+ List sizes = mParameters.getSupportedPreviewSizes();
+
+ mParameters.setPictureSize(2048, 1536);
+ mParameters.setPreviewSize(2048, 1536);
c.setParameters(mParameters);
} catch (Exception e) {
e.printStackTrace();
@@ -152,7 +162,46 @@ public class FoodMaterialCamera extends AppCompatActivity {
private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(final byte[] data, Camera camera) {
- MessageUtils.MakeToast("拍照!");
+ try {
+ String imgStr = Base64.encodeToString(data, Base64.DEFAULT);
+ String imgParam = URLEncoder.encode(imgStr, "UTF-8");
+ final String param = "image=" + imgParam + "&top_num=" + 1;
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ String result = null;
+ try {
+ if (code == 0) {
+ result = WebUtil.HttpPost(ConstantUtils.BD_DISH_URL,
+ ConstantUtils.BD_ACCESS_TOKEN, param);
+ } else if (code == 1) {
+ result = WebUtil.HttpPost(ConstantUtils.BD_DISH_URL,
+ ConstantUtils.BD_ACCESS_TOKEN, param);
+ } else {
+ Logger.e("拍照code为-1");
+ }
+ JSONObject jsonObject = new JSONObject(result);
+ ClassifyResult classifyResult = new ClassifyResult();
+ JSONArray resultObject = jsonObject.getJSONArray("result");
+ jsonObject = resultObject.getJSONObject(0);
+ classifyResult.setCalorie(jsonObject.getInt("calorie"));
+ classifyResult.setHas_calorie(jsonObject.getBoolean("has_calorie"));
+ classifyResult.setProbability(jsonObject.getDouble("probability"));
+ classifyResult.setName(jsonObject.getString("name"));
+ classifyResult.getMenu();
+// Logger.d(classifyResult);
+ resultList.add(classifyResult);
+ refreshUI();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ thread.start();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+// MessageUtils.MakeToast("拍照!");
mCamera.startPreview();
}
};
@@ -168,8 +217,16 @@ public class FoodMaterialCamera extends AppCompatActivity {
switch (view.getId()) {
case R.id.more_take_photo_button_capture:
mCamera.autoFocus(mAutoFocusCallback);
+ cameraCoverLinearlayout.setVisibility(View.VISIBLE);
break;
case R.id.more_takephoto_ok:
+ Intent intent = new Intent(ClassifierCamera.this, DishResultActivity.class);
+ intent.putExtra("LIST", resultList);
+// intent.putExtra("LIST", ConstantUtils.testData);
+ startActivity(intent);
+ resultList.clear();
+ refreshUI();
+ finish();
break;
}
}
@@ -209,4 +266,19 @@ public class FoodMaterialCamera extends AppCompatActivity {
}
camera.setDisplayOrientation(result);
}
+
+
+ private void refreshUI() {
+ resultsTextView.post(new Runnable() {
+ @Override
+ public void run() {
+ String text = "";
+ for (int i = 0; i < resultList.size(); i++) {
+ text += resultList.get(i).getName() + " ";
+ }
+ resultsTextView.setText(text);
+ cameraCoverLinearlayout.setVisibility(View.INVISIBLE);
+ }
+ });
+ }
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/cardconfig/CardItemTouchCallBack.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/cardconfig/CardItemTouchCallBack.java
index 6fd06c0..0f26040 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/cardconfig/CardItemTouchCallBack.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/cardconfig/CardItemTouchCallBack.java
@@ -211,11 +211,11 @@ public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
*/
@Override
public float getSwipeEscapeVelocity(float defaultValue) {
- Log.d(TAG, "getSwipeEscapeVelocity: " + defaultValue);
- View topView = mRecyclerView.getChildAt(mRecyclerView.getChildCount() - 1);
- if (isUpOrDown(topView)) { //如果是向上或者向下滑动
- return Float.MAX_VALUE; //就返回阈值为很大
- }
+// Log.d(TAG, "getSwipeEscapeVelocity: " + defaultValue);
+// View topView = mRecyclerView.getChildAt(mRecyclerView.getChildCount() - 1);
+// if (isUpOrDown(topView)) { //如果是向上或者向下滑动
+// return Float.MAX_VALUE; //就返回阈值为很大
+// }
return super.getSwipeEscapeVelocity(defaultValue);
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java
index 2ee2ccd..9ff6cac 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java
@@ -19,13 +19,12 @@ import android.widget.TextView;
import com.ToxicBakery.viewpager.transforms.CubeOutTransformer;
import com.akexorcist.roundcornerprogressbar.RoundCornerProgressBar;
-import com.bumptech.glide.Glide;
import com.cb.ratingbar.CBRatingBar;
import com.example.ninefourone.nutritionmaster.NutritionMaster;
import com.example.ninefourone.nutritionmaster.R;
import com.example.ninefourone.nutritionmaster.adapter.HomePagerAdapter;
import com.example.ninefourone.nutritionmaster.base.BaseActivity;
-import com.example.ninefourone.nutritionmaster.camera.FoodMaterialCamera;
+import com.example.ninefourone.nutritionmaster.camera.ClassifierCamera;
import com.example.ninefourone.nutritionmaster.modules.addinformation.AddInformationActivity;
import com.example.ninefourone.nutritionmaster.modules.addinformation.AddPhysiqueActivity;
import com.example.ninefourone.nutritionmaster.modules.information.InformationActivity;
@@ -316,14 +315,24 @@ public class MainActivity extends BaseActivity {
@Override
public void onBoomButtonClick(int index) {
Intent cameraIntent = new Intent(MainActivity.this,
- FoodMaterialCamera.class);
+ ClassifierCamera.class);
+ cameraIntent.putExtra("CODE", ClassifierCamera.MATERAIL_CODE);
startActivity(cameraIntent);
}
});
boomMenuButton.addBuilder(builder);
HamButton.Builder builder2 = new HamButton.Builder()
.normalImageRes(R.drawable.foods)
- .normalTextRes(R.string.food_title);
+ .normalTextRes(R.string.food_title)
+ .listener(new OnBMClickListener() {
+ @Override
+ public void onBoomButtonClick(int index) {
+ Intent cameraIntent = new Intent(MainActivity.this,
+ ClassifierCamera.class);
+ cameraIntent.putExtra("CODE", ClassifierCamera.DISH_CODE);
+ startActivity(cameraIntent);
+ }
+ });
boomMenuButton.addBuilder(builder2);
}
@@ -332,7 +341,7 @@ public class MainActivity extends BaseActivity {
* 初始化个人信息界面(UI)
*/
private void initInforView() {
-// Logger.d(NutritionMaster.user.toString());
+
adderInfor.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
if (NutritionMaster.user.getHeight() != 0) {
showInformation.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java
index dc112fe..b1fc259 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddInformationActivity.java
@@ -15,6 +15,7 @@ import com.example.ninefourone.nutritionmaster.R;
import com.example.ninefourone.nutritionmaster.base.BaseActivity;
import com.example.ninefourone.nutritionmaster.bean.MyUser;
import com.example.ninefourone.nutritionmaster.modules.MainActivity;
+import com.example.ninefourone.nutritionmaster.utils.CalculateUtils;
import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
import com.example.ninefourone.nutritionmaster.utils.MessageUtils;
@@ -148,14 +149,14 @@ public class AddInformationActivity extends BaseActivity {
public void onClick(View v) {
if (ageTextView.getText().toString().equals("年龄") || weightTextView.getText().toString().equals("体重")
- || sexTextView.getText().toString().equals("性别") || heightTextView.getText().toString().equals("身高")||
+ || sexTextView.getText().toString().equals("性别") || heightTextView.getText().toString().equals("身高") ||
occupationTextView.getText().toString().equals("职业")) {
MessageUtils.MakeToast("请点击图片填写所有信息");
} else {
user.setHeight(Integer.valueOf(heightTextView.getText().toString().split("c")[0]));
user.setWeight(Integer.valueOf(weightTextView.getText().toString().split("k")[0]));
user.setAge(Integer.valueOf(ageTextView.getText().toString().split("岁")[0]));
- user.setSex(sexTextView.getText().toString());
+ user.setSex(CalculateUtils.sex2int(sexTextView.getText().toString()));
user.setOccupation_name(occupationTextView.getText().toString());
upUser();
MessageUtils.MakeToast("信息填写成功");
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java
index cb99a0b..948a867 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/addinformation/AddPhysiqueActivity.java
@@ -390,7 +390,7 @@ public class AddPhysiqueActivity extends BaseActivity {
phy.setMentality(ConstantUtils.physiquesMentalitys[maxIndex]);
phy.setMatters(ConstantUtils.physiquesMatters[maxIndex]);
phy.setImageUrl(ConstantUtils.physiquesImageUrls[maxIndex]);
- user.setPhysique(phy);
+ user.setPhysical_name(physique);
upUser();
loadInformation(phy);
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java
new file mode 100644
index 0000000..7a9a3f6
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/classifyresult/DishResultActivity.java
@@ -0,0 +1,100 @@
+package com.example.ninefourone.nutritionmaster.modules.classifyresult;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.example.ninefourone.nutritionmaster.R;
+import com.example.ninefourone.nutritionmaster.adapter.ResultListAdapter;
+import com.example.ninefourone.nutritionmaster.base.BaseActivity;
+import com.example.ninefourone.nutritionmaster.bean.ClassifyResult;
+import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
+import com.orhanobut.logger.Logger;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import butterknife.BindView;
+
+public class DishResultActivity extends BaseActivity {
+
+ @BindView(R.id.recycler_view)
+ RecyclerView recyclerView;
+ @BindView(R.id.calorie)
+ TextView calorie;
+ @BindView(R.id.suger)
+ TextView suger;
+ @BindView(R.id.fat)
+ TextView fat;
+ @BindView(R.id.protein)
+ TextView protein;
+ @BindView(R.id.ok_button)
+ Button okButton;
+
+
+ private ArrayList results;
+ private ResultListAdapter resultListAdapter;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.activity_dish_result;
+ }
+
+ @Override
+ public void initViews(Bundle savedInstanceState) {
+ Intent intent = getIntent();
+ results = (ArrayList) intent.getSerializableExtra("LIST");
+// for (int i = 0; i < results.size(); i++) {
+// Logger.d(results.get(i));
+// }
+ results = ConstantUtils.testData;
+ resultListAdapter = new ResultListAdapter(results, this);
+ recyclerView.setAdapter(resultListAdapter);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ }
+
+ @Override
+ public void initToolBar() {
+
+ }
+
+ @Override
+ public void onPointerCaptureChanged(boolean hasCapture) {
+
+ }
+
+ /**
+ * 能量根据选择的来变
+ *
+ * @param quantity
+ */
+ public void refreshData(int quantity, int positon) {
+ float calorieSum = 0;
+ float fatSum = 0;
+ float sugarSum = 0;
+ float proteinSum = 0;
+ ClassifyResult temp = results.get(positon);
+ temp.setQuantity(quantity);
+ results.set(positon, temp);
+ for (int i = 0; i < results.size(); i++) {
+ calorieSum += results.get(i).getCalorie() * results.get(i).getQuantity() / 100;
+ fatSum += results.get(i).getCalorie() * results.get(i).getQuantity() / 100;
+ calorieSum += results.get(i).getCalorie() * results.get(i).getQuantity() / 100;
+ calorieSum += results.get(i).getCalorie() * results.get(i).getQuantity() / 100;
+ }
+ calorie.setText((int)calorieSum + "");
+ protein.setText((int)proteinSum + "");
+ fat.setText((int)fatSum + "");
+ suger.setText((int)sugarSum + "");
+ }
+
+}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/information/InformationActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/information/InformationActivity.java
index 021a437..a0c7de7 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/information/InformationActivity.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/information/InformationActivity.java
@@ -1,15 +1,32 @@
package com.example.ninefourone.nutritionmaster.modules.information;
-import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.widget.ImageView;
+import android.widget.TextView;
import com.example.ninefourone.nutritionmaster.R;
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+
public class InformationActivity extends AppCompatActivity {
+ @BindView(R.id.back_button)
+ ImageView backButton;
+ @BindView(R.id.title_text)
+ TextView titleText;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_information);
+ ButterKnife.bind(this);
+ }
+
+ @OnClick(R.id.back_button)
+ public void onViewClicked() {
+ finish();
}
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java
index 4791a8a..a8fb445 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/customization/CustomizationActivity.java
@@ -1,18 +1,52 @@
package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.LinearLayout;
import android.widget.TextView;
import com.example.ninefourone.nutritionmaster.R;
import com.example.ninefourone.nutritionmaster.base.BaseActivity;
+import com.example.ninefourone.nutritionmaster.bean.FoodMenu;
import com.orhanobut.logger.Logger;
+import java.util.ArrayList;
+
import butterknife.BindView;
import butterknife.ButterKnife;
+import butterknife.OnClick;
public class CustomizationActivity extends BaseActivity {
+ @BindView(R.id.breakfast_energy_text)
+ TextView breakfastEnergyText;
+ @BindView(R.id.breakfast_recycler_view)
+ RecyclerView breakfastRecyclerView;
+ @BindView(R.id.lunch_energy_text)
+ TextView lunchEnergyText;
+ @BindView(R.id.lunch_recycler_view)
+ RecyclerView lunchRecyclerView;
+ @BindView(R.id.dinner_energy_text)
+ TextView dinnerEnergyText;
+ @BindView(R.id.dinner_recycler_view)
+ RecyclerView dinnerRecyclerView;
+ @BindView(R.id.calorie_text)
+ TextView calorieText;
+ @BindView(R.id.fat_text)
+ TextView fatText;
+ @BindView(R.id.suger_text)
+ TextView sugerText;
+ @BindView(R.id.protein_text)
+ TextView proteinText;
+ @BindView(R.id.change_button)
+ LinearLayout changeButton;
+ @BindView(R.id.copy_button)
+ LinearLayout copyButton;
+
+ private ArrayList breakfastList = new ArrayList<>();
+ private ArrayList lunchList = new ArrayList<>();
+ private ArrayList dinnerList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -27,6 +61,7 @@ public class CustomizationActivity extends BaseActivity {
@Override
public void initViews(Bundle savedInstanceState) {
+ loadData();
String text = getIntent().getStringExtra("SEND_CODE");
Logger.d(text);
}
@@ -40,4 +75,20 @@ public class CustomizationActivity extends BaseActivity {
public void onPointerCaptureChanged(boolean hasCapture) {
}
+
+ @Override
+ public void loadData() {
+ super.loadData();
+
+ }
+
+ @OnClick({R.id.change_button, R.id.copy_button})
+ public void onViewClicked(View view) {
+ switch (view.getId()) {
+ case R.id.change_button:
+ break;
+ case R.id.copy_button:
+ break;
+ }
+ }
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java
index 301f33e..44c10b9 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java
@@ -15,6 +15,7 @@ import com.example.ninefourone.nutritionmaster.base.BaseFragment;
import com.example.ninefourone.nutritionmaster.bean.RecommendFood;
import com.orhanobut.logger.Logger;
+import java.io.IOException;
import java.util.ArrayList;
import android.view.LayoutInflater;
@@ -22,6 +23,9 @@ import android.view.LayoutInflater;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Response;
/**
* Created by ScorpioMiku on 2018/8/26.
@@ -84,20 +88,12 @@ public class RecommendFragment extends BaseFragment {
recyclerView.postDelayed(new Runnable() {
@Override
public void run() {
-
- Logger.d("加载数据");
- for (int i = 0; i < 6; i++) {
- RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", indexs[i % 4]);
- adapter.getData().add(recommendFood);
- }
- adapter.loadMoreComplete();
-// Logger.d("开始加载");
+ addData();
}
}, 1000);
}
}, recyclerView);
-// adapter.disableLoadMoreIfNotFullPage();
adapter.setEnableLoadMore(true);
adapter.setHeaderView(LayoutInflater.from(getContext()).
inflate(R.layout.recommend_head, (ViewGroup) recyclerView.getParent(), false));
@@ -126,17 +122,42 @@ public class RecommendFragment extends BaseFragment {
}
/**
- * 加载数据
+ * 初始化数据
+ * 病 、 体质 、 职业
+ * 0-4 5-7 8-10
*/
@Override
protected void loadData() {
super.loadData();
for (int i = 0; i < 11; i++) {
- RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", indexs[i % 4]);
+ int flag = indexs[i % 4];
+ RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag);
datas.add(recommendFood);
+// if (flag == 2) {
+//
+// } else {
+//
+// }
}
}
+ /**
+ * 加载新数据
+ */
+ private void addData() {
+// Logger.d("加载数据");
+ for (int i = 0; i < 7; i++) {
+ int flag = indexs[i % 4];
+ if (flag == 2) {
+
+ } else {
+ RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag);
+ adapter.getData().add(recommendFood);
+ }
+ }
+ adapter.loadMoreComplete();
+ }
+
/**
* 判断数据是否加载完了(服务器没了)
*
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java
index a17fe70..89bf5ac 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/CalculateUtils.java
@@ -1,7 +1,10 @@
package com.example.ninefourone.nutritionmaster.utils;
+import com.example.ninefourone.nutritionmaster.bean.ClassifyResult;
+import com.example.ninefourone.nutritionmaster.bean.MyUser;
import com.orhanobut.logger.Logger;
+import java.util.ArrayList;
import java.util.Calendar;
/**
@@ -69,7 +72,47 @@ public class CalculateUtils {
*/
public static int getWeek() {
Calendar calendar = Calendar.getInstance();
- Logger.d( calendar.get(Calendar.DAY_OF_WEEK));
- return calendar.get(Calendar.DAY_OF_WEEK)-1;
+// Logger.d( calendar.get(Calendar.DAY_OF_WEEK));
+ return calendar.get(Calendar.DAY_OF_WEEK) - 1;
+ }
+
+ /**
+ * 性别转数字
+ * @param sex
+ * @return
+ */
+ public static int sex2int(String sex) {
+ if (sex.equals("男")) {
+ return 1;
+ } else if (sex.equals("女")) {
+ return 0;
+ } else {
+ Logger.e("不男不女");
+ return 1;
+ }
+ }
+
+ /**
+ * 计算每个食物吃多少
+ *
+ * @param classifyResultArrayList
+ * @param user
+ * @return
+ */
+
+ public static ArrayList getDishQuantity(
+ ArrayList classifyResultArrayList, MyUser user) {
+ double calorieSum = 0;
+ double[] calories = new double[classifyResultArrayList.size()];
+ double[] quantitys = new double[classifyResultArrayList.size()];
+ float baseQuantity = 600f;
+ for (int i = 0; i < classifyResultArrayList.size(); i++) {
+ calorieSum += classifyResultArrayList.get(i).getCalorie();
+ calories[i] = classifyResultArrayList.get(i).getCalorie();
+ }
+ for (int i = 0; i < classifyResultArrayList.size(); i++) {
+ classifyResultArrayList.get(i).setQuantity(calories[i] / calorieSum * baseQuantity);
+ }
+ return classifyResultArrayList;
}
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java
index 6a3767d..d2f842b 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/ConstantUtils.java
@@ -1,5 +1,7 @@
package com.example.ninefourone.nutritionmaster.utils;
+import com.example.ninefourone.nutritionmaster.bean.ClassifyResult;
+
import java.util.ArrayList;
/**
@@ -11,6 +13,7 @@ public class ConstantUtils {
public static String[] dailyDescibes = {"快乐陪周一", "幸运伴周二", "轻松有周三", "温馨携周四",
"愉悦同周五", "休闲找周六", "潇洒属周日"};
+
public static String arab2Chinese(int number) {
switch (number) {
case 1:
@@ -267,4 +270,32 @@ public class ConstantUtils {
"平和质人阴阳气血平衡,药膳调理不可偏补、贪补,以保持人体阴阳平衡状态最为紧要。所谓“不伤不扰,顺其自然”。"
};
+ public static String BD_API_KEY = "GQfoj7AUUhj67ocHuwvA8G5q";
+ public static String BD_APP_ID = "14346167";
+ public static String BD_SECRET_KEY = "EEXe6pG7QGVdrqDM8eR0S3RY2WPf4Gwn";
+ public static String BD_ACCESS_TOKEN = "";
+
+ public static String BD_DISH_URL = "https://aip.baidubce.com/rest/2.0/image-classify/v2/dish";
+
+ public static ArrayList testData = new ArrayList<>();
+
+ static {
+ for (int i = 0; i < 7; i++) {
+ ClassifyResult classifyResult = new ClassifyResult();
+ classifyResult.setName("酱肉丝" + i);
+ classifyResult.setProbability(0.5 + i);
+ classifyResult.setCalorie(274 + i * 10);
+ testData.add(classifyResult);
+ }
+ }
+
+ public static ArrayList dishPicerData = new ArrayList<>();
+
+ static {
+ for (int i = 0; i <= 700; i++) {
+ if (i % 2 == 0) {
+ dishPicerData.add(i + "");
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/MessageUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/MessageUtils.java
index 1da17e5..d0ec119 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/MessageUtils.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/MessageUtils.java
@@ -3,6 +3,9 @@ package com.example.ninefourone.nutritionmaster.utils;
import android.widget.Toast;
import com.example.ninefourone.nutritionmaster.NutritionMaster;
+import com.orhanobut.logger.Logger;
+
+import java.util.List;
/**
* Created by ScorpioMiku on 2018/8/26.
@@ -13,4 +16,6 @@ public class MessageUtils {
public static void MakeToast(String message) {
Toast.makeText(NutritionMaster.getInstance(), message, Toast.LENGTH_SHORT).show();
}
+
+
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java
similarity index 88%
rename from app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java
rename to app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java
index cd92de9..4fb70bd 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java
@@ -1,7 +1,21 @@
package com.example.ninefourone.nutritionmaster.utils;
import com.google.gson.Gson;
-import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
@@ -22,7 +36,7 @@ public class WebUtil {
private static WebUtil instance = new WebUtil();
private OkHttpClient mClient = new OkHttpClient();
- private WebUtil() {
+ public WebUtil() {
}
public static WebUtil getInstance() {
@@ -408,6 +422,54 @@ public class WebUtil {
mClient.newCall(request).enqueue(callback);
}
+ public static String HttpPost(String requestUrl, String accessToken, String params) throws Exception {
+ System.out.println(params);
+ String generalUrl = "";
+ generalUrl = requestUrl + "?access_token=" + accessToken;
+ System.out.println("发送的连接为:" + generalUrl);
+ URL url = new URL(generalUrl);
+ // 打开和URL之间的连接
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ System.out.println("打开链接,开始发送请求" + new Date().getTime() / 1000);
+ connection.setRequestMethod("POST");
+ // 设置通用的请求属性
+ connection.setRequestProperty("Content-Type", "application/json");
+ connection.setRequestProperty("Connection", "Keep-Alive");
+ connection.setUseCaches(false);
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+
+ // 得到请求的输出流对象
+ DataOutputStream out = new DataOutputStream(connection.getOutputStream());
+ out.writeBytes(params);
+ out.flush();
+ out.close();
+
+ // 建立实际的连接
+ connection.connect();
+ // 获取所有响应头字段
+ Map> headers = connection.getHeaderFields();
+ // 遍历所有的响应头字段
+ for (String key : headers.keySet()) {
+ System.out.println(key + "--->" + headers.get(key));
+ }
+ // 定义 BufferedReader输入流来读取URL的响应
+ BufferedReader in = null;
+ if (requestUrl.contains("nlp"))
+ in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
+ else
+ in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
+ String result = "";
+ String getLine;
+ while ((getLine = in.readLine()) != null) {
+ result += getLine;
+ }
+ in.close();
+ System.out.println("请求结束" + new Date().getTime() / 1000);
+ System.out.println("result:" + result);
+ return result;
+ }
+
public static void main(String[] args) {
Map params = new HashMap<>();
params.put("calorie", 100.0);
diff --git a/app/src/main/res/drawable/camera_bg.jpg b/app/src/main/res/drawable/camera_bg.jpg
new file mode 100644
index 0000000..d09ed63
Binary files /dev/null and b/app/src/main/res/drawable/camera_bg.jpg differ
diff --git a/app/src/main/res/drawable/ic_calorie.xml b/app/src/main/res/drawable/ic_calorie.xml
new file mode 100644
index 0000000..f627574
--- /dev/null
+++ b/app/src/main/res/drawable/ic_calorie.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_copy.xml b/app/src/main/res/drawable/ic_copy.xml
index fc173d3..224926c 100644
--- a/app/src/main/res/drawable/ic_copy.xml
+++ b/app/src/main/res/drawable/ic_copy.xml
@@ -1,6 +1,6 @@
-
-
-
+
+
+
diff --git a/app/src/main/res/drawable/ic_exchange_customization.xml b/app/src/main/res/drawable/ic_exchange_customization.xml
index a89b3d5..a4cad63 100644
--- a/app/src/main/res/drawable/ic_exchange_customization.xml
+++ b/app/src/main/res/drawable/ic_exchange_customization.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_fat.xml b/app/src/main/res/drawable/ic_fat.xml
new file mode 100644
index 0000000..371ee5d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_fat.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_ok.xml b/app/src/main/res/drawable/ic_ok.xml
index 400fd38..0d40b66 100644
--- a/app/src/main/res/drawable/ic_ok.xml
+++ b/app/src/main/res/drawable/ic_ok.xml
@@ -1,4 +1,5 @@
-
+
+
diff --git a/app/src/main/res/drawable/ic_protein.xml b/app/src/main/res/drawable/ic_protein.xml
new file mode 100644
index 0000000..f0a5460
--- /dev/null
+++ b/app/src/main/res/drawable/ic_protein.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_sugar.xml b/app/src/main/res/drawable/ic_sugar.xml
new file mode 100644
index 0000000..93f4f08
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sugar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_take_photo.xml b/app/src/main/res/drawable/ic_take_photo.xml
new file mode 100644
index 0000000..a9904b6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_take_photo.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_customization.xml b/app/src/main/res/layout/activity_customization.xml
index 0b4bd26..89e5af6 100644
--- a/app/src/main/res/layout/activity_customization.xml
+++ b/app/src/main/res/layout/activity_customization.xml
@@ -12,6 +12,7 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="11"
+ android:background="#eae8e8"
android:orientation="vertical">
+ android:text="早餐"
+ android:textColor="#fff"
+ android:textSize="17sp" />
+ android:layout_height="wrap_content"
+ android:background="#eae8e8">
+ android:text="午餐"
+ android:textColor="#fff"
+ android:textSize="17sp" />
+ android:layout_height="wrap_content"
+ android:background="#eae8e8">
+ android:text="晚餐"
+ android:textColor="#fff"
+ android:textSize="17sp" />
+ android:layout_height="wrap_content"
+ android:background="#eae8e8">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_dish_result.xml b/app/src/main/res/layout/activity_dish_result.xml
new file mode 100644
index 0000000..a2a3606
--- /dev/null
+++ b/app/src/main/res/layout/activity_dish_result.xml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/cameras_layout.xml b/app/src/main/res/layout/cameras_layout.xml
index 13a1e8d..03ec529 100644
--- a/app/src/main/res/layout/cameras_layout.xml
+++ b/app/src/main/res/layout/cameras_layout.xml
@@ -30,6 +30,8 @@
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
+ android:textColor="#fff"
+ android:textSize="18sp"
tools:text="@string/app_name" />
@@ -39,15 +41,15 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
- android:alpha="0.2"
- android:background="#8a515050">
+ android:alpha="0.5"
+ android:background="@drawable/camera_bg">
+ android:src="@drawable/ic_take_photo" />
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="70dp"
+ android:layout_margin="5dp"
+ app:cardCornerRadius="15dp">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ android:id="@+id/customization_item_image"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="15dp"
+ android:scaleType="centerCrop"
+ tools:src="@drawable/food_test" />
-
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="15dp"
+ android:layout_toRightOf="@id/customization_item_image"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dish_result_item.xml b/app/src/main/res/layout/dish_result_item.xml
new file mode 100644
index 0000000..6613460
--- /dev/null
+++ b/app/src/main/res/layout/dish_result_item.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/normal_recommend_fragment_layout.xml b/app/src/main/res/layout/normal_recommend_fragment_layout.xml
index 56689ec..b313654 100644
--- a/app/src/main/res/layout/normal_recommend_fragment_layout.xml
+++ b/app/src/main/res/layout/normal_recommend_fragment_layout.xml
@@ -8,5 +8,6 @@
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="#d2e4cb"
android:gravity="center" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/picker_item.xml b/app/src/main/res/layout/picker_item.xml
new file mode 100644
index 0000000..cf956d3
--- /dev/null
+++ b/app/src/main/res/layout/picker_item.xml
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/recommend_item_big.xml b/app/src/main/res/layout/recommend_item_big.xml
index 9470f83..98203a4 100644
--- a/app/src/main/res/layout/recommend_item_big.xml
+++ b/app/src/main/res/layout/recommend_item_big.xml
@@ -25,7 +25,7 @@
diff --git a/app/src/main/res/layout/recommend_item_middle.xml b/app/src/main/res/layout/recommend_item_middle.xml
index ce292a1..d68c316 100644
--- a/app/src/main/res/layout/recommend_item_middle.xml
+++ b/app/src/main/res/layout/recommend_item_middle.xml
@@ -2,12 +2,14 @@
+ app:cardCornerRadius="20dp"
+ app:cardElevation="0dp">
+
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index c5bb617..3703272 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -2,12 +2,6 @@