From a19f3347b7b758d21837e1a88ab153f3102be6b5 Mon Sep 17 00:00:00 2001 From: ScorpioMiku <1056992492@qq.com> Date: Fri, 9 Nov 2018 08:45:29 +0800 Subject: [PATCH] 1 --- app/build.gradle | 3 + .../camera/ClassifierCamera.java | 12 +- .../nutritionmaster/modules/MainActivity.java | 46 +++- .../recommend/RecommendFragment.java | 202 +++++++++--------- .../nutritionmaster/utils/ConstantUtils.java | 2 +- app/src/main/res/drawable/ic_flavour.xml | 6 + app/src/main/res/layout/activity_main.xml | 25 ++- 7 files changed, 185 insertions(+), 111 deletions(-) create mode 100644 app/src/main/res/drawable/ic_flavour.xml diff --git a/app/build.gradle b/app/build.gradle index 414fe30..c74e06e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -112,4 +112,7 @@ dependencies { implementation files('libs/YoudaoCnDictOffline.jar') implementation files('libs/YoudaoTranslateOffline.jar') implementation files('libs/YoudaoTranslateOnline.jar') + + //图片压缩 + implementation 'com.github.nanchen2251:CompressHelper:1.0.5' } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java index 099d6f1..a74ff56 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/camera/ClassifierCamera.java @@ -8,9 +8,11 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.hardware.Camera; +import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.support.annotation.Nullable; +import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.util.Base64; import android.util.Log; @@ -33,6 +35,7 @@ import com.example.ninefourone.nutritionmaster.utils.MaterialClassifier; import com.example.ninefourone.nutritionmaster.utils.MessageUtils; import com.example.ninefourone.nutritionmaster.utils.WebUtil; import com.google.gson.Gson; +import com.nanchen.compresshelper.CompressHelper; import com.orhanobut.logger.Logger; import com.youdao.sdk.app.Language; import com.youdao.sdk.app.LanguageUtils; @@ -46,6 +49,7 @@ import org.json.JSONArray; import org.json.JSONObject; import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -184,6 +188,7 @@ public class ClassifierCamera extends AppCompatActivity { * 拍照回调 */ private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { + @RequiresApi(api = Build.VERSION_CODES.FROYO) @Override public void onPictureTaken(final byte[] data, Camera camera) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); @@ -199,8 +204,11 @@ public class ClassifierCamera extends AppCompatActivity { bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); - - String imgStr = Base64.encodeToString(data, Base64.DEFAULT); + bitmap = CompressHelper.getDefault(getApplicationContext()).compressToBitmap(file); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); + byte[] dat = baos.toByteArray(); + String imgStr = Base64.encodeToString(dat, Base64.DEFAULT); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); final String param = "image=" + imgParam + "&top_num=" + 1; Thread thread = new Thread(new Runnable() { 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 bfedb64..af3279b 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 @@ -130,6 +130,20 @@ public class MainActivity extends BaseActivity { LinearLayout illButton; @BindView(R.id.change_information) TextView changeInformation; + @BindView(R.id.add_flavour_button) + ImageView addFlavourButton; + @BindView(R.id.bmi_self) + TextView bmiSelf; + @BindView(R.id.bmi_standard) + TextView bmiStandard; + @BindView(R.id.height_self) + TextView heightSelf; + @BindView(R.id.height_standard) + TextView heightStandard; + @BindView(R.id.weight_self) + TextView weightSelf; + @BindView(R.id.weight_standard) + TextView weightStandard; private OptionsPickerView illPicker; @@ -511,21 +525,24 @@ public class MainActivity extends BaseActivity { bmiBar.setSecondaryProgress(bmiAverage); bmiBar.setProgress(bmiSelf); } else { + changeColor("bmi"); bmiBar.setMax(100); bmiBar.setSecondaryProgress(bmiSelf); bmiBar.setProgress(bmiAverage); bmiBar.setProgressColor(getColor(R.color.color_bar_deeper)); bmiBar.setSecondaryProgressColor(getColor(R.color.color_bar_self)); } - +// NutritionMaster.user.setBmi(bmiSelf); float heightAverage = averageHeight / maxHeight * 100.0f; float heightSelf = height / maxHeight * 100.0f; if (heightAverage > heightSelf) { + heightBar.setMax(100); heightBar.setSecondaryProgress(heightAverage); heightBar.setProgress(heightSelf); } else { + changeColor("height"); heightBar.setMax(100); heightBar.setSecondaryProgress(heightSelf); heightBar.setProgress(heightAverage); @@ -537,10 +554,12 @@ public class MainActivity extends BaseActivity { float weightAverage = averageWeight / maxWeight * 100.0f; float weightSelf = weight / maxWeight * 100.0f; if (weightAverage > weightSelf) { + weightBar.setMax(100); weightBar.setSecondaryProgress(weightAverage); weightBar.setProgress(weightSelf); } else { + changeColor("weight"); weightBar.setMax(100); weightBar.setSecondaryProgress(weightSelf); weightBar.setProgress(weightAverage); @@ -556,6 +575,23 @@ public class MainActivity extends BaseActivity { } } + /** + * 切换bar的颜色 + */ + @SuppressLint("ResourceAsColor") + private void changeColor(String flag) { + if (flag.equals("bmi")) { + bmiSelf.setBackgroundColor(R.color.color_bar_deeper); + bmiStandard.setBackgroundColor(R.color.color_bar_self); + } else if (flag.equals("height")) { + heightBar.setBackgroundColor(R.color.color_bar_deeper); + heightStandard.setBackgroundColor(R.color.color_bar_self); + } else if (flag.equals("weight")) { + weightSelf.setBackgroundColor(R.color.color_bar_deeper); + weightStandard.setBackgroundColor(R.color.color_bar_self); + } + } + /** * 初始化用户疾病list @@ -633,7 +669,13 @@ public class MainActivity extends BaseActivity { illPicker.show(); } }); -// } + + addFlavourButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); } 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 1a6b04b..dccf2d4 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 @@ -134,61 +134,61 @@ public class RecommendFragment extends BaseFragment { protected void loadData() { super.loadData(); // if (NutritionMaster.user.getOccupation_name().equals("")) { - getWebUtil().getRandomMenus(20, new Callback() { - @Override - public void onFailure(Call call, IOException e) { + getWebUtil().getRandomMenus(20, NutritionMaster.user.getUsername(), new Callback() { + @Override + public void onFailure(Call call, IOException e) { - } + } - @Override - public void onResponse(Call call, Response response) throws IOException { - String json = response.body().string(); - FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); - int count = 0; - for (int i = 0; i < menus.length; i++) { - if (count > 11) { - break; - } else { - int flag = indexs[count % 3]; - RecommendFood recommendFood = new RecommendFood(menus[i], flag); - if (!recommendFood.getPicture().equals("0")) { - datas.add(recommendFood); - count++; - } + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); + int count = 0; + for (int i = 0; i < menus.length; i++) { + if (count > 11) { + break; + } else { + int flag = indexs[count % 3]; + RecommendFood recommendFood = new RecommendFood(menus[i], flag); + if (!recommendFood.getPicture().equals("0")) { + datas.add(recommendFood); + count++; } } - - /** - * 获取小知识 - */ - getWebUtil().getRandomTricks(5, new Callback() { - @Override - public void onFailure(Call call, IOException e) { - - } - - @Override - public void onResponse(Call call, Response response) throws IOException { - String json = response.body().string(); - Trick[] tricks = new Gson().fromJson(json, Trick[].class); - int index = 0; - for (int i = 0; i < datas.size(); i++) { - if (datas.get(i).getItemType() == RecommendFood.TYPE_DETAIL) { - datas.get(i).setDescription(tricks[index].getContent()); - datas.get(i).setTitle(tricks[index].getTitle()); - index++; - } - } - recyclerView.post(new Runnable() { - @Override - public void run() { - adapter.notifyDataSetChanged(); - } - }); - } - }); } - }); + + /** + * 获取小知识 + */ + getWebUtil().getRandomTricks(5, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Trick[] tricks = new Gson().fromJson(json, Trick[].class); + int index = 0; + for (int i = 0; i < datas.size(); i++) { + if (datas.get(i).getItemType() == RecommendFood.TYPE_DETAIL) { + datas.get(i).setDescription(tricks[index].getContent()); + datas.get(i).setTitle(tricks[index].getTitle()); + index++; + } + } + recyclerView.post(new Runnable() { + @Override + public void run() { + adapter.notifyDataSetChanged(); + } + }); + } + }); + } + }); } @@ -197,62 +197,62 @@ public class RecommendFragment extends BaseFragment { */ private void addData() { // if (NutritionMaster.user.getOccupation_name().equals("")) { - getWebUtil().getRandomMenus(20, new Callback() { - @Override - public void onFailure(Call call, IOException e) { + getWebUtil().getRandomMenus(20, NutritionMaster.user.getUsername(), new Callback() { + @Override + public void onFailure(Call call, IOException e) { - } + } - @Override - public void onResponse(Call call, Response response) throws IOException { - final int originsize = datas.size(); - String json = response.body().string(); - FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); - int count = 0; - for (int i = 0; i < menus.length; i++) { - if (count > 7) { - break; - } else { - int flag = indexs[count % 3]; - RecommendFood recommendFood = new RecommendFood(menus[i], flag); - if (!recommendFood.getPicture().equals("0")) { - datas.add(recommendFood); - count++; - } + @Override + public void onResponse(Call call, Response response) throws IOException { + final int originsize = datas.size(); + String json = response.body().string(); + FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); + int count = 0; + for (int i = 0; i < menus.length; i++) { + if (count > 7) { + break; + } else { + int flag = indexs[count % 3]; + RecommendFood recommendFood = new RecommendFood(menus[i], flag); + if (!recommendFood.getPicture().equals("0")) { + datas.add(recommendFood); + count++; } } - - /** - * 获取小知识 - */ - getWebUtil().getRandomTricks(5, new Callback() { - @Override - public void onFailure(Call call, IOException e) { - - } - - @Override - public void onResponse(Call call, Response response) throws IOException { - String json = response.body().string(); - Trick[] tricks = new Gson().fromJson(json, Trick[].class); - int index = 0; - for (int i = originsize; i < datas.size(); i++) { - if (datas.get(i).getItemType() == RecommendFood.TYPE_DETAIL) { - datas.get(i).setDescription(tricks[index].getContent()); - datas.get(i).setTitle(tricks[index].getTitle()); - index++; - } - } - recyclerView.post(new Runnable() { - @Override - public void run() { - adapter.loadMoreComplete(); - } - }); - } - }); } - }); + + /** + * 获取小知识 + */ + getWebUtil().getRandomTricks(5, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + Trick[] tricks = new Gson().fromJson(json, Trick[].class); + int index = 0; + for (int i = originsize; i < datas.size(); i++) { + if (datas.get(i).getItemType() == RecommendFood.TYPE_DETAIL) { + datas.get(i).setDescription(tricks[index].getContent()); + datas.get(i).setTitle(tricks[index].getTitle()); + index++; + } + } + recyclerView.post(new Runnable() { + @Override + public void run() { + adapter.loadMoreComplete(); + } + }); + } + }); + } + }); // } } 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 085723e..c2ca140 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 @@ -86,7 +86,7 @@ public class ConstantUtils { } /** - * 全国平均体重 index 0 对应 3岁 + * 全国平均身高 index 0 对应 3岁 */ public static ArrayList averageBoyHeight = new ArrayList<>(); diff --git a/app/src/main/res/drawable/ic_flavour.xml b/app/src/main/res/drawable/ic_flavour.xml new file mode 100644 index 0000000..54cdb6e --- /dev/null +++ b/app/src/main/res/drawable/ic_flavour.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index fa8c3ed..ade9304 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -190,8 +190,8 @@ + + @@ -380,6 +390,7 @@ android:textSize="5sp" /> @@ -453,6 +464,7 @@ android:orientation="vertical"> @@ -464,6 +476,7 @@ android:textSize="5sp" /> @@ -537,6 +550,7 @@ android:orientation="vertical"> @@ -548,6 +562,7 @@ android:textSize="5sp" />