From 918e0b116a2d290a56da13ee6cf9d517123b2354 Mon Sep 17 00:00:00 2001 From: Aparna Jain Date: Sat, 5 Mar 2016 09:14:19 -0800 Subject: [PATCH 1/2] working on the profile activity and renamed the package --- app/build.gradle | 3 +- .../ApplicationTest.java | 2 +- app/src/main/AndroidManifest.xml | 12 +++--- .../aparna/fit360/Fragments/Tracking.java | 28 ++++++++++++ .../{wireframes => fit360}/HomeActivity.java | 10 ++--- .../activities/ChatActivity.java | 4 +- .../activities/CommunityActivity.java | 4 +- .../activities/MapActivity.java | 4 +- .../activities/ProfileActivity.java | 4 +- app/src/main/res/layout/activity_chat.xml | 2 +- .../main/res/layout/activity_community.xml | 2 +- app/src/main/res/layout/activity_home.xml | 2 +- app/src/main/res/layout/activity_map.xml | 2 +- app/src/main/res/layout/activity_profile.xml | 2 +- app/src/main/res/layout/content_chat.xml | 2 +- app/src/main/res/layout/content_community.xml | 2 +- app/src/main/res/layout/content_home.xml | 2 +- app/src/main/res/layout/content_profile.xml | 32 +++++++++++--- app/src/main/res/layout/fragment_tracking.xml | 43 +++++++++++++++++++ app/src/main/res/menu/menu_home.xml | 2 +- app/src/main/res/values/strings.xml | 3 ++ .../aparna/wireframes/ExampleUnitTest.java | 2 +- 22 files changed, 133 insertions(+), 36 deletions(-) rename app/src/androidTest/java/com/example/aparna/{wireframes => fit360}/ApplicationTest.java (89%) create mode 100644 app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java rename app/src/main/java/com/example/aparna/{wireframes => fit360}/HomeActivity.java (85%) rename app/src/main/java/com/example/aparna/{wireframes => fit360}/activities/ChatActivity.java (83%) rename app/src/main/java/com/example/aparna/{wireframes => fit360}/activities/CommunityActivity.java (83%) rename app/src/main/java/com/example/aparna/{wireframes => fit360}/activities/MapActivity.java (77%) rename app/src/main/java/com/example/aparna/{wireframes => fit360}/activities/ProfileActivity.java (83%) create mode 100644 app/src/main/res/layout/fragment_tracking.xml diff --git a/app/build.gradle b/app/build.gradle index 750742d..ef27322 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,8 +22,9 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' compile 'com.astuetz:pagerslidingtabstrip:1.0.1' - + compile 'com.android.support:support-v4:23.1.1' } diff --git a/app/src/androidTest/java/com/example/aparna/wireframes/ApplicationTest.java b/app/src/androidTest/java/com/example/aparna/fit360/ApplicationTest.java similarity index 89% rename from app/src/androidTest/java/com/example/aparna/wireframes/ApplicationTest.java rename to app/src/androidTest/java/com/example/aparna/fit360/ApplicationTest.java index 99a74e4..ab403e1 100644 --- a/app/src/androidTest/java/com/example/aparna/wireframes/ApplicationTest.java +++ b/app/src/androidTest/java/com/example/aparna/fit360/ApplicationTest.java @@ -1,4 +1,4 @@ -package com.example.aparna.wireframes; +package com.example.aparna.fit360; import android.app.Application; import android.test.ApplicationTestCase; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 96a1cf4..9c784f5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.example.aparna.fit360"> @@ -19,18 +19,18 @@ - + diff --git a/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java b/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java new file mode 100644 index 0000000..e4fd7ed --- /dev/null +++ b/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java @@ -0,0 +1,28 @@ +package com.example.aparna.fit360.Fragments; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.example.aparna.fit360.R; + + +public class Tracking extends Fragment { + // The onCreateView method is called when Fragment should create its View object hierarchy, + // either dynamically or via XML layout inflation. + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { + // Defines the xml file for the fragment + return inflater.inflate(R.layout.fragment_tracking, parent, false); + } + + // This event is triggered soon after onCreateView(). + // Any view setup should occur here. E.g., view lookups and attaching view listeners. + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + // Setup any handles to view objects here + // EditText etFoo = (EditText) view.findViewById(R.id.etFoo); + } +} diff --git a/app/src/main/java/com/example/aparna/wireframes/HomeActivity.java b/app/src/main/java/com/example/aparna/fit360/HomeActivity.java similarity index 85% rename from app/src/main/java/com/example/aparna/wireframes/HomeActivity.java rename to app/src/main/java/com/example/aparna/fit360/HomeActivity.java index ed7804a..6ba350c 100644 --- a/app/src/main/java/com/example/aparna/wireframes/HomeActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/HomeActivity.java @@ -1,4 +1,4 @@ -package com.example.aparna.wireframes; +package com.example.aparna.fit360; import android.content.Intent; import android.os.Bundle; @@ -7,10 +7,10 @@ import android.view.Menu; import android.view.MenuItem; -import com.example.aparna.wireframes.activities.ChatActivity; -import com.example.aparna.wireframes.activities.CommunityActivity; -import com.example.aparna.wireframes.activities.MapActivity; -import com.example.aparna.wireframes.activities.ProfileActivity; +import com.example.aparna.fit360.activities.ChatActivity; +import com.example.aparna.fit360.activities.CommunityActivity; +import com.example.aparna.fit360.activities.MapActivity; +import com.example.aparna.fit360.activities.ProfileActivity; public class HomeActivity extends AppCompatActivity { diff --git a/app/src/main/java/com/example/aparna/wireframes/activities/ChatActivity.java b/app/src/main/java/com/example/aparna/fit360/activities/ChatActivity.java similarity index 83% rename from app/src/main/java/com/example/aparna/wireframes/activities/ChatActivity.java rename to app/src/main/java/com/example/aparna/fit360/activities/ChatActivity.java index 3b12679..d975cf8 100644 --- a/app/src/main/java/com/example/aparna/wireframes/activities/ChatActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/activities/ChatActivity.java @@ -1,10 +1,10 @@ -package com.example.aparna.wireframes.activities; +package com.example.aparna.fit360.activities; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import com.example.aparna.wireframes.R; +import com.example.aparna.fit360.R; public class ChatActivity extends AppCompatActivity { diff --git a/app/src/main/java/com/example/aparna/wireframes/activities/CommunityActivity.java b/app/src/main/java/com/example/aparna/fit360/activities/CommunityActivity.java similarity index 83% rename from app/src/main/java/com/example/aparna/wireframes/activities/CommunityActivity.java rename to app/src/main/java/com/example/aparna/fit360/activities/CommunityActivity.java index 90ab47c..b0d639c 100644 --- a/app/src/main/java/com/example/aparna/wireframes/activities/CommunityActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/activities/CommunityActivity.java @@ -1,10 +1,10 @@ -package com.example.aparna.wireframes.activities; +package com.example.aparna.fit360.activities; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import com.example.aparna.wireframes.R; +import com.example.aparna.fit360.R; public class CommunityActivity extends AppCompatActivity { diff --git a/app/src/main/java/com/example/aparna/wireframes/activities/MapActivity.java b/app/src/main/java/com/example/aparna/fit360/activities/MapActivity.java similarity index 77% rename from app/src/main/java/com/example/aparna/wireframes/activities/MapActivity.java rename to app/src/main/java/com/example/aparna/fit360/activities/MapActivity.java index 58214d7..9e26aa7 100644 --- a/app/src/main/java/com/example/aparna/wireframes/activities/MapActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/activities/MapActivity.java @@ -1,9 +1,9 @@ -package com.example.aparna.wireframes.activities; +package com.example.aparna.fit360.activities; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; -import com.example.aparna.wireframes.R; +import com.example.aparna.fit360.R; public class MapActivity extends AppCompatActivity { diff --git a/app/src/main/java/com/example/aparna/wireframes/activities/ProfileActivity.java b/app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java similarity index 83% rename from app/src/main/java/com/example/aparna/wireframes/activities/ProfileActivity.java rename to app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java index a627afd..3db54be 100644 --- a/app/src/main/java/com/example/aparna/wireframes/activities/ProfileActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java @@ -1,10 +1,10 @@ -package com.example.aparna.wireframes.activities; +package com.example.aparna.fit360.activities; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import com.example.aparna.wireframes.R; +import com.example.aparna.fit360.R; public class ProfileActivity extends AppCompatActivity { diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml index b563cb1..51412e9 100644 --- a/app/src/main/res/layout/activity_chat.xml +++ b/app/src/main/res/layout/activity_chat.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - tools:context="com.example.aparna.wireframes.activities.ChatActivity"> + tools:context="com.example.aparna.fit360.activities.ChatActivity"> + tools:context="com.example.aparna.fit360.activities.CommunityActivity"> + tools:context="com.example.aparna.fit360.HomeActivity"> + tools:context="com.example.aparna.fit360.activities.MapActivity"> + tools:context="com.example.aparna.fit360.activities.ProfileActivity"> + + + + + + + android:layout_below="@id/tvUserName" + /> diff --git a/app/src/main/res/layout/fragment_tracking.xml b/app/src/main/res/layout/fragment_tracking.xml new file mode 100644 index 0000000..6801580 --- /dev/null +++ b/app/src/main/res/layout/fragment_tracking.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_home.xml b/app/src/main/res/menu/menu_home.xml index c490574..cb93883 100644 --- a/app/src/main/res/menu/menu_home.xml +++ b/app/src/main/res/menu/menu_home.xml @@ -1,7 +1,7 @@ + tools:context="com.example.aparna.fit360.HomeActivity"> ProfileActivity ChatActivity CommunityActivity + + + Hello blank fragment diff --git a/app/src/test/java/com/example/aparna/wireframes/ExampleUnitTest.java b/app/src/test/java/com/example/aparna/wireframes/ExampleUnitTest.java index 988094c..61974b2 100644 --- a/app/src/test/java/com/example/aparna/wireframes/ExampleUnitTest.java +++ b/app/src/test/java/com/example/aparna/wireframes/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.example.aparna.wireframes; +package com.example.aparna.fit360; import org.junit.Test; From a01760e3912f79751fc7fb2079318b086d4cce0e Mon Sep 17 00:00:00 2001 From: Aparna Jain Date: Sat, 5 Mar 2016 12:09:09 -0800 Subject: [PATCH 2/2] added camera functionality to the profile activity tracking fragment --- app/build.gradle | 8 ++ app/src/main/AndroidManifest.xml | 4 +- .../Fragments/ProfileHeaderFragment.java | 29 ++++++ .../aparna/fit360/Fragments/Tracking.java | 90 +++++++++++++++++++ .../fit360/{ => activities}/HomeActivity.java | 8 +- .../fit360/activities/ProfileActivity.java | 2 - app/src/main/res/layout/activity_home.xml | 2 +- app/src/main/res/layout/content_home.xml | 2 +- app/src/main/res/layout/content_profile.xml | 26 ++---- .../res/layout/fragment_profile_header.xml | 34 +++++++ app/src/main/res/layout/fragment_tracking.xml | 38 ++++++-- app/src/main/res/menu/menu_home.xml | 2 +- 12 files changed, 205 insertions(+), 40 deletions(-) create mode 100644 app/src/main/java/com/example/aparna/fit360/Fragments/ProfileHeaderFragment.java rename app/src/main/java/com/example/aparna/fit360/{ => activities}/HomeActivity.java (85%) create mode 100644 app/src/main/res/layout/fragment_profile_header.xml diff --git a/app/build.gradle b/app/build.gradle index ef27322..6684c89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,8 +23,16 @@ dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' + compile 'com.astuetz:pagerslidingtabstrip:1.0.1' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' compile 'com.astuetz:pagerslidingtabstrip:1.0.1' compile 'com.android.support:support-v4:23.1.1' + compile 'com.google.android.gms:play-services-appindexing:8.1.0' + compile 'com.google.code.gson:gson:1.7.2' + compile 'com.makeramen:roundedimageview:2.2.1' + compile 'com.jakewharton:butterknife:7.0.1' + compile 'com.squareup.picasso:picasso:2.5.2' + compile 'com.github.bumptech.glide:glide:3.7.0' + compile 'com.loopj.android:android-async-http:1.4.8' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9c784f5..81db98c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + + diff --git a/app/src/main/java/com/example/aparna/fit360/Fragments/ProfileHeaderFragment.java b/app/src/main/java/com/example/aparna/fit360/Fragments/ProfileHeaderFragment.java new file mode 100644 index 0000000..0dfb20e --- /dev/null +++ b/app/src/main/java/com/example/aparna/fit360/Fragments/ProfileHeaderFragment.java @@ -0,0 +1,29 @@ +package com.example.aparna.fit360.Fragments; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.example.aparna.fit360.R; + +import butterknife.ButterKnife; + +public class ProfileHeaderFragment extends Fragment { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { + // Defines the xml file for the fragment + return inflater.inflate(R.layout.fragment_profile_header, parent, false); + } + + // This event is triggered soon after onCreateView(). + // Any view setup should occur here. E.g., view lookups and attaching view listeners. + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + // Setup any handles to view objects here + // EditText etFoo = (EditText) view.findViewById(R.id.etFoo); + ButterKnife.bind(this, view); + } + +} diff --git a/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java b/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java index e4fd7ed..6f991d2 100644 --- a/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java +++ b/app/src/main/java/com/example/aparna/fit360/Fragments/Tracking.java @@ -1,15 +1,42 @@ package com.example.aparna.fit360.Fragments; +import android.app.Activity; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; import com.example.aparna.fit360.R; +import java.io.File; + +import butterknife.Bind; +import butterknife.ButterKnife; + public class Tracking extends Fragment { + @Bind(R.id.etWeight) EditText etWeight; + @Bind(R.id.etWater) EditText etWater; + + @Bind(R.id.ivCameraPicture) + ImageView ivCameraPicture; + @Bind(R.id.btnTakePicture) + Button btnTakePicture; + + public final String APP_TAG = "MyCustomApp"; + public final static int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1034; + public String photoFileName = "photo.jpg"; // The onCreateView method is called when Fragment should create its View object hierarchy, // either dynamically or via XML layout inflation. @Override @@ -24,5 +51,68 @@ public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle saved public void onViewCreated(View view, Bundle savedInstanceState) { // Setup any handles to view objects here // EditText etFoo = (EditText) view.findViewById(R.id.etFoo); + ButterKnife.bind(this, view); + + btnTakePicture.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onLaunchCamera(); + } + }); + + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { + if (resultCode == Activity.RESULT_OK) { + Uri takenPhotoUri = getPhotoFileUri(photoFileName); + // by this point we have the camera photo on disk + Bitmap takenImage = BitmapFactory.decodeFile(takenPhotoUri.getPath()); + // Load the taken image into a preview + ivCameraPicture.setImageBitmap(takenImage); + } else { // Result was a failure +// Toast.makeText(this, "Picture wasn't taken!", Toast.LENGTH_SHORT).show(); + Log.d("DEBUG", "Picture wasn't taken!"); + } + } + } + public void onLaunchCamera() { + // create Intent to take a picture and return control to the calling application + Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, getPhotoFileUri(photoFileName)); // set the image file name + + // If you call startActivityForResult() using an intent that no app can handle, your app will crash. + // So as long as the result is not null, it's safe to use the intent. + if (intent.resolveActivity(getContext().getPackageManager()) != null) { + // Start the image capture intent to take photo + startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); + } + } + // Returns the Uri for a photo stored on disk given the fileName + public Uri getPhotoFileUri(String fileName) { + // Only continue if the SD Card is mounted + if (isExternalStorageAvailable()) { + // Get safe storage directory for photos + // Use `getExternalFilesDir` on Context to access package-specific directories. + // This way, we don't need to request external read/write runtime permissions. + File mediaStorageDir = new File( + getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), APP_TAG); + + // Create the storage directory if it does not exist + if (!mediaStorageDir.exists() && !mediaStorageDir.mkdirs()){ + Log.d(APP_TAG, "failed to create directory"); + } + + // Return the file target for the photo based on filename + return Uri.fromFile(new File(mediaStorageDir.getPath() + File.separator + fileName)); + } + return null; + } + + // Returns true if external storage for photos is available + private boolean isExternalStorageAvailable() { + String state = Environment.getExternalStorageState(); + return state.equals(Environment.MEDIA_MOUNTED); } } diff --git a/app/src/main/java/com/example/aparna/fit360/HomeActivity.java b/app/src/main/java/com/example/aparna/fit360/activities/HomeActivity.java similarity index 85% rename from app/src/main/java/com/example/aparna/fit360/HomeActivity.java rename to app/src/main/java/com/example/aparna/fit360/activities/HomeActivity.java index 6ba350c..948a8b3 100644 --- a/app/src/main/java/com/example/aparna/fit360/HomeActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/activities/HomeActivity.java @@ -1,4 +1,4 @@ -package com.example.aparna.fit360; +package com.example.aparna.fit360.activities; import android.content.Intent; import android.os.Bundle; @@ -7,13 +7,9 @@ import android.view.Menu; import android.view.MenuItem; -import com.example.aparna.fit360.activities.ChatActivity; -import com.example.aparna.fit360.activities.CommunityActivity; -import com.example.aparna.fit360.activities.MapActivity; -import com.example.aparna.fit360.activities.ProfileActivity; +import com.example.aparna.fit360.R; public class HomeActivity extends AppCompatActivity { - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java b/app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java index 3db54be..3360201 100644 --- a/app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java +++ b/app/src/main/java/com/example/aparna/fit360/activities/ProfileActivity.java @@ -7,7 +7,6 @@ import com.example.aparna.fit360.R; public class ProfileActivity extends AppCompatActivity { - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -15,5 +14,4 @@ protected void onCreate(Bundle savedInstanceState) { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); } - } diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 9c88c8e..e73c07f 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - tools:context="com.example.aparna.fit360.HomeActivity"> + tools:context=".activities.HomeActivity"> - - - - - - + /> diff --git a/app/src/main/res/layout/fragment_profile_header.xml b/app/src/main/res/layout/fragment_profile_header.xml new file mode 100644 index 0000000..62e07ee --- /dev/null +++ b/app/src/main/res/layout/fragment_profile_header.xml @@ -0,0 +1,34 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_tracking.xml b/app/src/main/res/layout/fragment_tracking.xml index 6801580..0b3d850 100644 --- a/app/src/main/res/layout/fragment_tracking.xml +++ b/app/src/main/res/layout/fragment_tracking.xml @@ -6,7 +6,9 @@ + android:padding="35dp" + android:background="#E0F2F1" + android:layout_height="wrap_content"> - + + - - + + +