diff --git a/README.md b/README.md new file mode 100644 index 0000000..f31a5ad --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +# MyHealthApp + +Devasri Warrier: 1001536613 devasri.warrier@mavs.uta.edu, 214-529-6269 +Implementation 1: Personal Information: + -Add Personal Information + -View Personal Information saved in the DB + -Update Personal Information + -Respective functions in DatabaseHelper file to store into DB + +Implementation 2: Monitoring System: On time Medication: -positive affirmation + Late Medication: -NOK texted notice, -user texted reminder, -Doctor + Pharm. email prepopulated message and emails pre-filled (if logged into email app + and android permissions allowed) + -User can add a self notification message + -Medication Tracker of dosage + days left to complete medication + + Implementation 3: Home Screen: + -Set up 2 layouts on home screen + -Made back buttons for navigation through app + +Missing functionality: -not pulling data from DB of Personal Info. to text/email in monitoring system. Did not have time to finish implementation but harded coded works for email/texts -Medication tracker is only able to pull the 1st medication entered, not any respective medications added thereafter +-No notifications of missed medication. Only a self notify for a user to enter their own Notif to put in notification bar + +Resources: +https://www.youtube.com/watch?v=tTbd1Mfi-Sk +https://www.youtube.com/watch?v=cp2rL3sAFmI&list=PLS1QulWo1RIaRdy16cOzBO5Jr6kEagA07 (playlist videos 1-5) +https://www.youtube.com/watch?v=oLngUva-Ves +https://www.codota.com/code/java/classes/android.app.DatePickerDialog //in code, works, but not combined with implementations to basically useless + +Jason Shamayev: 1001627879 +Implementations: +Login/Registration: + -User can register + -User can log in + -"Forgot password" + -"reset password" (security questions) + -Necessary validations if values not entered correctly + -Respective functions in DatabaseHelper file to store into DB +Medication: + -User can add medication + -User can view list of all medications entered + -Necessary validations if values not entered correctly + -Respective functions in DatabaseHelper file to store into DB +Settings: + -Log out + -Change Password +Home Screen: + -Set up the for home screen + -Made back buttons for navigation through app +Resources: +https://www.youtube.com/watch?v=d5jfNSFu45U +https://developer.android.com/studio/write + +Saugat K: 1001644419, saugat.karki@mavs.uta.edu, 8174375349 +Implementations: +Search: +-Missing functionality: Search function works only for vital signs and username. Reason: As we used SQL lite, every one made a seperate table to store data. So, + everyone had a separate numeric user ID to identify each user. So, I couldn't figure out a way to do extraction of data from their table for a specific user + as each table had a seperate type of unique ID to idenitify each user. + The reason search works for Vital Signs is because while creating table for storing vital signs, I just used the usernames of users as a unique + ID. So, I could later match the current user's username with the username on the table and extract the required data. Since there can't be two users with same username + in our app, the search funcionality works perfectly with vital signs. + +-Users can search for their username by typing "username" in the search field. +-Users can type any vital signs names(cholesterol, heart rate, blood pressure, glucose) in the search field. +-If the Vital Signs data has been previously added or updated, users can search for any of the vital Signs. If not, a message will be printed asking user to initialize + vital signs. +-All inputs are case insensitive. + +Vital Signs: +-Enter Vital Signs (glucose, cholesterol, blood pressure, heart rate) +-Necessary validations if not entered correctly +-Review information regarding vital signs +-Submit vital signs +-Update vital signs + +Resources: +https://www.youtube.com/watch?v=KUq5wf3Mh0c&list=PLS1QulWo1RIaRdy16cOzBO5Jr6kEagA07&index=4 +https://www.youtube.com/watch?v=NhrD_fokd7g + +Cesar Rea: 1001643491 +Cesar.rea2@mavs.uta.edu +Contact phone number: 2143257031 + + +Missing Functionality: +-When going into the New Food Section of Diet, the app will not count the calories +and start from zero when back to main page of diet + +-New Food Names entered will not be added to the database, so it will not shown again + +Implementations: +Diet: +-Enter amount of servings +-User can pick food choice from spinner +-User can press on New Food to add custom food. +-User press on next to display current total of calories +-User press on done + +Communications: +-Users can enter phone number +-Users can enter SMS +-User can press on Message or Call + +Resources: +https://www.youtube.com/watch?v=KUq5wf3Mh0c&list=PLS1QulWo1RIaRdy16cOzBO5Jr6kEagA07&index=4 +https://www.youtube.com/watch?v=4HkTrSkYAQ4 +https://www.youtube.com/watch?v=pajvuBZc2WA diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d86db00..d69cc4e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,21 +4,41 @@ + + + - + + + + + + + + + + + + + + + + + = Build.VERSION_CODES.M) { + if (checkSelfPermission(CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(CommunicationsActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 101); + return; + } + } + Intent callIntent = new Intent(Intent.ACTION_CALL); + callIntent.setData(Uri.parse("tel:" + editTextNumber.getText().toString())); + startActivity(callIntent); + } +} + + + + + diff --git a/app/src/main/java/com/example/loginregistration/DatabaseHelper.java b/app/src/main/java/com/example/loginregistration/DatabaseHelper.java index 148e912..6730dac 100644 --- a/app/src/main/java/com/example/loginregistration/DatabaseHelper.java +++ b/app/src/main/java/com/example/loginregistration/DatabaseHelper.java @@ -27,11 +27,11 @@ public class DatabaseHelper extends SQLiteOpenHelper { public static final String COL_8 = "Security_Question"; public static final String COL_9 = "Security_Answer"; public static final String MEDICATION = "medication"; - public static final String COL_10 = "Medication_ID"; - public static final String COL_11 = "Medication_Name"; - public static final String COL_12 = "Time_To_Take"; - public static final String COL_13 = "How_Much"; - public static final String COL_14 = "How_Long"; + public static final String COL_10 = "ID"; //0 + public static final String COL_11 = "Medication_Name"; //1 + public static final String COL_12 = "Time_To_Take"; //2 + public static final String COL_13 = "How_Much"; //3 + public static final String COL_14 = "How_Long"; //4 public static final String COL_15 = "User_ID"; public static final String TABLE_NAME_PERSONAL_INFO = "personalInfo"; // TODO: Devasri public static final String COL_16 = "ID"; //all columns in DB @@ -47,6 +47,14 @@ public class DatabaseHelper extends SQLiteOpenHelper { public static final String COL_26 = "KIN_EMAIL"; public static final String COL_27 = "VISIT_DATE"; public static final String COL_28 = "User_ID"; + public static final String TABLE_VITAL_SIGNS = "vitalsigns"; + public static final String COL_35 = "USERID"; + public static final String COL_31 = "CHOLESTEROL"; + public static final String COL_32 = "SYSTOLIC"; + public static final String COL_33 = "GLUCOSE"; + public static final String COL_34 = "HEART_RATE"; + public static final String COL_36 = "DIASTOLIC"; + protected static String currentUser = ""; protected static int currentUserID = -1; protected static String currentUserEmail = ""; @@ -58,15 +66,20 @@ public DatabaseHelper(@Nullable Context context) { @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("CREATE TABLE registeruser (ID INTEGER PRIMARY KEY AUTOINCREMENT, Username TEXT UNIQUE, Password TEXT, Name TEXT, Email TEXT, Address TEXT, Phone TEXT, Security_Question TEXT, Security_Answer TEXT)"); - sqLiteDatabase.execSQL("CREATE TABLE medication (Medication_ID INTEGER PRIMARY KEY AUTOINCREMENT, Medication_Name TEXT, Time_To_Take TEXT, How_Much TEXT, How_Long TEXT, User_ID INTEGER, FOREIGN KEY(User_ID) REFERENCES registeruser(ID) )"); + sqLiteDatabase.execSQL("CREATE TABLE medication (ID INTEGER PRIMARY KEY AUTOINCREMENT, Medication_Name TEXT, Time_To_Take TEXT, How_Much TEXT, How_Long TEXT, User_ID INTEGER, USERNAME TEXT, FOREIGN KEY(User_ID) REFERENCES registeruser(ID) )"); sqLiteDatabase.execSQL("CREATE TABLE personalInfo (ID INTEGER PRIMARY KEY AUTOINCREMENT, WEIGHT INT, HEIGHT INT, AGE INT, GENDER TEXT, DOCTOR_NAME TEXT, DOCTOR_EMAIL TEXT, PHARM_NAME TEXT, PHARM_EMAIL TEXT, KIN_NAME TEXT, KIN_EMAIL TEXT, VISIT_DATE TEXT, User_ID INTEGER, FOREIGN KEY(USER_ID) REFERENCES registeruser(ID))"); + sqLiteDatabase.execSQL("CREATE TABLE vitalsigns (ID INTEGER PRIMARY KEY AUTOINCREMENT, CHOLESTEROL INT, SYSTOLIC INT,DIASTOLIC INT, GLUCOSE INT, HEART_RATE INT,USERNAME TEXT)"); + } + @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + USER_INFO); sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + MEDICATION); sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME_PERSONAL_INFO); + sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_VITAL_SIGNS); + onCreate(sqLiteDatabase); } @@ -120,7 +133,7 @@ public boolean checkUserEmailExists(String username, String email){ return count > 0; } - public boolean addMedication(String medName, String timeToTake, String howMuch, String howLong) { + public boolean addMedication(String username, String medName, String timeToTake, String howMuch, String howLong) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); @@ -129,6 +142,7 @@ public boolean addMedication(String medName, String timeToTake, String howMuch, contentValues.put(COL_13, howMuch); contentValues.put(COL_14, howLong); contentValues.put(COL_15, currentUserID); + contentValues.put(COL_2,username); long res = db.insert(MEDICATION, null, contentValues); db.close(); @@ -243,6 +257,7 @@ public boolean addPersonalInfo(String weight, String height, String age, String public Cursor viewPersonalInfo() { SQLiteDatabase db = this.getWritableDatabase(); Cursor result = db.rawQuery("select * from " + TABLE_NAME_PERSONAL_INFO, null); + result.moveToFirst(); return result; } public boolean updatePersonalInfo(String weight, String height, String age, String gender, String docname, String docemail, String pharmname, String pharmemail, String kinname, String kinemail, String visitdate) { @@ -276,4 +291,105 @@ public boolean updatePersonalInfo(String weight, String height, String age, Stri db.update(TABLE_NAME_PERSONAL_INFO, contentValues, "User_ID = ?", new String[] {String.valueOf(currentUserID)} ); return true; } + + public Cursor checkMedicationExist(String username) + { + SQLiteDatabase db = this.getReadableDatabase(); + String [] columns = {COL_11,COL_13,COL_14}; //name, how much, how long + String selection = COL_2+ "=?"; + String[] loggedIn = {username}; + //cursor.moveToFirst(); + // currentUserID = cursor.getInt(0); + + Cursor result = db.query("medication",columns,"USERNAME = ?",loggedIn,null,null,null); + return result; + + } + + public boolean addVitalSigns(String username,String heartRate,String cholesterol,String glucose, String bloodPressure,String DiastolicbloodPressure) { + + SQLiteDatabase db = this.getWritableDatabase(); + + ContentValues contentValues = new ContentValues(); + + contentValues.put(COL_31, cholesterol); + contentValues.put(COL_32, bloodPressure); + contentValues.put(COL_36, DiastolicbloodPressure); + + contentValues.put(COL_33, glucose); + contentValues.put(COL_34, heartRate); + contentValues.put(COL_2,username); + + long result = db.insert("vitalsigns", null, contentValues); + if (result == -1) + return false; + else + return true; + } + + public boolean updateVitalSigns(String username,String cholesterol,String bloodPressure,String glucose,String heartRate,String DiastolicbloodPressure) + { + SQLiteDatabase db = this.getWritableDatabase(); + ContentValues contentValues = new ContentValues(); + contentValues.put(COL_31,cholesterol); + contentValues.put(COL_32,bloodPressure); + contentValues.put(COL_36,DiastolicbloodPressure); + + contentValues.put(COL_33,glucose); + contentValues.put(COL_34,heartRate); + + db.update("vitalsigns",contentValues,"USERNAME = ?",new String[]{username}); + return true; + + } + + + public Cursor checkVitalSignsExist(String username) + { + SQLiteDatabase db = this.getReadableDatabase(); + String [] columns = {COL_31,COL_32,COL_33,COL_34,COL_36}; + String selection = COL_2+ "=?"; + String[] loggedIn = {username}; + + Cursor result = db.query("vitalsigns",columns,"USERNAME = ?",loggedIn,null,null,null); + return result; + + } + public Cursor checkPersonalInfo( ) { + SQLiteDatabase read = this.getReadableDatabase(); + String[] columns = {COL_1};//,COL_18,COL_19,COL_20,COL_21,COL_22,COL_23,COL_24,COL_25,COL_26,COL_27}; + String selection = COL_2 + "=?"; + String[] loggedIn = {currentUser}; + //int id = getIntent().getIntExtra(); + //Log.d("User:",loggedIn[0]); + Cursor cursor = read.query(USER_INFO,columns,selection,loggedIn,null,null,null); + + // cursor.moveToFirst(); + // currentUserID = cursor.getInt(0); + // cursor.close(); + return cursor; + } + + public boolean updateWeightInfo(String weight) { + SQLiteDatabase db = this.getWritableDatabase(); + ContentValues contentValues = new ContentValues(); + SQLiteDatabase read = getReadableDatabase(); + String[] columns = {COL_1}; + String selection = COL_2 + "=?"; + String[] loggedIn = {currentUser}; + //int id = getIntent().getIntExtra(); + //Log.d("User:",loggedIn[0]); + Cursor cursor = read.query(USER_INFO,columns,selection,loggedIn,null,null,null); + + cursor.moveToFirst(); + currentUserID = cursor.getInt(0); + + //contentValues.put("ID", id); + contentValues.put("WEIGHT", weight); + contentValues.put("User_ID", currentUserID); + cursor.close(); + db.update(TABLE_NAME_PERSONAL_INFO, contentValues, "User_ID = ?", new String[] {String.valueOf(currentUserID)} ); + return true; + } + } diff --git a/app/src/main/java/com/example/loginregistration/DietActivity.java b/app/src/main/java/com/example/loginregistration/DietActivity.java new file mode 100644 index 0000000..08cfe78 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/DietActivity.java @@ -0,0 +1,152 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import android.widget.AdapterView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.Spinner; +import android.widget.TextView; +import android.widget.Toast; + + +import java.util.ArrayList; + +import static java.lang.Integer.getInteger; + + +public class DietActivity extends AppCompatActivity { + private ArrayList mFoodList; + private FoodAdapter mAdapter; + + int calorie_counter; + int food_cal; + + + + Button dButtonConfirm; + Button dButtonContinue; + ImageView dImageViewBack; + TextView dTextViewNew; + TextView dTextViewWeight; + EditText dEditServe; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_diet); + + initList(); + Spinner spinnerFoods = (findViewById(R.id.choice)); + mAdapter = new FoodAdapter(this,mFoodList); + spinnerFoods.setAdapter(mAdapter); + spinnerFoods.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + FoodItem clickedItem = (FoodItem) parent.getItemAtPosition(position); + String clickedFoodName = clickedItem.getFoodName(); + food_cal = clickedItem.getFoodCal(); + Toast.makeText(DietActivity.this, clickedFoodName + " selected", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + + }); + + dTextViewNew = (TextView)findViewById(R.id.food_here); + dTextViewNew.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent NewerIntent = new Intent(DietActivity.this,NewFoodActivity.class); + startActivity(NewerIntent); + + } + }); + + dTextViewWeight = (TextView)findViewById(R.id.weight_change); + dTextViewWeight.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent NewerIntent = new Intent(DietActivity.this,WeightActivity.class); + startActivity(NewerIntent); + + } + }); + + dImageViewBack = (ImageView)findViewById(R.id.imageView_backButtonDiet); + dImageViewBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent DietToHomeIntent = new Intent(DietActivity.this, HomeActivity.class); + startActivity(DietToHomeIntent); + } + }); + + dEditServe = (EditText)findViewById(R.id.serving); + dButtonConfirm = (Button) findViewById(R.id.Next); + dButtonConfirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int amount = Integer.parseInt( dEditServe.getText().toString() ); + + int new_value = food_cal*amount; + calorie_counter+=new_value; + String again = Integer.toString(new_value); + + Toast.makeText(DietActivity.this, new_value + " Added Calories", Toast.LENGTH_SHORT).show(); + } + }); + + dButtonContinue = (Button) findViewById(R.id.confirm); + dButtonContinue.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + String result = Integer.toString(calorie_counter); + + Toast.makeText(DietActivity.this, result + " Calories Consumed", Toast.LENGTH_LONG).show(); + } + }); + + } + + private void initList() { + mFoodList = new ArrayList<>(); + mFoodList.add(new FoodItem("Pick", R.drawable.pick, 0)); + mFoodList.add(new FoodItem("Fish", R.drawable.fish,366)); + mFoodList.add(new FoodItem("Steak", R.drawable.steak,679)); + mFoodList.add(new FoodItem("Eggs", R.drawable.eggs,78)); + mFoodList.add(new FoodItem("Salad", R.drawable.salad,417)); + mFoodList.add(new FoodItem("Pizza", R.drawable.pizza,2269)); + mFoodList.add(new FoodItem("Bread", R.drawable.bread,79)); + mFoodList.add(new FoodItem("Soup", R.drawable.soup,85)); + mFoodList.add(new FoodItem("Rice", R.drawable.rice,206)); + mFoodList.add(new FoodItem("Sushi", R.drawable.sushi,250)); + mFoodList.add(new FoodItem("Ravioli", R.drawable.ravioli,187)); + mFoodList.add(new FoodItem("Hot Dog", R.drawable.hotdog,151)); + mFoodList.add(new FoodItem("Twinkies", R.drawable.twinkies,270)); + mFoodList.add(new FoodItem("Cornbread", R.drawable.cornbread,198)); + mFoodList.add(new FoodItem("Chips", R.drawable.chips,1217)); + mFoodList.add(new FoodItem("Beans", R.drawable.beans,670)); + mFoodList.add(new FoodItem("Popcorn", R.drawable.popcorn,380)); + mFoodList.add(new FoodItem("Waffles", R.drawable.waffles,218)); + mFoodList.add(new FoodItem("Pancakes", R.drawable.pancakes,175)); + mFoodList.add(new FoodItem("Wings", R.drawable.wings,203)); + mFoodList.add(new FoodItem("Ribs", R.drawable.ribs,1015)); + mFoodList.add(new FoodItem("BLT", R.drawable.blt,344)); + mFoodList.add(new FoodItem("Pie", R.drawable.pie,296)); + mFoodList.add(new FoodItem("Cookies", R.drawable.cookie,78)); + mFoodList.add(new FoodItem("Nachos", R.drawable.nachos,346)); + mFoodList.add(new FoodItem("Sandwich", R.drawable.sandwich,266)); + mFoodList.add(new FoodItem("Hamburger", R.drawable.hamburger,354)); + } + +} diff --git a/app/src/main/java/com/example/loginregistration/FoodAdapter.java b/app/src/main/java/com/example/loginregistration/FoodAdapter.java new file mode 100644 index 0000000..c639fd5 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/FoodAdapter.java @@ -0,0 +1,53 @@ +package com.example.loginregistration; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.util.ArrayList; + +public class FoodAdapter extends ArrayAdapter { + + public FoodAdapter(Context context, ArrayListfoodlist){ + super(context, 0,foodlist); + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + return initView(position, convertView, parent); + } + + @Override + public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + return initView(position,convertView,parent); + } + + private View initView(int position, View convertView, ViewGroup parent){ + if(convertView==null){ + convertView = LayoutInflater.from(getContext()).inflate( + R.layout.food_spinner_row, parent, false + ); + } + + ImageView imageViewFood = convertView.findViewById(R.id.image_view_food); + TextView textViewName = convertView.findViewById(R.id.text_view_name); + + FoodItem currentItem =getItem(position); + + if(currentItem!=null) { + imageViewFood.setImageResource(currentItem.getFoodImage()); + textViewName.setText(currentItem.getFoodName()); + } + + return convertView; + } +} diff --git a/app/src/main/java/com/example/loginregistration/FoodItem.java b/app/src/main/java/com/example/loginregistration/FoodItem.java new file mode 100644 index 0000000..79cbb07 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/FoodItem.java @@ -0,0 +1,23 @@ +package com.example.loginregistration; + +public class FoodItem { + private String mFoodName; + private int mFoodImage; + private int mFoodCal; + + public FoodItem(String FoodName, int FoodImage, int FoodCal) { + mFoodName = FoodName; + mFoodImage = FoodImage; + mFoodCal = FoodCal; + } + public String getFoodName() { + return mFoodName; + } + public int getFoodImage() { + return mFoodImage; + } + + public int getFoodCal() { + return mFoodCal; + } +} diff --git a/app/src/main/java/com/example/loginregistration/HomeActivity.java b/app/src/main/java/com/example/loginregistration/HomeActivity.java index d5e6601..f2d1bc2 100644 --- a/app/src/main/java/com/example/loginregistration/HomeActivity.java +++ b/app/src/main/java/com/example/loginregistration/HomeActivity.java @@ -25,8 +25,16 @@ protected void onCreate(Bundle savedInstanceState) { ImageButton mButtonPersonalInfo = (ImageButton) findViewById(R.id.imageButton_PersonalInfo); ImageButton mButtonMedication = (ImageButton) findViewById(R.id.imageButton_Medicine); ImageButton mButtonSettings = (ImageButton) findViewById(R.id.imageButton_Settings); + + ImageButton mButtonVitalSigns = (ImageButton) findViewById(R.id.imageButton_vitalSigns); + ImageButton mButtonSearch = (ImageButton) findViewById(R.id.imageButton_search); + ImageButton mButtonMonitoringSystem = (ImageButton) findViewById(R.id.imageButton_MonitoringSystem); + ImageButton mButtonDiet = (ImageButton) findViewById(R.id.imageButton_Diet); + ImageButton mButtonComm = (ImageButton) findViewById(R.id.imageButton_Communication); + + mButtonMedication.setOnClickListener(view -> { Intent medicationIntent = new Intent(HomeActivity.this, ViewMedicationActivity.class); startActivity(medicationIntent); @@ -42,9 +50,44 @@ protected void onCreate(Bundle savedInstanceState) { startActivity(SettingsIntent); }); - mButtonMonitoringSystem.setOnClickListener(view -> { + mButtonVitalSigns.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent vitalSignsIntent = new Intent(HomeActivity.this, VitalSigns.class); + startActivity(vitalSignsIntent); + } + }); + mButtonSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent searchIntent = new Intent(HomeActivity.this, Search.class); + startActivity(searchIntent); + } + }); + + + mButtonMonitoringSystem.setOnClickListener(v -> { Intent monitoringSystemIntent = new Intent(HomeActivity.this, MonitoringSystemActivity.class); startActivity(monitoringSystemIntent); + + }); + + mButtonDiet.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view){ + Intent dietInfoIntent = new Intent(HomeActivity.this, DietActivity.class); + startActivity(dietInfoIntent); + } + + }); + + mButtonComm.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view){ + Intent comInfoIntent = new Intent(HomeActivity.this, CommunicationsActivity.class); + startActivity(comInfoIntent); + } + }); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/loginregistration/MedicationActivity.java b/app/src/main/java/com/example/loginregistration/MedicationActivity.java index c19bdfd..499cea7 100644 --- a/app/src/main/java/com/example/loginregistration/MedicationActivity.java +++ b/app/src/main/java/com/example/loginregistration/MedicationActivity.java @@ -76,7 +76,9 @@ protected void onCreate(Bundle savedInstanceState) { } else if (TextUtils.isEmpty(howLong)) { mTextHowLong.setError("Length of time needed to take medication is required!"); } else { - boolean val = db.addMedication(med, timeToTake, dosage, howLong); + //boolean val = db.addMedication(med, timeToTake, dosage, howLong); + boolean val = db.addMedication(db.currentUser.toString(),String.valueOf(med),String.valueOf(timeToTake),String.valueOf(dosage),String.valueOf(howLong)); + if (val) { Toast.makeText(MedicationActivity.this, "Medication Information Saved", Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/example/loginregistration/MonitoringSystemActivity.java b/app/src/main/java/com/example/loginregistration/MonitoringSystemActivity.java index 5113bb3..2dd17f6 100644 --- a/app/src/main/java/com/example/loginregistration/MonitoringSystemActivity.java +++ b/app/src/main/java/com/example/loginregistration/MonitoringSystemActivity.java @@ -41,6 +41,7 @@ public class MonitoringSystemActivity extends AppCompatActivity { EditText mEditTextmessage; Button mButtonMedSend; Button btnSetNotification; + Button mButtonTrackMed; @Override protected void onCreate(Bundle savedInstanceState) { @@ -55,6 +56,11 @@ protected void onCreate(Bundle savedInstanceState) { startActivity(MonViewToHome); }); + Button mButtonTrackMed = (Button) findViewById(R.id.mButtonTrackMed); + mButtonTrackMed.setOnClickListener(view -> { + Intent MonotoTrackerActivity = new Intent( MonitoringSystemActivity.this, TrackerActivity.class); + startActivity(MonotoTrackerActivity); + }); Button btnSetNotification = (Button) findViewById(R.id.btnSetNotification); btnSetNotification.setOnClickListener(view -> { diff --git a/app/src/main/java/com/example/loginregistration/NewFoodActivity.java b/app/src/main/java/com/example/loginregistration/NewFoodActivity.java new file mode 100644 index 0000000..af7ef7a --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/NewFoodActivity.java @@ -0,0 +1,69 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import static java.lang.Integer.getInteger; + +public class NewFoodActivity extends AppCompatActivity { + + Button dButtonConfirm; + EditText dEditServe; + EditText dEditCal; + EditText dEditName; + ImageView dImageViewBack; + + int calorie_counter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_new_food); + + Intent mIntent = getIntent(); + calorie_counter = mIntent.getIntExtra("Calorie_ID",0); + + dEditServe = (EditText) findViewById(R.id.serving2); + dEditCal = (EditText) findViewById(R.id.Calories); + dEditName = (EditText) findViewById(R.id.Undisc); + + dButtonConfirm = (Button)findViewById(R.id.button2); + + dButtonConfirm.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View v) { + int amount = Integer.parseInt( dEditServe.getText().toString() ); + int cal = Integer.parseInt( dEditCal.getText().toString() ); + + + int new_value = cal*amount; + calorie_counter+=new_value; + String again = Integer.toString(new_value); + + Toast.makeText(NewFoodActivity.this, again + " Calories", Toast.LENGTH_SHORT).show(); + + Intent LoginIntent = new Intent(NewFoodActivity.this, DietActivity.class); + startActivity(LoginIntent); + } + }); + + dImageViewBack = (ImageView)findViewById(R.id.imageView_backButtonDiet); + dImageViewBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent NewToDietIntent = new Intent(NewFoodActivity.this, DietActivity.class); + startActivity(NewToDietIntent); + } + }); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/NotifClass.java b/app/src/main/java/com/example/loginregistration/NotifClass.java new file mode 100644 index 0000000..59d2a68 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/NotifClass.java @@ -0,0 +1,35 @@ +package com.example.loginregistration; + +import android.app.Application; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.os.Build; + +public class NotifClass extends Application { + public static final String CHANNEL_1_ID = "channel1"; + public static final String CHANNEL_2_ID = "channel2"; + @Override + public void onCreate() { + super.onCreate(); + createNotificationChannels(); + } + private void createNotificationChannels() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannel channel1 = new NotificationChannel( + CHANNEL_1_ID, + "Channel 1", + NotificationManager.IMPORTANCE_HIGH + ); + channel1.setDescription("This is Channel 1"); + NotificationChannel channel2 = new NotificationChannel( + CHANNEL_2_ID, + "Channel 2", + NotificationManager.IMPORTANCE_LOW + ); + channel2.setDescription("This is Channel 2"); + NotificationManager manager = getSystemService(NotificationManager.class); + manager.createNotificationChannel(channel1); + manager.createNotificationChannel(channel2); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/NotificationActivity.java b/app/src/main/java/com/example/loginregistration/NotificationActivity.java index 581dfa3..a6db948 100644 --- a/app/src/main/java/com/example/loginregistration/NotificationActivity.java +++ b/app/src/main/java/com/example/loginregistration/NotificationActivity.java @@ -1,6 +1,7 @@ package com.example.loginregistration; import android.app.DatePickerDialog; +import android.app.Notification; import android.app.TimePickerDialog; import android.content.Intent; import android.os.Bundle; @@ -10,23 +11,38 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.TimePicker; + +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; + +import static com.example.loginregistration.NotifClass.CHANNEL_1_ID; +//import static com.codinginflow.notificationsexample.App.CHANNEL_2_ID; + import java.util.Calendar; +import static com.example.loginregistration.NotifClass.CHANNEL_1_ID; + public class NotificationActivity extends AppCompatActivity implements View.OnClickListener { Button btnDatePicker, btnTimePicker, btnNotify, mBackNotification; - EditText txtDate, txtTime, eTitle, etContent; + EditText txtDate, txtTime; + private EditText eTitle, etContent; private int mYear, mMonth, mDay, mHour, mMinute; - ////DatePickerDialog dpd; - //TimePickerDialog tpd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_notification); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); - Button btnNotify = (Button)findViewById(R.id.btnNotify); + eTitle = findViewById(R.id.eTitle); + etContent = findViewById(R.id.etContent); + + btnNotify = (Button)findViewById(R.id.btnNotify); btnTimePicker=(Button)findViewById(R.id.btn_time); txtTime=(EditText)findViewById(R.id.in_time); @@ -37,9 +53,29 @@ protected void onCreate(Bundle savedInstanceState) { }); //btnDatePicker.setOnClickListener(this); btnTimePicker.setOnClickListener(this); + } - } +public void sendOnChannel1(View v) { + btnNotify.setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View view) { + String title = eTitle.getText().toString(); + String message = etContent.getText().toString(); + Notification notification = new NotificationCompat.Builder(NotificationActivity.this, CHANNEL_1_ID) + .setSmallIcon(R.drawable.ic_android_black_24dp) + .setContentTitle(title) + .setContentText(message) + .setPriority(NotificationCompat.PRIORITY_HIGH) + .setCategory(NotificationCompat.CATEGORY_MESSAGE) + .build(); + NotificationManagerCompat notificationManager = NotificationManagerCompat.from(NotificationActivity.this);; + notificationManager.notify(1, notification); + } + } + ); +} @Override public void onClick(View v) { diff --git a/app/src/main/java/com/example/loginregistration/ReviewInformation.java b/app/src/main/java/com/example/loginregistration/ReviewInformation.java new file mode 100644 index 0000000..b281ec6 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/ReviewInformation.java @@ -0,0 +1,126 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +public class ReviewInformation extends AppCompatActivity { + + DatabaseHelper myDb; + + TextView tv1; + TextView tv2; + TextView tv3; + TextView tv4,tv5; + + int printHeartRate; + int cholestrol; + int glucoseLevel; + int bloodPressure; + int diastolic; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_review_information); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + + + + ImageView reviewB = (ImageView) findViewById(R.id.reviewBack); + reviewB.setOnClickListener(view -> { + finish(); + }); + + + myDb = new DatabaseHelper(this); + + + + tv1 = findViewById(R.id.textView); + tv2 = findViewById(R.id.textView2); + tv3 = findViewById(R.id.textView3); + tv4 = findViewById(R.id.textView4); + tv5 = findViewById(R.id.textView5); + + printHeartRate = getIntent().getExtras().getInt("value1"); + tv1.setText("Heart Rate: "+String.valueOf(printHeartRate)); + + cholestrol = getIntent().getExtras().getInt("value2"); + tv2.setText("Cholestrol: "+String.valueOf(cholestrol)); + + glucoseLevel = getIntent().getExtras().getInt("value3"); + tv3.setText("Glucose Level: "+String.valueOf(glucoseLevel)); + + bloodPressure = getIntent().getExtras().getInt("value4"); + tv4.setText("Systolic BP: "+String.valueOf(bloodPressure)); + + diastolic= getIntent().getExtras().getInt("value5"); + tv5.setText(" Diastolic BP: "+String.valueOf(diastolic)); + + Button makeChanges = (Button)findViewById(R.id.button3); + makeChanges.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v) + { + finish(); + } + }); + Button submit = (Button)findViewById(R.id.button2); + submit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + Cursor data = myDb.checkVitalSignsExist(myDb.currentUser.toString()); //// + if(data.getCount()==0) { + addSigns(); + } + else { + updateSigns(); + } + data.close(); + Intent mainIntent = new Intent(ReviewInformation.this, HomeActivity.class); + startActivity(mainIntent); + + } + }); + + + + + } + + public void addSigns() + { + boolean insertTrue = myDb.addVitalSigns(myDb.currentUser.toString(),String.valueOf(printHeartRate),String.valueOf(cholestrol),String.valueOf(glucoseLevel),String.valueOf(bloodPressure),String.valueOf(diastolic)); + // boolean insertTrue = myDb.addVitalSigns("12","13","14","15"); + if(insertTrue==true) + { + Toast.makeText(ReviewInformation.this,"Data Inserted!",Toast.LENGTH_LONG).show(); + } + else + Toast.makeText(ReviewInformation.this,"Data not Inserted!",Toast.LENGTH_LONG).show(); + + } + + public void updateSigns() + { + boolean insertTrue = myDb.updateVitalSigns(myDb.currentUser.toString(),String.valueOf(printHeartRate),String.valueOf(cholestrol),String.valueOf(glucoseLevel),String.valueOf(bloodPressure),String.valueOf(diastolic)); + if(insertTrue==true) + { + Toast.makeText(ReviewInformation.this,"Data updated!",Toast.LENGTH_LONG).show(); + } + else + Toast.makeText(ReviewInformation.this,"Data not updated!",Toast.LENGTH_LONG).show(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/Search.java b/app/src/main/java/com/example/loginregistration/Search.java new file mode 100644 index 0000000..16f0ccc --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/Search.java @@ -0,0 +1,156 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.Toast; + +public class Search extends AppCompatActivity { + DatabaseHelper myDb; + ImageButton searchButton; + EditText searchWord; + String key; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_search); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + + ImageView mImage = (ImageView) findViewById(R.id.mImageViewBack); + mImage.setOnClickListener(view -> { + Intent PersonalViewToHome = new Intent( Search.this, HomeActivity.class); + startActivity(PersonalViewToHome); + }); + + + myDb = new DatabaseHelper(this); + + searchButton = (ImageButton) findViewById(R.id.imageButtonSearch); + + + searchButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + searchWord = (EditText) findViewById(R.id.keyword); + key = searchWord.getText().toString(); + + String vsign = ""; + StringBuffer buffer = new StringBuffer(); + + + Cursor cur = myDb.checkVitalSignsExist(myDb.currentUser.toString()); + + if (("username".toLowerCase()).equals(key.toLowerCase().trim())) + { + + vsign = "Username: " + myDb.currentUser.toString(); + + Intent resultIntent = new Intent(Search.this, SearchResults.class); + resultIntent.putExtra("resultvalue", vsign); + startActivity(resultIntent); + } + + + else if (cur.getCount() == 0) { + int i=0; + + if (("Cholesterol".toLowerCase()).equals(key.toLowerCase().trim())) + { + i=1; + } + else if (("Heart rate".toLowerCase()).equals(key.toLowerCase().trim())) + { + i=1; + } + else if (("Blood Pressure".toLowerCase()).equals(key.toLowerCase().trim())) + { + i=1; + } + else if (("Glucose".toLowerCase()).equals(key.toLowerCase().trim())) + { + i=1; + } + + if(i==1) + Toast.makeText(Search.this, "Please initialize vital sign values before using search function", Toast.LENGTH_LONG).show(); + else + { + Toast.makeText(Search.this, "Input didn't match any data :(", Toast.LENGTH_LONG).show(); + } + + } + else + { + + cur.moveToNext(); + + + + if (("Cholesterol".toLowerCase()).equals(key.toLowerCase().trim())) { + vsign = "Cholestrol: " + cur.getString(0) + "(cal)"; + + } else if (("Heart rate".toLowerCase()).equals(key.toLowerCase().trim())) { + vsign = "Heart rate: " + cur.getString(4) + "(bpm)"; + + } else if (("Blood Pressure".toLowerCase()).equals(key.toLowerCase().trim())) { + vsign = "Systolic Blood Pressure: " + cur.getString(1) + "(mmHg)" + "\n" + "Diastolic Blood Pressure: " + cur.getString(2) + "(mmHg)"; + } else if (("Glucose".toLowerCase()).equals(key.toLowerCase().trim())) { + vsign = "Glucose: " + cur.getString(3) + "(mg/dL)"; + + } else if (("username".toLowerCase()).equals(key.toLowerCase().trim())) { + vsign = "Username: " + myDb.currentUser.toString(); + + } + + else { + Toast.makeText(Search.this, "Input didn't match any data :(", Toast.LENGTH_LONG).show(); + } + + if (vsign.length() > 0) { + Intent resultIntent = new Intent(Search.this, SearchResults.class); + resultIntent.putExtra("resultvalue", vsign); + + startActivity(resultIntent); + } + } + } + + }); + + + + } +} + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/example/loginregistration/SearchResults.java b/app/src/main/java/com/example/loginregistration/SearchResults.java new file mode 100644 index 0000000..3fd27f3 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/SearchResults.java @@ -0,0 +1,53 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +public class SearchResults extends AppCompatActivity { + TextView resl; + String resultValue; + Button searchButton,doneSearching; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_search_results); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + + ImageView mImg = (ImageView) findViewById(R.id.mBack); + mImg.setOnClickListener(view -> { + finish(); + }); + + + + resl = (TextView)findViewById(R.id.result); + resultValue = getIntent().getExtras().getString("resultvalue"); + resl.setText(resultValue); + + searchButton = findViewById(R.id.button4); + searchButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + doneSearching = findViewById(R.id.button5); + doneSearching.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent homeIntent = new Intent(SearchResults.this, HomeActivity.class); + startActivity(homeIntent); + } + }); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/TrackerActivity.java b/app/src/main/java/com/example/loginregistration/TrackerActivity.java new file mode 100644 index 0000000..e2f21ac --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/TrackerActivity.java @@ -0,0 +1,94 @@ +package com.example.loginregistration; + + +import androidx.appcompat.app.ActionBar; + import androidx.appcompat.app.AppCompatActivity; + + import android.content.Intent; + import android.database.Cursor; + import android.database.sqlite.SQLiteDatabase; + import android.os.Bundle; + import android.view.View; + import android.widget.Button; + import android.widget.EditText; + import android.widget.ImageButton; + import android.widget.ImageView; + import android.widget.Toast; + +public class TrackerActivity extends AppCompatActivity { + DatabaseHelper myDb; + ImageButton searchButton; + EditText searchWord; + String key; + String medname; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tracker); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + + ImageView mImage = (ImageView) findViewById(R.id.mImageViewBack); + mImage.setOnClickListener(view -> { + Intent PersonalViewToHome = new Intent( TrackerActivity.this, HomeActivity.class); + startActivity(PersonalViewToHome); + }); + + + myDb = new DatabaseHelper(this); + + searchButton = (ImageButton) findViewById(R.id.imageButtonSearch); + + + searchButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + searchWord = (EditText) findViewById(R.id.keyword); + key = searchWord.getText().toString(); + + String vsign = ""; + String dose = ""; + String days = ""; + StringBuffer buffer = new StringBuffer(); + Cursor cur = myDb.checkMedicationExist(myDb.currentUser.toString()); + + if (cur.getCount() == 0) { + int i=0; + if(i==1) + Toast.makeText(TrackerActivity.this, "Please initialize vital sign values before using search function", Toast.LENGTH_LONG).show(); + else + { + Toast.makeText(TrackerActivity.this, "Input didn't match any data :(", Toast.LENGTH_LONG).show(); + } + + } + else + { + + cur.moveToNext(); + medname = cur.getString(0); + + if (medname.equals(key.trim())) { + vsign = "Medication: " + cur.getString(0) + "\n" + "Dosage: " + cur.getString(1) + "\n" + "Days: " + cur.getString(2) + "\n"; + ////dose = "Dosage: " + cur.getString(1) + "\n"; + //days = "Days: " + cur.getString(2) + "\n"; + } + else { + Toast.makeText(TrackerActivity.this, "Input didn't match any data :(", Toast.LENGTH_LONG).show(); + } + + if (vsign.length() > 0) { + Intent resultIntent = new Intent(TrackerActivity.this, TrackerResultActivity.class); + resultIntent.putExtra("resultvalue", vsign); + + startActivity(resultIntent); + } + } + } + + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/TrackerResultActivity.java b/app/src/main/java/com/example/loginregistration/TrackerResultActivity.java new file mode 100644 index 0000000..56476c7 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/TrackerResultActivity.java @@ -0,0 +1,43 @@ +package com.example.loginregistration; + + import androidx.appcompat.app.ActionBar; + import androidx.appcompat.app.AppCompatActivity; + import android.content.Intent; + import android.os.Bundle; + import android.view.View; + import android.widget.Button; + import android.widget.ImageView; + import android.widget.TextView; + +public class TrackerResultActivity extends AppCompatActivity { + TextView resl; + String resultValue; + Button donebtn; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tracker_result); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + + ImageView mImg = (ImageView) findViewById(R.id.mBack); + mImg.setOnClickListener(view -> { + finish(); + }); + + resl = (TextView)findViewById(R.id.result); + resultValue = getIntent().getExtras().getString("resultvalue"); + resl.setText(resultValue); + + donebtn = findViewById(R.id.donebtn); + donebtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent homeIntent = new Intent(TrackerResultActivity.this, HomeActivity.class); + startActivity(homeIntent); + } + }); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/VitalSigns.java b/app/src/main/java/com/example/loginregistration/VitalSigns.java new file mode 100644 index 0000000..5b3fc11 --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/VitalSigns.java @@ -0,0 +1,126 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + + +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +public class VitalSigns extends AppCompatActivity { + DatabaseHelper myDb; + + EditText e1,e2,e3,e4,e5; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_vital_signs); + ActionBar actionBar = getSupportActionBar(); + actionBar.hide(); + + ImageView backB = (ImageView) findViewById(R.id.vitalBack); + backB.setOnClickListener(view -> { + Intent PersonalViewToHome = new Intent( VitalSigns.this, HomeActivity.class); + startActivity(PersonalViewToHome); + }); + + + myDb = new DatabaseHelper(this); + + + + e1 = findViewById(R.id.reading1); + e2 = findViewById(R.id.reading2); + e3 = findViewById(R.id.reading3); + e4 = findViewById(R.id.reading4); + e4.setHint("Systolic"); + e5 = findViewById(R.id.reading4b); + e5.setHint("Diastolic"); + Button next = findViewById(R.id.button); + + Context context = getApplicationContext(); + int duration = Toast.LENGTH_SHORT; + + next.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v) + { + + openActivity(); + } + }); + + + + + + + + } + public void openActivity() { + final EditText firstReading = findViewById(R.id.reading1); + final EditText secondReading = findViewById(R.id.reading2); + final EditText thirdReading = findViewById(R.id.reading3); + final EditText fourthReading = findViewById(R.id.reading4); + final EditText fifthReading = findViewById(R.id.reading4b); + + + if ((firstReading.length() == 0) || (secondReading.length() == 0) || (thirdReading.length() == 0) || (fourthReading.length() == 0) || (fifthReading.length() == 0)) + Toast.makeText(VitalSigns.this, "Please fill in all the required fields correctly!", Toast.LENGTH_LONG).show(); + else { + + + int heartRate = Integer.parseInt(firstReading.getText().toString()); + int cholestrol = Integer.parseInt(secondReading.getText().toString()); + int glucoseLevel = Integer.parseInt(thirdReading.getText().toString()); + int bloodPressure = Integer.parseInt(fourthReading.getText().toString()); + int diastolic = Integer.parseInt(fifthReading.getText().toString()); + + if((heartRate<1)||(heartRate>220)) + Toast.makeText(VitalSigns.this, "Heart Rate is out of range!", Toast.LENGTH_LONG).show(); + else if((bloodPressure<1)||(bloodPressure>200)) + { + Toast.makeText(VitalSigns.this, "Systolic Blood Pressure is out of range!", Toast.LENGTH_LONG).show(); + + } + + else if((diastolic<1)||(diastolic>350)) + { + Toast.makeText(VitalSigns.this, "Diastolic Blood Pressure is out of range!", Toast.LENGTH_LONG).show(); + + } + else if((glucoseLevel<1)||(glucoseLevel>1500)) + { + Toast.makeText(VitalSigns.this, "Glucose level is out of range!", Toast.LENGTH_LONG).show(); + } + else if((cholestrol<1)||(cholestrol>1500)) + { + Toast.makeText(VitalSigns.this, "Cholesterol is out of range!", Toast.LENGTH_LONG).show(); + + } + else { + Intent downloadIntent = new Intent(this, ReviewInformation.class); + downloadIntent.putExtra("value1", heartRate); + downloadIntent.putExtra("value2", cholestrol); + downloadIntent.putExtra("value3", glucoseLevel); + downloadIntent.putExtra("value4", bloodPressure); + downloadIntent.putExtra("value5", diastolic); + + startActivity(downloadIntent); + } + + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/loginregistration/WeightActivity.java b/app/src/main/java/com/example/loginregistration/WeightActivity.java new file mode 100644 index 0000000..9359bab --- /dev/null +++ b/app/src/main/java/com/example/loginregistration/WeightActivity.java @@ -0,0 +1,48 @@ +package com.example.loginregistration; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +public class WeightActivity extends AppCompatActivity { + DatabaseHelper myDb; + + EditText mTextWeight; + Button mButtonUpdateWeightInfo; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_weight); + + myDb = new DatabaseHelper(this); + + mTextWeight = (EditText)findViewById(R.id.mTextWeight); + mButtonUpdateWeightInfo = (Button) findViewById(R.id.mButtonUpdatePersonalInfo); + + UpdateWeightData(); + } + + public void UpdateWeightData() { + mButtonUpdateWeightInfo.setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View view) { + boolean isUpdate = myDb.updateWeightInfo(mTextWeight.getText().toString()); + + if(isUpdate) { + Toast.makeText(WeightActivity.this, "Data Updated", Toast.LENGTH_LONG).show(); + } + else { + Toast.makeText(WeightActivity.this, "Not Updated", Toast.LENGTH_LONG).show(); + + } + } + } + ); + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/commu.PNG b/app/src/main/res/drawable-hdpi/commu.PNG new file mode 100644 index 0000000..f6490ae Binary files /dev/null and b/app/src/main/res/drawable-hdpi/commu.PNG differ diff --git a/app/src/main/res/drawable-hdpi/diet.PNG b/app/src/main/res/drawable-hdpi/diet.PNG new file mode 100644 index 0000000..bf6ed84 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/diet.PNG differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_name.png b/app/src/main/res/drawable-hdpi/ic_action_name.png new file mode 100644 index 0000000..ecb475a Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_name.png differ diff --git a/app/src/main/res/drawable-hdpi/search.png b/app/src/main/res/drawable-hdpi/search.png new file mode 100644 index 0000000..3d78c7d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/search.png differ diff --git a/app/src/main/res/drawable-hdpi/vitalsigns.png b/app/src/main/res/drawable-hdpi/vitalsigns.png new file mode 100644 index 0000000..0869946 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/vitalsigns.png differ diff --git a/app/src/main/res/drawable-mdpi/apple.png b/app/src/main/res/drawable-mdpi/apple.png new file mode 100644 index 0000000..505027b Binary files /dev/null and b/app/src/main/res/drawable-mdpi/apple.png differ diff --git a/app/src/main/res/drawable-mdpi/commu.PNG b/app/src/main/res/drawable-mdpi/commu.PNG new file mode 100644 index 0000000..f6490ae Binary files /dev/null and b/app/src/main/res/drawable-mdpi/commu.PNG differ diff --git a/app/src/main/res/drawable-mdpi/diet.PNG b/app/src/main/res/drawable-mdpi/diet.PNG new file mode 100644 index 0000000..bf6ed84 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/diet.PNG differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_name.png b/app/src/main/res/drawable-mdpi/ic_action_name.png new file mode 100644 index 0000000..fd1bd33 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_name.png differ diff --git a/app/src/main/res/drawable-mdpi/search.png b/app/src/main/res/drawable-mdpi/search.png new file mode 100644 index 0000000..3d78c7d Binary files /dev/null and b/app/src/main/res/drawable-mdpi/search.png differ diff --git a/app/src/main/res/drawable-mdpi/vitalsigns.png b/app/src/main/res/drawable-mdpi/vitalsigns.png new file mode 100644 index 0000000..0869946 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/vitalsigns.png differ diff --git a/app/src/main/res/drawable-xhdpi/apple.png b/app/src/main/res/drawable-xhdpi/apple.png new file mode 100644 index 0000000..505027b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/apple.png differ diff --git a/app/src/main/res/drawable-xhdpi/commu.PNG b/app/src/main/res/drawable-xhdpi/commu.PNG new file mode 100644 index 0000000..f6490ae Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/commu.PNG differ diff --git a/app/src/main/res/drawable-xhdpi/diet.PNG b/app/src/main/res/drawable-xhdpi/diet.PNG new file mode 100644 index 0000000..bf6ed84 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/diet.PNG differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_name.png b/app/src/main/res/drawable-xhdpi/ic_action_name.png new file mode 100644 index 0000000..4d89c21 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_name.png differ diff --git a/app/src/main/res/drawable-xhdpi/search.png b/app/src/main/res/drawable-xhdpi/search.png new file mode 100644 index 0000000..3d78c7d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/search.png differ diff --git a/app/src/main/res/drawable-xhdpi/vitalsigns.png b/app/src/main/res/drawable-xhdpi/vitalsigns.png new file mode 100644 index 0000000..0869946 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/vitalsigns.png differ diff --git a/app/src/main/res/drawable-xxhdpi/apple.png b/app/src/main/res/drawable-xxhdpi/apple.png new file mode 100644 index 0000000..505027b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/apple.png differ diff --git a/app/src/main/res/drawable-xxhdpi/commu.PNG b/app/src/main/res/drawable-xxhdpi/commu.PNG new file mode 100644 index 0000000..f6490ae Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/commu.PNG differ diff --git a/app/src/main/res/drawable-xxhdpi/diet.PNG b/app/src/main/res/drawable-xxhdpi/diet.PNG new file mode 100644 index 0000000..bf6ed84 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/diet.PNG differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_name.png b/app/src/main/res/drawable-xxhdpi/ic_action_name.png new file mode 100644 index 0000000..ac9848a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_name.png differ diff --git a/app/src/main/res/drawable-xxhdpi/search.png b/app/src/main/res/drawable-xxhdpi/search.png new file mode 100644 index 0000000..3d78c7d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/search.png differ diff --git a/app/src/main/res/drawable-xxhdpi/vitalsigns.png b/app/src/main/res/drawable-xxhdpi/vitalsigns.png new file mode 100644 index 0000000..0869946 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/vitalsigns.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/apple.png b/app/src/main/res/drawable-xxxhdpi/apple.png new file mode 100644 index 0000000..505027b Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/apple.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/commu.PNG b/app/src/main/res/drawable-xxxhdpi/commu.PNG new file mode 100644 index 0000000..f6490ae Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/commu.PNG differ diff --git a/app/src/main/res/drawable-xxxhdpi/diet.PNG b/app/src/main/res/drawable-xxxhdpi/diet.PNG new file mode 100644 index 0000000..bf6ed84 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/diet.PNG differ diff --git a/app/src/main/res/drawable-xxxhdpi/search.png b/app/src/main/res/drawable-xxxhdpi/search.png new file mode 100644 index 0000000..3d78c7d Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/search.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/vitalsigns.png b/app/src/main/res/drawable-xxxhdpi/vitalsigns.png new file mode 100644 index 0000000..0869946 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/vitalsigns.png differ diff --git a/app/src/main/res/drawable/apple.png b/app/src/main/res/drawable/apple.png new file mode 100644 index 0000000..505027b Binary files /dev/null and b/app/src/main/res/drawable/apple.png differ diff --git a/app/src/main/res/drawable/beans.jpg b/app/src/main/res/drawable/beans.jpg new file mode 100644 index 0000000..c0e9b8b Binary files /dev/null and b/app/src/main/res/drawable/beans.jpg differ diff --git a/app/src/main/res/drawable/blt.jpg b/app/src/main/res/drawable/blt.jpg new file mode 100644 index 0000000..8d741cf Binary files /dev/null and b/app/src/main/res/drawable/blt.jpg differ diff --git a/app/src/main/res/drawable/bread.jpg b/app/src/main/res/drawable/bread.jpg new file mode 100644 index 0000000..e6078fa Binary files /dev/null and b/app/src/main/res/drawable/bread.jpg differ diff --git a/app/src/main/res/drawable/chips.jpg b/app/src/main/res/drawable/chips.jpg new file mode 100644 index 0000000..6cb86c1 Binary files /dev/null and b/app/src/main/res/drawable/chips.jpg differ diff --git a/app/src/main/res/drawable/comm.PNG b/app/src/main/res/drawable/comm.PNG new file mode 100644 index 0000000..53d74f5 Binary files /dev/null and b/app/src/main/res/drawable/comm.PNG differ diff --git a/app/src/main/res/drawable/commu.PNG b/app/src/main/res/drawable/commu.PNG new file mode 100644 index 0000000..f6490ae Binary files /dev/null and b/app/src/main/res/drawable/commu.PNG differ diff --git a/app/src/main/res/drawable/cookie.jpg b/app/src/main/res/drawable/cookie.jpg new file mode 100644 index 0000000..e5b361c Binary files /dev/null and b/app/src/main/res/drawable/cookie.jpg differ diff --git a/app/src/main/res/drawable/cornbread.jpg b/app/src/main/res/drawable/cornbread.jpg new file mode 100644 index 0000000..5068c81 Binary files /dev/null and b/app/src/main/res/drawable/cornbread.jpg differ diff --git a/app/src/main/res/drawable/diet.PNG b/app/src/main/res/drawable/diet.PNG new file mode 100644 index 0000000..bf6ed84 Binary files /dev/null and b/app/src/main/res/drawable/diet.PNG differ diff --git a/app/src/main/res/drawable/eggs.jpg b/app/src/main/res/drawable/eggs.jpg new file mode 100644 index 0000000..6c14cbf Binary files /dev/null and b/app/src/main/res/drawable/eggs.jpg differ diff --git a/app/src/main/res/drawable/fish.jpg b/app/src/main/res/drawable/fish.jpg new file mode 100644 index 0000000..6326bd7 Binary files /dev/null and b/app/src/main/res/drawable/fish.jpg differ diff --git a/app/src/main/res/drawable/hamburger.jpg b/app/src/main/res/drawable/hamburger.jpg new file mode 100644 index 0000000..91bc397 Binary files /dev/null and b/app/src/main/res/drawable/hamburger.jpg differ diff --git a/app/src/main/res/drawable/hotdog.jpg b/app/src/main/res/drawable/hotdog.jpg new file mode 100644 index 0000000..b67d1c0 Binary files /dev/null and b/app/src/main/res/drawable/hotdog.jpg differ diff --git a/app/src/main/res/drawable/ic_android_black_24dp.xml b/app/src/main/res/drawable/ic_android_black_24dp.xml new file mode 100644 index 0000000..0df8cff --- /dev/null +++ b/app/src/main/res/drawable/ic_android_black_24dp.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/nachos.jpg b/app/src/main/res/drawable/nachos.jpg new file mode 100644 index 0000000..212771e Binary files /dev/null and b/app/src/main/res/drawable/nachos.jpg differ diff --git a/app/src/main/res/drawable/pancakes.jpg b/app/src/main/res/drawable/pancakes.jpg new file mode 100644 index 0000000..5aabb0c Binary files /dev/null and b/app/src/main/res/drawable/pancakes.jpg differ diff --git a/app/src/main/res/drawable/phone.png b/app/src/main/res/drawable/phone.png new file mode 100644 index 0000000..00a9f00 Binary files /dev/null and b/app/src/main/res/drawable/phone.png differ diff --git a/app/src/main/res/drawable/pick.png b/app/src/main/res/drawable/pick.png new file mode 100644 index 0000000..7045104 Binary files /dev/null and b/app/src/main/res/drawable/pick.png differ diff --git a/app/src/main/res/drawable/pie.jpg b/app/src/main/res/drawable/pie.jpg new file mode 100644 index 0000000..23f884e Binary files /dev/null and b/app/src/main/res/drawable/pie.jpg differ diff --git a/app/src/main/res/drawable/pizza.jpg b/app/src/main/res/drawable/pizza.jpg new file mode 100644 index 0000000..d4d0fc4 Binary files /dev/null and b/app/src/main/res/drawable/pizza.jpg differ diff --git a/app/src/main/res/drawable/popcorn.jpg b/app/src/main/res/drawable/popcorn.jpg new file mode 100644 index 0000000..2648d96 Binary files /dev/null and b/app/src/main/res/drawable/popcorn.jpg differ diff --git a/app/src/main/res/drawable/ravioli.jpg b/app/src/main/res/drawable/ravioli.jpg new file mode 100644 index 0000000..2be519f Binary files /dev/null and b/app/src/main/res/drawable/ravioli.jpg differ diff --git a/app/src/main/res/drawable/ribs.jpg b/app/src/main/res/drawable/ribs.jpg new file mode 100644 index 0000000..80123d5 Binary files /dev/null and b/app/src/main/res/drawable/ribs.jpg differ diff --git a/app/src/main/res/drawable/rice.jpg b/app/src/main/res/drawable/rice.jpg new file mode 100644 index 0000000..c01d1ed Binary files /dev/null and b/app/src/main/res/drawable/rice.jpg differ diff --git a/app/src/main/res/drawable/salad.jpg b/app/src/main/res/drawable/salad.jpg new file mode 100644 index 0000000..24a3c0d Binary files /dev/null and b/app/src/main/res/drawable/salad.jpg differ diff --git a/app/src/main/res/drawable/sandwich.jpg b/app/src/main/res/drawable/sandwich.jpg new file mode 100644 index 0000000..c7c3ab8 Binary files /dev/null and b/app/src/main/res/drawable/sandwich.jpg differ diff --git a/app/src/main/res/drawable/soup.jpg b/app/src/main/res/drawable/soup.jpg new file mode 100644 index 0000000..2c9ee86 Binary files /dev/null and b/app/src/main/res/drawable/soup.jpg differ diff --git a/app/src/main/res/drawable/steak.jpg b/app/src/main/res/drawable/steak.jpg new file mode 100644 index 0000000..9255b79 Binary files /dev/null and b/app/src/main/res/drawable/steak.jpg differ diff --git a/app/src/main/res/drawable/sushi.jpg b/app/src/main/res/drawable/sushi.jpg new file mode 100644 index 0000000..242e1ba Binary files /dev/null and b/app/src/main/res/drawable/sushi.jpg differ diff --git a/app/src/main/res/drawable/twinkies.jpg b/app/src/main/res/drawable/twinkies.jpg new file mode 100644 index 0000000..988d877 Binary files /dev/null and b/app/src/main/res/drawable/twinkies.jpg differ diff --git a/app/src/main/res/drawable/waffles.jpg b/app/src/main/res/drawable/waffles.jpg new file mode 100644 index 0000000..2686660 Binary files /dev/null and b/app/src/main/res/drawable/waffles.jpg differ diff --git a/app/src/main/res/drawable/wifi.png b/app/src/main/res/drawable/wifi.png new file mode 100644 index 0000000..07904bb Binary files /dev/null and b/app/src/main/res/drawable/wifi.png differ diff --git a/app/src/main/res/drawable/wings.jpg b/app/src/main/res/drawable/wings.jpg new file mode 100644 index 0000000..cb83aef Binary files /dev/null and b/app/src/main/res/drawable/wings.jpg differ diff --git a/app/src/main/res/layout/activity_communications.xml b/app/src/main/res/layout/activity_communications.xml new file mode 100644 index 0000000..3ffe0dc --- /dev/null +++ b/app/src/main/res/layout/activity_communications.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + +