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

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed366fe..58bb53a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,7 +44,7 @@
-
+
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 +76,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 +115,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 +131,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 +161,45 @@ 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 = WebUtils.HttpPost(ConstantUtils.BD_DISH_URL,
+ ConstantUtils.BD_ACCESS_TOKEN, param);
+ } else if (code == 1) {
+ result = WebUtils.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"));
+ 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 +215,10 @@ 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:
+ resultList.clear();
break;
}
}
@@ -209,4 +258,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/modules/MainActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/MainActivity.java
index 2ee2ccd..0a07af7 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);
}
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 f07efdc..0ff1c2a 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
@@ -273,4 +273,6 @@ public class ConstantUtils {
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";
+
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java
index bfce3fe..6a8fb37 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java
@@ -7,8 +7,21 @@ import com.example.ninefourone.nutritionmaster.bean.Occupation;
import com.google.gson.Gson;
import com.orhanobut.logger.Logger;
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+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 okhttp3.Call;
import okhttp3.Callback;
@@ -235,6 +248,54 @@ public class WebUtils {
}
+ 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) {
/*WebUtils.getMenu("雪丽对虾", new Callback() {
@Override
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_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_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/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" />