Giter Site home page Giter Site logo

systers / malaria-app-android Goto Github PK

View Code? Open in Web Editor NEW

This project forked from peacecorps/malaria-app-android

25.0 22.0 110.0 78.14 MB

A mobile app that will aid the Volunteer in sustaining life-saving malaria prevention tactics over their 2+ years of service.

Java 88.12% HTML 11.56% Shell 0.32%
android java mobile malaria xml sqlite

malaria-app-android's Introduction

Build Status

Malaria App for Android

This is the repo for the Android version of Malaria App.

Malaria App README Repo: malaria-app-readme

Please use Malaria App README for discussions, decision making, and feedback about project goals and features so that the user experience across platforms is uniform.

Please keep all discussion regarding features that will be cross-platform on that repository, and code-specific discussion on this one.

Application Description

Peace Corps is looking to build a mobile app that will aid the Volunteer in sustaining life-saving malaria prevention tactics over their 2+ years of service. Prevention is focused on sustained use of preventive medications, which are taken either daily or weekly, depending on the medicine. The application will feature a reminder system; an ability to indicate that medication was taken on time or missed; the ability for the volunteer to track their usage history; a trip indicator to help remind volunteers to pack certain supplies to prevent malaria if they leave their home village; and an Info Hub that will provide accurate information about Malaria and the medications they are taking.

Included in this repository are Adobe Illustrator (.ai), and Adobe PDF (.pdf) files that were created by University of Michigan design students to meet the requirements listed above. These resources are intended to be the building blocks of iOS and Android applications.

Also included in this repository for reference and background are two recent studies conducted by the CDC pertaining to use of preventative tactics by volunteers and their reasons for compliance or non-compliance with taking their medicine.

Asset Information

Included in this repository are files to help you get started:
  • Mock Up Version 8 (the latest mock up file) is included in pdf, png, and in the original Adobe Illustrator format.
  • A research folder containing a map of Malaria Prevalence, and additional information about Malaria from the Centers for Disease Control and Prevention.

Dependencies

This project uses Jack Wharton's Android-ViewPagerIndicator for the Viewpager Swipe view. Jake Wharton ViewPager Indicator project dependecy

Current Status

Guidelines for contributors

To contribute to malaria-app-android pick an open issue from the issue list tagged as "free", claim it in the comments, fix the issue and send us a pull request. If you find an issue yourself you can report it, a community member will get back to you and approve the issue. Then you can fix it and submit a PR. Please go through our issue list first and make sure the issues you are reporting do not replicate the issues already reported. If you have multiple issues, report them separately. Do not combine them into a single issue.

Best Practise

  1. Try to do a root cause analysis for the issue, if applicable.
  2. Reference the issue being fixed in the corresponding PR.
  3. Use meaningful commit messages in a PR.
  4. Use one commit per task. Do not over commit (add unnecessary commits for a single task) or under commit (merge 2 or more tasks in one commit).
  5. Add screenshot/short video in case the changes made in the PR, are being reflected in the UI of the application.
  6. Close the issue as soon as the corresponding PR is accepted/closed.

Some Don'ts

  1. Send a PR without an existing issue.
  2. Fix an issue assigned to somebody else and submit a PR before the assignee does.
  3. Report issues which are previously reported by others. (Please check both the open and closed issues).
  4. Suggest unnecessary or completely new features in the issue list.
  5. Add unnecessary spacing or indentation to the code.

Contact Information:

Patrick Choquette

Director of the Office of Innovation

[email protected]

Matthew McAllister

Special Assistant in the Office of Innovation

[email protected]

malaria-app-android's People

Contributors

ahmedsabie avatar ankita-kalra avatar anubhakushwaha avatar ashu-dadhich avatar chhavip avatar chimdi2000 avatar choquette33 avatar codingblazer avatar geekanamika avatar himanshus01 avatar jaiagarwal avatar janiceilene avatar m-murad avatar mahikaw avatar neerajrao avatar niksj avatar robillo avatar rosariorobinson avatar sridharjajoo avatar yatna avatar yatri1609 avatar yvsssantosh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

malaria-app-android's Issues

Removal of unneccesary drawables

Copies of the same drawable has been maintained who just vary with respect to their sizes,color and opacity. These all can be implemented dynamically in their respective activities showing their current status via following methods invoked on the buttons after setting their background:

a)setAlpha(float value)
b)setHighlightColor(int color)
c)setLayoutParams(LayoutParams param)

This highly reduces the number of copies made , for instance for all the buttons showing active and inactive state and many others like checked or not checked,etc.

Bug in the RapidFireGame Timer

While playing the quiz if we press the exit button the timer is stopped.A dialog box opens up which has two options OK and CANCEL. When the CANCEL button is pressed the game is resumed but the timer doesn't resume from the original time when it was stopped.
@chhavip Can i work on the issue?

Improving Trip Reminder Notifications

The reminder which comes in notification has view checklist button currently.

Improvements which can be done-

  1. Adding Edit Trip Button with View Checklist.
  2. Edit Trip opens the Trip Indicator Filled form where user can change details.

Adding feature to view pending reminder.

Currently the app provides no feature to the user, to view the upcoming trip reminder. I intend to add a view button on the TripIndicatorFragment, clicking on which gives the user, all information about the upcoming reminder. If no reminder is pending, then it will display a "No reminder set" message.

Widget for Trip Reminder

A widget with features can be created-

  1. Shows the Date,Time and Destination of Trip
  2. Edit button opens Trip Reminder form of Malaria App and user can edit entries .

Add badges to the 3rd category in the Achievement Room

Currently in the Achievement Room, only the first 2 categories display badges based on their associated score. This has to be extended for the third category as well . The third category should be based on the point accumulated by planning trips using the app's trip planner facility. Any ideas on how to distribute points and which badges to keep are welcome, but the basic philosophy behind any idea should be to promote the users to use the app's trip planner.

Export to Android studio

As the project still exists in Eclipse ADT and support for same is fast receading, it is beneficial if the project is exported to Android Studio.

Unused Resource in the application

These resources can be removed or replaced if used in the application in a hard coded way
Following strings from strings.xml are not used and can be removed
app_homescreen_name
second_analytic_screen_title
cash_label
medication_label
remind_label
location_spinner_label
medication_spinner_label
items_spinner_label
user_medicine_settings_activity_drug_array
location_array
item_array

Following colors from colors.xml can be removed
view_pager_indicator_text_color
user_medicine_second_text_color
symptom_color_selected
reaction_color_selected
static_text_color
journal_entry_listitem_text_color
note_text_disabled
blue
navy
sky
lightgray02
dark
red
lighter_green

Following resource files are not using
/malaria-app-android/res/drawable/accept_medi_normal_tiny.jpg
/malaria-app-android/res/drawable/add_b.png
/malaria-app-android/res/drawable/appicon.png
/malaria-app-android/res/drawable/appicon_small.png
/malaria-app-android/res/drawable/cal_left_arrow_on.png
/malaria-app-android/res/drawable/cal_right_arrow_on.png
/malaria-app-android/res/drawable/calendar.9.png
/malaria-app-android/res/drawable/calendar_centralheader.png
/malaria-app-android/res/drawable/calendar_days.png
/malaria-app-android/res/drawable/calendar_header.svg
/malaria-app-android/res/drawable/calendar_tile.png
/malaria-app-android/res/drawable/calendar_top_header.png
/malaria-app-android/res/drawable/calendar_view.png
/malaria-app-android/res/drawable/settings_large.png
/malaria-app-android/res/drawable/topbar.png
/malaria-app-android/res/drawable/trip_spinner.png
/malaria-app-android/res/drawable/trip_spinner_arr.png
/malaria-app-android/res/drawable/trip_spinner_bg.xml
/malaria-app-android/res/drawable/trip_spinner_dte.png
/malaria-app-android/res/drawable/delete_b.png
/malaria-app-android/res/drawable-hdpi/ic_launcher.png
/malaria-app-android/res/drawable/icon.png
/malaria-app-android/res/drawable/peacecorps_small.png
/malaria-app-android/res/drawable/placeholder_analytic_text.png
/malaria-app-android/res/drawable/reject_medi_normal_tiny.jpg
/malaria-app-android/res/drawable-hdpi/bg.png

/malaria-app-android/res/layout/screeen_gridcell_red.xml
/malaria-app-android/res/layout/screen_gridcell_green.xml
/malaria-app-android/res/layout/fragment_welcome_dummy.xml

No Touch Feedback in Buttons and EditText

A certain touch feedback should be provided in android app for assuring user that they are engaging with that particular UI element. A better UX approach will suggest to provide touch feedback whether user hits a Button, EditText etc. The feedback can be in the following form :-

  • Color change of button/editText drawable
  • Popup of button (A slight increase in size of drawable with little increase in alpha)

The Alarm stops as soon as the notification bar is clicked

As soon as the user reaches the TripAlarmActivity the alarm should stop as it may irritate the user.
We just need to stop the ringtone as soon as we reach the TripAlarmActivity. I have implemented this as well , can I send a PR for this?

Logical Errors

1.After a queried date earlier than the first time taken entered,all the other dates coming after it their adherence Level should be changed accordingly.
2.When current day skipped and later any previous date updated from DayAnalyticFragment Activity then MedicineLastTaken inFirstAnayticFragment remains blank instead of being updated.

Bug in RapidFire Game

When someone chooses an answer from the list of 3 options then other buttons are still active . So the user will be able to click all the other options as well which creates many errors . Choosing options multiple times leads to skipping of subsequent questions.
@chhavip @ankita-kalra @yatna Can I work on it?

Set Up Screen Logical Error

I just noticed a logical error which I would try to describe.
If the user opens the app for the first time (fresh installation) and rotates his/her phone while at set up screen, the user is taken to the MainActivity without providing details. This is caused by these lines of code which i have corrected:
Logical error

    @Override

   protected void onResume() {

    super.onResume();

    if (mSharedPreferenceStore.mPrefsStore.getBoolean("com.peacecorps.malaria.isFirstRun",
            true)) {  // false sould be passed instead of true

             mSharedPreferenceStore.mEditor.putBoolean(

                "com.peacecorps.malaria.hasUserSetPreference", true).commit();


    }

}

  @Override

protected void onPause() {

    super.onPause();
    if (mSharedPreferenceStore.mPrefsStore.getBoolean("com.peacecorps.malaria.isFirstRun",
            true)) { // false should be passed instead of true
        mSharedPreferenceStore.mEditor.putBoolean(
                "com.peacecorps.malaria.hasUserSetPreference", true).commit();
    }

}

Also to make sure that the user is not taken to set up screen, this line of code should be added in

  saveUserTimeAndMedicationPrefs()

code:

    mSharedPreferenceStore.mEditor.putBoolean(
            "com.peacecorps.malaria.hasUserSetPreference", true).commit();

I have corrected them already. @ankita-kalra @rosariorobinson
Should I go ahead and send a pull request?

SecondAnalyticFragment

There are a lot of error and some make the app crashed.I forked it and fix some bug.
The main error occurs in the getMonth()
Calendar.getInstance().get(Calendar.YEAR) return the value of (month - 1), not the value of month,so there will be a error when we put the value to "month" array,the app will crash.
And I'm confused why it name the value of month "date",I fixed it,too.
Here is the url of my repo
https://github.com/Yasic/malaria-android
and here is the file of SecondAnalyticFragment
https://github.com/Yasic/malaria-android/blob/master/malaria-app-android/src/com/peacecorps/malaria/SecondAnalyticFragment.java

Condense all similar fragment layouts into one.

For the fragment layouts related to the info-section, the text views can be made dynamic, by sending input from the Activity.class' side.
I would like to remove -

  1. effectiveness_fragment.xml
  2. peace_corps_policy_fragment.xml
  3. side_effects_npcv_fragment.xml
  4. side_effects_pcv_fragment.xml
  5. side_effects_percentage_fragment.xml
  6. volunteer_adherence_fragment.xml

I will add a new xml file - info_fragments.xml
and add similar views. I will create another class, which will take care of all the backend activity of sending and receiving the right data.

Hardcoding the string in string.xml file.

There are many values / string which are hardcoded in the .xml file. It should be stored in the single file so that it can be accessed to the same text from anywhere in the app.
I would send the PR soon when i get assigned.

@MeepyMay Can i work on this?

Notification should be set to autoCancel

Notification Builder should be set to autoCancel for the convenience of the user. Though it just requires one line editing,it maybe be irritating for the user to swipe and remove it even though he has already clicked it.

Add actions in notification itself

It would be much better if we add "Not taken", "taken", and snooze button in the notification itself. As of now it is showing in dialog in activity.

Yes , I would like to work on this.

Shifting the project to gradle build platform

The project needs to be shifted to a gradle build platform to ensure a greater stability and easy of developing. Gradle enjoys numerous benefits over the traditional build system.

Adding Welcome / Intro screens in malaria app

Add Intro screens in the malaria app as a great way of showcasing the major features of the app.

The user can navigate through each slide using swipe gesture or using the next button.

2iuvk

Adding UI testing of current app

@ankita-kalra The current project only includes DB test,it's equally important to check the proper implementation of the UI components thereby used using Espresso in the different activities.Can I start working upon this?

Widget for Pill Tracker

Instead of opening the app for click on the check or cross button, we can have a widget which has tick, cross and edit button.

The functionalities can be like-

  1. Tick- Medicine Taken
  2. Cross- Medicine Not Taken
  3. Edit- Opens up the specific Day Analytic Page of the app, where we can edit the entry.

Gradle problem with .svg files

The latest gradle plugin is not recognizing some of the image formats that used to work before.

malaria-app-android/app/src/main/res/drawable/calendar_header.svg: Error: The file name must end with .xml or .png

Solution to this could be

  • we can change the version in build.gradle by switching back to v1.2.2 which supports .svg files.

  • To put them in src/main/res/raw or src/main/assets folder and load them appropriately (via an external library).

The current accepted solution is to revert back to an archaic version of the Gradle plugin, which is counterproductive in most cases.

Testing Calendar and Modification of Calendar Header

Grid Cell Adapter is used for making the Calendar in the Third Analytic Fragment Activity. Sometimes it takes time to load the calendar, because each grid cell is initialized to make the calendar. This can be compared against a custom calendar view library or modification of existing Android Calendar API can be done, to decrease the processing load.

Currently image is used for showing the weekdays on header of calendar. It is not a vector image, so not adapts to the size.

Ways it can be taken care of-

  1. Creating grid cells for week days.
  2. Using custom calendar view library.

Correct alignment of months name

Currently the months' names displayed in the last tab of Malaria Home Screen tend to overflow to next line in case of lack of space. Adjust name of month and progress bar as to fit in a single line or name of month in one line and progress in the next.

Logical Errors

1.After a queried date earlier than the first time taken entered/edited through DayAnalyticFragment ,all the other dates coming after it their adherence Level should be changed accordingly.

a)When queried date < first Time
- the interval changes for all drug taken dates
- takenCount changes for the period

b)When queried date >=first Time&& queried date<=current
- takenCount of all the dates lying after queried Date changes

2.When current day skipped and later any previous date updated from DayAnalyticFragment Activity then MedicineLastTaken inFirstAnayticFragment remains blank instead of being updated.

@ankita-kalra or anyone Please correct me if I am wrong because according to current state of project and my understanding the adherence Rate is not evaluated as per the cases above.

Bug in setNumDrugs() function

If the arrival date of trip is set before the departure date, setNumDrugs() gave a negative result which means number of drugs needed for the trip are -ve. This is logically incorrect because the arrival date cannot ever be before the departure date. Hence, a check mechanism needs to be added to check that the arrival date is not before the departure date.

App crash on SecondAnalyticalFragmentActivity

When the current date is between months January to April, the application crashes on the SecondAnalyticalFragmentActivity. When the current date is between month May to November the application works fine. When the month is December the app does not crash on the SecondAnalyticalFragmentActivity but crashes on clicking the December progress bar in the ThirdAnalyticalFragmentActivity.java .

Date format

Date format in the app should be MM/DD/YYYY.

About "gsoc 2016" for Systers

Are only boys selected for gsoc projects in Systers organization ?? because in past only girls are selected in various projects

Add a Splash screen at the beginning of the app

@ankita-kalra Can I add a splash screen at the beginning of the app to give a brief view of the app to the user. I have designed a demo splash screen which will be availed to the user for about 5 seconds.
screenshot_2016-03-30-16-00-56

Animation View has also been included which zooms in and zooms out the image as well.

Using Realm instead of Sqlite Database

I came across Realm a few weeks back,it is great with respect to database management as it highly optimizes the app. Using realm provides a better user experience and renders our app faster.

Some of the comparisons can be easily witnessed below.
desk1
desk2
desk3

Do the mentors agree to this and should I start working upon this?
@ankita-kalra Please let e know as soon as possible so that I can start with .

Arrival Date should not be before departure Date #53

In case user enters the arrival date as of before the departure date then the tripIndicatorPackingActivity shows setNoOfDrugs to be negative,user should be given an alert as soon as he enters wrong date.Is it a valid issue? Can I fix it?

Update ReadME

Hi @ankita-kalra ... @rosariorobinson and I are trying to prepare for GHC Open source day and we need help with the ReadME. Can you help with updating the ReadME with more specifics on setup? The goal is to environment ready on a USB in case there are WiFi issues.

Is it possible to have README updated by Friday or Saturday (10/14 or 10/15 respectively) at the latest? We really need your help.

Please use this issue to update us on this task.

Better code packaging

For better understanding of code, it is always advisable to package classes, receivers, services, ui-widgets, fragments, activities etc separately.
According to current set of classes, the code can be divided into following packages

  • Receiver
  • utils
  • data
  • fragments
  • activities
  • ui
  • model
  • volley
  • service

This will ensure new developers to understand and debug code easily

Adding Intro Screens to the app

Intro screens provides an introduction and gives the users information about the features of the application, when the application is opened for the very first time. I intend to add intro screens using the paolorotolo:appintro library, which creates intro screens with minimum amount of code.

Improving and Proper Updating of GraphView

Many grids are made on the background if entered data is scarce. Needs to be taken care of. Also when single data point is there then a constant line should appear.

Smooth updating of graphview is required. Editing data in the Day Analytic Fragment Activity, and returning to second analytic fragment activity does not update the graph view.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.