From 0dcde3dad89b6564624966a12f41cf2ef9f8514c Mon Sep 17 00:00:00 2001
From: ScorpioMiku <1056992492@qq.com>
Date: Sun, 30 Sep 2018 18:56:40 +0800
Subject: [PATCH] 9-30
---
app/build.gradle | 1 -
app/src/main/AndroidManifest.xml | 10 +-
.../nutritionmaster/NutritionMaster.java | 17 +
.../nutritionmaster/bean/MyUser.java | 14 +-
.../nutritionmaster/modules/MainActivity.java | 66 +++-
.../modules/login/LoginActivity.java | 352 ++++++++++++++++++
.../BodyInformationFragment.java | 12 +-
.../nutritionmaster/utils/ConstantUtils.java | 3 +
.../nutritionmaster/utils/WebUtils.java | 42 ++-
.../main/res/drawable/ic_defualt_avatar.xml | 24 ++
app/src/main/res/layout/activity_login.xml | 77 ++++
app/src/main/res/layout/activity_main.xml | 32 +-
app/src/main/res/values/strings.xml | 14 +
build.gradle | 1 +
14 files changed, 619 insertions(+), 46 deletions(-)
create mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java
create mode 100644 app/src/main/res/drawable/ic_defualt_avatar.xml
create mode 100644 app/src/main/res/layout/activity_login.xml
diff --git a/app/build.gradle b/app/build.gradle
index 5fcb4c4..e4fc5b0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -75,7 +75,6 @@ dependencies {
implementation 'com.github.bumptech.glide:glide:3.8.0'
implementation 'com.android.support:support-v4:19.1.0'
-
//okhttp 网络通信库
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
// json解析库
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 262fe2c..e2f9356 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,6 +24,11 @@
+
+
+
+
+
-
+
+
\ 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 ff65488..738d7d5 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java
@@ -4,10 +4,13 @@ import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
+import com.example.ninefourone.nutritionmaster.bean.MyUser;
+
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
+
/**
* Created by ScorpioMiku on 2018/8/26.
*/
@@ -16,11 +19,14 @@ public class NutritionMaster extends Application {
public static NutritionMaster mInstance;
private int appCount = 0;
+ public static MyUser user;
+
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
init();
+ initUser();
}
/**
@@ -79,4 +85,15 @@ public class NutritionMaster extends Application {
return appCount > 0;
}
+
+ /**
+ * 初始化用户信息
+ */
+ private void initUser() {
+ user = new MyUser();
+ user.setNickName("ScorpioMiku");
+ }
+
+
+
}
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 1ea341e..57a6b6b 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
@@ -10,7 +10,7 @@ public class MyUser {
* password : password
* last_login : null
* is_superuser : false
- * username : okhttptest
+ * nickName : okhttptest
* first_name :
* last_name :
* email :
@@ -28,7 +28,7 @@ public class MyUser {
private String password;
private Object last_login;
private boolean is_superuser;
- private String username;
+ private String nickName;
private String first_name;
private String last_name;
private String email;
@@ -80,12 +80,12 @@ public class MyUser {
this.is_superuser = is_superuser;
}
- public String getUsername() {
- return username;
+ public String getNickName() {
+ return nickName;
}
- public void setUsername(String username) {
- this.username = username;
+ public void setNickName(String nickName) {
+ this.nickName = nickName;
}
public String getFirst_name() {
@@ -176,7 +176,7 @@ public class MyUser {
", password='" + password + '\'' +
", last_login=" + last_login +
", is_superuser=" + is_superuser +
- ", username='" + username + '\'' +
+ ", nickName='" + nickName + '\'' +
", first_name='" + first_name + '\'' +
", last_name='" + last_name + '\'' +
", email='" + email + '\'' +
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 22c45e4..ccca289 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
@@ -2,7 +2,6 @@ package com.example.ninefourone.nutritionmaster.modules;
import android.annotation.SuppressLint;
import android.content.Intent;
-import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
@@ -12,21 +11,24 @@ import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.TextView;
import com.ToxicBakery.viewpager.transforms.CubeOutTransformer;
+
import com.cb.ratingbar.CBRatingBar;
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.bean.Occupation;
import com.example.ninefourone.nutritionmaster.camera.FoodMaterialCamera;
import com.example.ninefourone.nutritionmaster.modules.addinformation.AddActivity;
-import com.example.ninefourone.nutritionmaster.modules.information.InformationActivity;
import com.example.ninefourone.nutritionmaster.ui.NoScrollViewPager;
+import com.example.ninefourone.nutritionmaster.utils.ConstantUtils;
import com.example.ninefourone.nutritionmaster.utils.MessageUtils;
import com.example.ninefourone.nutritionmaster.utils.PermissionUtils;
+import com.example.ninefourone.nutritionmaster.utils.WebUtils;
import com.flyco.tablayout.SlidingTabLayout;
import com.github.mikephil.charting.charts.RadarChart;
import com.github.mikephil.charting.components.Description;
@@ -38,6 +40,7 @@ import com.github.mikephil.charting.data.RadarDataSet;
import com.github.mikephil.charting.data.RadarEntry;
import com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
import com.github.siyamed.shapeimageview.CircularImageView;
+import com.google.gson.Gson;
import com.miguelcatalan.materialsearchview.MaterialSearchView;
import com.mxn.soul.flowingdrawer_core.ElasticDrawer;
import com.mxn.soul.flowingdrawer_core.FlowingDrawer;
@@ -46,12 +49,16 @@ import com.nightonke.boommenu.BoomButtons.OnBMClickListener;
import com.nightonke.boommenu.BoomMenuButton;
import com.orhanobut.logger.Logger;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Response;
public class MainActivity extends BaseActivity {
@@ -85,7 +92,10 @@ public class MainActivity extends BaseActivity {
LinearLayout informationLayout;
@BindView(R.id.title_layout)
AppBarLayout titleLayout;
-
+ @BindView(R.id.user_nick_name)
+ TextView userNickName;
+ @BindView(R.id.user_occupation_text)
+ TextView userOccupationText;
@Override
public int getLayoutId() {
@@ -117,6 +127,7 @@ public class MainActivity extends BaseActivity {
initViewPager();
initSearchView();
initBMB();
+ initOccupations();
}
/**
@@ -151,7 +162,7 @@ public class MainActivity extends BaseActivity {
super.onCreate(savedInstanceState);
// TODO: add setContentView(...) invocation
ButterKnife.bind(this);
- Logger.d("oncreate");
+// Logger.d("oncreate");
setSupportActionBar(toolBar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
askPermission();
@@ -159,7 +170,7 @@ public class MainActivity extends BaseActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- Logger.d("oncreateMenu");
+// Logger.d("oncreateMenu");
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.id_action_search);
searchView.setMenuItem(item);
@@ -168,7 +179,7 @@ public class MainActivity extends BaseActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- Logger.d("prepareMenu");
+// Logger.d("prepareMenu");
return super.onPrepareOptionsMenu(menu);
}
@@ -311,7 +322,14 @@ public class MainActivity extends BaseActivity {
MessageUtils.MakeToast("权限赋予成功");
}
- @OnClick({R.id.navigation_layout, R.id.add_information_button})
+
+ /**
+ * 点击事件
+ *
+ * @param view
+ */
+
+ @OnClick({R.id.navigation_layout, R.id.add_information_button, R.id.information_layout, R.id.user_occupation_text})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.navigation_layout:
@@ -321,12 +339,36 @@ public class MainActivity extends BaseActivity {
Intent intent = new Intent(MainActivity.this, AddActivity.class);
startActivity(intent);
break;
+ case R.id.information_layout:
+ break;
+ case R.id.user_occupation_text:
+ break;
}
}
- @OnClick(R.id.information_layout)
- public void onViewClicked() {
- Intent intent = new Intent(MainActivity.this, InformationActivity.class);
- startActivity(intent);
+ /**
+ * 初始化职业常量
+ */
+ private void initOccupations() {
+ if (userOccupationText.getText().equals("请选择您的职业")) {
+ WebUtils.getAllOccupations(new Callback() {
+ @Override
+ public void onFailure(Call call, IOException e) {
+ e.printStackTrace();
+ }
+
+ @Override
+ public void onResponse(Call call, Response response) throws IOException {
+ Occupation[] occupations = new Gson().fromJson(response.body().string(), Occupation[].class);
+ for (int i = 0; i < occupations.length; i++) {
+// Logger.d(occupations[i].getOccupation_name());
+ ConstantUtils.occupationList.add(occupations[i].getOccupation_name());
+ }
+
+ }
+ });
+ }
}
+
+
}
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java
new file mode 100644
index 0000000..c75dae3
--- /dev/null
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/login/LoginActivity.java
@@ -0,0 +1,352 @@
+package com.example.ninefourone.nutritionmaster.modules.login;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.annotation.TargetApi;
+import android.content.pm.PackageManager;
+import android.support.annotation.NonNull;
+import android.support.design.widget.Snackbar;
+import android.support.v7.app.AppCompatActivity;
+import android.app.LoaderManager.LoaderCallbacks;
+
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+
+import android.os.Build;
+import android.os.Bundle;
+import android.provider.ContactsContract;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.inputmethod.EditorInfo;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.example.ninefourone.nutritionmaster.R;
+
+import static android.Manifest.permission.READ_CONTACTS;
+
+/**
+ * A login screen that offers login via email/password.
+ */
+public class LoginActivity extends AppCompatActivity implements LoaderCallbacks {
+
+ /**
+ * Id to identity READ_CONTACTS permission request.
+ */
+ private static final int REQUEST_READ_CONTACTS = 0;
+
+ /**
+ * A dummy authentication store containing known user names and passwords.
+ * TODO: remove after connecting to a real authentication system.
+ */
+ private static final String[] DUMMY_CREDENTIALS = new String[]{
+ "foo@example.com:hello", "bar@example.com:world"
+ };
+ /**
+ * Keep track of the login task to ensure we can cancel it if requested.
+ */
+ private UserLoginTask mAuthTask = null;
+
+ // UI references.
+ private AutoCompleteTextView mEmailView;
+ private EditText mPasswordView;
+ private View mProgressView;
+ private View mLoginFormView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login);
+ // Set up the login form.
+ mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
+ populateAutoComplete();
+
+ mPasswordView = (EditText) findViewById(R.id.password);
+ mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
+ if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
+ attemptLogin();
+ return true;
+ }
+ return false;
+ }
+ });
+
+ Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
+ mEmailSignInButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ attemptLogin();
+ }
+ });
+
+ mLoginFormView = findViewById(R.id.login_form);
+ mProgressView = findViewById(R.id.login_progress);
+ }
+
+ private void populateAutoComplete() {
+ if (!mayRequestContacts()) {
+ return;
+ }
+
+ getLoaderManager().initLoader(0, null, this);
+ }
+
+ private boolean mayRequestContacts() {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ return true;
+ }
+ if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
+ return true;
+ }
+ if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
+ Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
+ .setAction(android.R.string.ok, new View.OnClickListener() {
+ @Override
+ @TargetApi(Build.VERSION_CODES.M)
+ public void onClick(View v) {
+ requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
+ }
+ });
+ } else {
+ requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
+ }
+ return false;
+ }
+
+ /**
+ * Callback received when a permissions request has been completed.
+ */
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
+ @NonNull int[] grantResults) {
+ if (requestCode == REQUEST_READ_CONTACTS) {
+ if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ populateAutoComplete();
+ }
+ }
+ }
+
+
+ /**
+ * Attempts to sign in or register the account specified by the login form.
+ * If there are form errors (invalid email, missing fields, etc.), the
+ * errors are presented and no actual login attempt is made.
+ */
+ private void attemptLogin() {
+ if (mAuthTask != null) {
+ return;
+ }
+
+ // Reset errors.
+ mEmailView.setError(null);
+ mPasswordView.setError(null);
+
+ // Store values at the time of the login attempt.
+ String email = mEmailView.getText().toString();
+ String password = mPasswordView.getText().toString();
+
+ boolean cancel = false;
+ View focusView = null;
+
+ // Check for a valid password, if the user entered one.
+ if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
+ mPasswordView.setError(getString(R.string.error_invalid_password));
+ focusView = mPasswordView;
+ cancel = true;
+ }
+
+ // Check for a valid email address.
+ if (TextUtils.isEmpty(email)) {
+ mEmailView.setError(getString(R.string.error_field_required));
+ focusView = mEmailView;
+ cancel = true;
+ } else if (!isEmailValid(email)) {
+ mEmailView.setError(getString(R.string.error_invalid_email));
+ focusView = mEmailView;
+ cancel = true;
+ }
+
+ if (cancel) {
+ // There was an error; don't attempt login and focus the first
+ // form field with an error.
+ focusView.requestFocus();
+ } else {
+ // Show a progress spinner, and kick off a background task to
+ // perform the user login attempt.
+ showProgress(true);
+ mAuthTask = new UserLoginTask(email, password);
+ mAuthTask.execute((Void) null);
+ }
+ }
+
+ private boolean isEmailValid(String email) {
+ //TODO: Replace this with your own logic
+ return email.contains("@");
+ }
+
+ private boolean isPasswordValid(String password) {
+ //TODO: Replace this with your own logic
+ return password.length() > 4;
+ }
+
+ /**
+ * Shows the progress UI and hides the login form.
+ */
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
+ private void showProgress(final boolean show) {
+ // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
+ // for very easy animations. If available, use these APIs to fade-in
+ // the progress spinner.
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
+ int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
+
+ mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
+ mLoginFormView.animate().setDuration(shortAnimTime).alpha(
+ show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
+ }
+ });
+
+ mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
+ mProgressView.animate().setDuration(shortAnimTime).alpha(
+ show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
+ }
+ });
+ } else {
+ // The ViewPropertyAnimator APIs are not available, so simply show
+ // and hide the relevant UI components.
+ mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
+ mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
+ }
+ }
+
+ @Override
+ public Loader onCreateLoader(int i, Bundle bundle) {
+ return new CursorLoader(this,
+ // Retrieve data rows for the device user's 'profile' contact.
+ Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
+ ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
+
+ // Select only email addresses.
+ ContactsContract.Contacts.Data.MIMETYPE +
+ " = ?", new String[]{ContactsContract.CommonDataKinds.Email
+ .CONTENT_ITEM_TYPE},
+
+ // Show primary email addresses first. Note that there won't be
+ // a primary email address if the user hasn't specified one.
+ ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
+ }
+
+ @Override
+ public void onLoadFinished(Loader cursorLoader, Cursor cursor) {
+ List emails = new ArrayList<>();
+ cursor.moveToFirst();
+ while (!cursor.isAfterLast()) {
+ emails.add(cursor.getString(ProfileQuery.ADDRESS));
+ cursor.moveToNext();
+ }
+
+ addEmailsToAutoComplete(emails);
+ }
+
+ @Override
+ public void onLoaderReset(Loader cursorLoader) {
+
+ }
+
+ private void addEmailsToAutoComplete(List emailAddressCollection) {
+ //Create adapter to tell the AutoCompleteTextView what to show in its dropdown list.
+ ArrayAdapter adapter =
+ new ArrayAdapter<>(LoginActivity.this,
+ android.R.layout.simple_dropdown_item_1line, emailAddressCollection);
+
+ mEmailView.setAdapter(adapter);
+ }
+
+
+ private interface ProfileQuery {
+ String[] PROJECTION = {
+ ContactsContract.CommonDataKinds.Email.ADDRESS,
+ ContactsContract.CommonDataKinds.Email.IS_PRIMARY,
+ };
+
+ int ADDRESS = 0;
+ int IS_PRIMARY = 1;
+ }
+
+ /**
+ * Represents an asynchronous login/registration task used to authenticate
+ * the user.
+ */
+ public class UserLoginTask extends AsyncTask {
+
+ private final String mEmail;
+ private final String mPassword;
+
+ UserLoginTask(String email, String password) {
+ mEmail = email;
+ mPassword = password;
+ }
+
+ @Override
+ protected Boolean doInBackground(Void... params) {
+ // TODO: attempt authentication against a network service.
+
+ try {
+ // Simulate network access.
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ return false;
+ }
+
+ for (String credential : DUMMY_CREDENTIALS) {
+ String[] pieces = credential.split(":");
+ if (pieces[0].equals(mEmail)) {
+ // Account exists, return true if the password matches.
+ return pieces[1].equals(mPassword);
+ }
+ }
+
+ // TODO: register the new account here.
+ return true;
+ }
+
+ @Override
+ protected void onPostExecute(final Boolean success) {
+ mAuthTask = null;
+ showProgress(false);
+
+ if (success) {
+ finish();
+ } else {
+ mPasswordView.setError(getString(R.string.error_incorrect_password));
+ mPasswordView.requestFocus();
+ }
+ }
+
+ @Override
+ protected void onCancelled() {
+ mAuthTask = null;
+ showProgress(false);
+ }
+ }
+}
+
diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java
index 9cc37d4..ec3c392 100644
--- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java
+++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/bodyinformation/BodyInformationFragment.java
@@ -56,6 +56,8 @@ public class BodyInformationFragment extends BaseFragment {
private ISportStepInterface iSportStepInterface;
+ private ServiceConnection coon;
+
@Override
public int getLayoutResId() {
@@ -94,7 +96,7 @@ public class BodyInformationFragment extends BaseFragment {
//开启计步
Intent stepCounterStart = new Intent(getActivity(), TodayStepService.class);
getActivity().startService(stepCounterStart);
- getActivity().bindService(stepCounterStart, new ServiceConnection() {
+ coon = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
iSportStepInterface = ISportStepInterface.Stub.asInterface(service);
@@ -111,7 +113,8 @@ public class BodyInformationFragment extends BaseFragment {
public void onServiceDisconnected(ComponentName name) {
}
- }, Context.BIND_AUTO_CREATE);
+ };
+ getActivity().bindService(stepCounterStart, coon, Context.BIND_AUTO_CREATE);
}
/**
@@ -172,4 +175,9 @@ public class BodyInformationFragment extends BaseFragment {
ChartDrawer.initSingleLineChart(stepLineChart, stepPointValues, "步数");
}
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+// getActivity().unbindService(coon);
+ }
}
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 f1bc04c..daa6229 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
@@ -51,4 +51,7 @@ public class ConstantUtils {
{"烫的", "冷的", "没有特别喜欢的"},
{"查看"}
};
+
+ public static ArrayList occupationList = new ArrayList<>();
+
}
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 2619b3c..bfce3fe 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
@@ -3,7 +3,12 @@ package com.example.ninefourone.nutritionmaster.utils;
import android.support.annotation.Nullable;
+import com.example.ninefourone.nutritionmaster.bean.Occupation;
+import com.google.gson.Gson;
+import com.orhanobut.logger.Logger;
+
import java.io.IOException;
+import java.util.Arrays;
import okhttp3.Call;
import okhttp3.Callback;
@@ -43,6 +48,7 @@ public class WebUtils {
/**
* 获取count个随机菜谱,在回调中解析为一个Menu数组
+ *
* @param count
* @param callback
*/
@@ -126,6 +132,12 @@ public class WebUtils {
mClient.newCall(request).enqueue(callback);
}
+ public static void getAllOccupations(Callback callback) {
+ OkHttpClient mClient = new OkHttpClient();
+ Request request = new Request.Builder().url("http://120.77.182.38/occupation/").build();
+ mClient.newCall(request).enqueue(callback);
+ }
+
/**
* 获取体质需要的食材
* {
@@ -188,11 +200,11 @@ public class WebUtils {
mClient.newCall(request).enqueue(callback);
}
- public static void changeUserOccupation(String username,String password, String occupation, Callback callback) {
+ public static void changeUserOccupation(String username, String password, String occupation, Callback callback) {
String url = "http://120.77.182.38/myuser/" + username + "/";
RequestBody formBody = new FormBody.Builder()
.add("username", username)
- .add("password",password)
+ .add("password", password)
.add("occupation", occupation)
.build();
@@ -205,11 +217,11 @@ public class WebUtils {
mClient.newCall(request).enqueue(callback);
}
- public static void changeUserPhysique(String username,String password, String physique, Callback callback) {
+ public static void changeUserPhysique(String username, String password, String physique, Callback callback) {
String url = "http://120.77.182.38/myuser/" + username + "/";
RequestBody formBody = new FormBody.Builder()
.add("username", username)
- .add("password",password)
+ .add("password", password)
.add("physique", physique)
.build();
@@ -315,17 +327,19 @@ public class WebUtils {
}
});*/
- WebUtils.changeUserOccupation("updatatest","1234" ,"气虚质", new Callback() {
- @Override
- public void onFailure(Call call, IOException e) {
- e.printStackTrace();
- }
+// WebUtils.changeUserOccupation("updatatest","1234" ,"气虚质", new Callback() {
+// @Override
+// public void onFailure(Call call, IOException e) {
+// e.printStackTrace();
+// }
+//
+// @Override
+// public void onResponse(Call call, Response response) throws IOException {
+// System.out.println(response.body().string());
+// }
+// });
+
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- System.out.println(response.body().string());
- }
- });
}
}
diff --git a/app/src/main/res/drawable/ic_defualt_avatar.xml b/app/src/main/res/drawable/ic_defualt_avatar.xml
new file mode 100644
index 0000000..4bb1d4e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_defualt_avatar.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..068a197
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 7ade751..06280a6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -147,27 +147,39 @@
android:layout_height="60dp"
android:src="@drawable/test_avatar" />
-
+ android:layout_height="40dp"
+ android:layout_marginTop="10dp"
+ android:gravity="center"
+ android:orientation="vertical">
-
+
+
+
+
+
@@ -179,6 +191,8 @@
android:layout_marginRight="25dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_data_add" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 80a90d1..17d6b3f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,4 +5,18 @@
M1080.3,453.7c-77.2,88.2 -214.6,234.4 -214.6,234.4s22,160.2 35.3,269.7c5.9,55.9 -37.5,80.1 -86,58.1 -92.6,-43.4 -233.7,-111 -265.3,-126.4 -32.3,14.7 -174.2,81.6 -267.5,124.9 -49.2,21.3 -92.6,-2.2 -87.5,-58.1 12.5,-109.5 35.3,-269 35.3,-269S91.1,541.9 13.2,453.7c-27.9,-32.3 -9.6,-77.9 44.8,-86 111.7,-19.8 284.4,-51.4 284.4,-51.4s94.8,-163.1 154.3,-263.1C529.8,-7.8 552.6,-0.4 556.3,1c10.3,2.9 26.5,15.4 47,52.2 58.8,99.9 152.1,263.1 152.1,263.1s170.5,31.6 280.7,51.4c53.6,8.1 71.3,54.4 44.1,86z
食材识别
菜品识别
+ 登录
+
+
+ Email
+ Password (optional)
+ Sign in or register
+ Sign in
+ This email address is invalid
+ This password is too short
+ This password is incorrect
+ This field is required
+ "Contacts permissions are needed for providing email
+ completions."
+
diff --git a/build.gradle b/build.gradle
index 8db53cb..ba4f2f1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,6 +25,7 @@ allprojects {
google()
jcenter()
maven { url 'https://jitpack.io' }
+ maven { url 'https://bintray.com/rameshbhupathi/maven' }
}
}