Skip to content
Snippets Groups Projects
Commit 352ea931 authored by kishoreraju2's avatar kishoreraju2
Browse files

Major User feed with UI modifications

parent bdf12e18
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<uses-feature android:name="android.hardware.camera2" /> <uses-feature android:name="android.hardware.camera2" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...@@ -19,7 +21,7 @@ ...@@ -19,7 +21,7 @@
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<provider <provider
android:name="android.support.v4.content.FileProvider" android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.fileprovider" android:authorities="com.mapps.seproject.provider"
android:exported="false" android:exported="false"
android:grantUriPermissions="true"> android:grantUriPermissions="true">
<meta-data <meta-data
...@@ -27,6 +29,8 @@ ...@@ -27,6 +29,8 @@
android:resource="@xml/file_paths" /> android:resource="@xml/file_paths" />
</provider> </provider>
<activity android:name=".LoginActivity"> <activity android:name=".LoginActivity">
</activity> </activity>
......
package com.mapps.seproject; package com.mapps.seproject;
import android.app.Fragment; import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.Image; import android.media.Image;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.FileProvider;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Locale;
import static android.app.Activity.RESULT_CANCELED;
import static android.app.Activity.RESULT_OK; import static android.app.Activity.RESULT_OK;
/** /**
...@@ -26,9 +46,20 @@ import static android.app.Activity.RESULT_OK; ...@@ -26,9 +46,20 @@ import static android.app.Activity.RESULT_OK;
public class CameraFragment extends Fragment { public class CameraFragment extends Fragment {
private Uri file;
static final int REQUEST_IMAGE_CAPTURE = 1; private static final String IMAGE_DIRECTORY_NAME = "Hello_Camera";
View view; View view;
private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
public static final int MEDIA_TYPE_IMAGE = 1;
private static int RESULT_LOAD_IMAGE = 2;
private Uri fileUri;
private Uri imageUri;
public static Uri images;
private Button btnCapturePicture;
private Button choose_image;
StorageReference mStorageRef;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
...@@ -36,6 +67,25 @@ public class CameraFragment extends Fragment { ...@@ -36,6 +67,25 @@ public class CameraFragment extends Fragment {
// Inflate the layout for this fragment // Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_camera, container, false); view = inflater.inflate(R.layout.fragment_camera, container, false);
mStorageRef = FirebaseStorage.getInstance().getReference();
btnCapturePicture = (Button) view.findViewById(R.id.btnCapturePicture);
choose_image = (Button) view.findViewById(R.id.choose_image);
btnCapturePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// capture picture
captureImage();
}
});
choose_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(cameraIntent,RESULT_LOAD_IMAGE);
}
});
return view; return view;
} }
...@@ -47,67 +97,219 @@ public class CameraFragment extends Fragment { ...@@ -47,67 +97,219 @@ public class CameraFragment extends Fragment {
getActivity().setTitle("Menu1"); getActivity().setTitle("Menu1");
} }
private void dispatchTakePictureIntent() { private boolean isDeviceSupportCamera() {
if (getActivity().getPackageManager().hasSystemFeature(
PackageManager.FEATURE_CAMERA)) {
// this device has a camera
return true;
} else {
// no camera on this device
return false;
}
}
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
try { fileUri = FileProvider.getUriForFile(getActivity(), "com.mapps.seproject.provider", getOutputMediaFile(MEDIA_TYPE_IMAGE));
file = Uri.fromFile(createImageFile());
}catch (Exception e){
} intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,file);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { // start the image capture Intent
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}
} }
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
// if the result is capturing Image
if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
uploadFile();
} else if (resultCode == RESULT_CANCELED) {
// user cancelled Image capture
Toast.makeText(getActivity(),
"User cancelled image capture", Toast.LENGTH_SHORT)
.show();
} else {
// failed to capture image
Toast.makeText(getActivity(),
"Sorry! Failed to capture image", Toast.LENGTH_SHORT)
.show();
}
}
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) {
imageUri = data.getData();
Toast.makeText(getActivity().getBaseContext(), "Image Added. Press Compose to transfer to Mail Window", Toast.LENGTH_SHORT).show();
uploadFiles();
}
}
ImageView mImageView = (ImageView) view.findViewById(R.id.imageView);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
if(imageBitmap==null){
// No image was taken
private static File getOutputMediaFile(int type) {
// External sdcard location
File mediaStorageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
IMAGE_DIRECTORY_NAME);
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
} else { } else {
return null;
}
return mediaFile;
}
private void uploadFile() {
//if there is a file to upload
if (fileUri != null) {
//displaying a progress dialog while upload is going on
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle("Uploading");
progressDialog.show();
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
StorageReference riversRef = mStorageRef.child("images/"+ timeStamp+"pic.jpg");
riversRef.putFile(fileUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//if the upload is successfull
//hiding the progress dialog
progressDialog.dismiss();
//and displaying a success toast
Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
//if the upload is not successfull
//hiding the progress dialog
progressDialog.dismiss();
mImageView.setImageBitmap(imageBitmap); //and displaying error message
Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@SuppressWarnings("VisibleForTests")
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
//calculating progress percentage
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
//displaying percentage in progress dialog
progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
}
});
} }
//if there is not any file
else {
//you can display an error toast
} }
} }
String mCurrentPhotoPath; private void uploadFiles() {
//if there is a file to upload
if (imageUri != null) {
//displaying a progress dialog while upload is going on
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle("Uploading");
progressDialog.show();
private File createImageFile() throws IOException { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
// Create an image file name Locale.getDefault()).format(new Date());
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents StorageReference riversRef = mStorageRef.child("images/"+ timeStamp+"pic.jpg");
mCurrentPhotoPath = image.getAbsolutePath(); riversRef.putFile(imageUri)
return image; .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//if the upload is successfull
//hiding the progress dialog
progressDialog.dismiss();
//and displaying a success toast
Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
} }
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
//if the upload is not successfull
//hiding the progress dialog
progressDialog.dismiss();
//and displaying error message
Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@SuppressWarnings("VisibleForTests")
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
//calculating progress percentage
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
//displaying percentage in progress dialog
progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
}
});
}
//if there is not any file
else {
//you can display an error toast
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// save file url in bundle as it will be null on scren orientation
// changes
outState.putParcelable("file_uri", fileUri);
}
/*
@Override @Override
public void onStart(){ public void onStart(){
super.onStart(); super.onStart();
dispatchTakePictureIntent(); dispatchTakePictureIntent();
} }
*/
} }
package com.mapps.seproject; package com.mapps.seproject;
import android.*;
import android.Manifest;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Fragment; import android.app.Fragment;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
...@@ -29,6 +35,9 @@ import com.google.firebase.storage.StorageReference; ...@@ -29,6 +35,9 @@ import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask; import com.google.firebase.storage.UploadTask;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import static android.app.Activity.RESULT_OK; import static android.app.Activity.RESULT_OK;
...@@ -43,15 +52,15 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ ...@@ -43,15 +52,15 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
Spinner dropdown; Spinner dropdown;
TextView emailText; TextView emailText;
private StorageReference mStorageRef;
Button bAddImage; private Uri imageUri = CameraFragment.images;
//Button bAddImage;
View view; View view;
private Uri imageUri;
Button upload; Button upload;
private static int RESULT_LOAD_IMAGE = 1; //private static int RESULT_LOAD_IMAGE = 1;
private static int RESULT_MAIL = 2;
private Button b_get; private Button b_get;
private com.mapps.seproject.TrackGPS gps; private com.mapps.seproject.TrackGPS gps;
...@@ -73,16 +82,12 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ ...@@ -73,16 +82,12 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
bComposeMail = (Button) view.findViewById(R.id.bComposeMail); bComposeMail = (Button) view.findViewById(R.id.bComposeMail);
emailText = (TextView) view.findViewById(R.id.tvEmailMessage); emailText = (TextView) view.findViewById(R.id.tvEmailMessage);
bAddImage = (Button) view.findViewById(R.id.bAddImage);
b_get = (Button) view.findViewById(R.id.button2); b_get = (Button) view.findViewById(R.id.button2);
upload = (Button) view.findViewById(R.id.upload_image);
mStorageRef = FirebaseStorage.getInstance().getReference();
bAddImage.setOnClickListener(this);
bComposeMail.setOnClickListener(this); bComposeMail.setOnClickListener(this);
b_get.setOnClickListener(this); b_get.setOnClickListener(this);
upload.setOnClickListener(this);
return view; return view;
} }
...@@ -161,17 +166,7 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ ...@@ -161,17 +166,7 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
} }
if(v == bAddImage) {
Intent cameraIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(cameraIntent,RESULT_LOAD_IMAGE);
}
//Upload Image
if(v == upload){
uploadFile();
}
//Location //Location
if(v == b_get){ if(v == b_get){
...@@ -204,74 +199,7 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ ...@@ -204,74 +199,7 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) {
imageUri = data.getData();
Toast.makeText(getActivity().getBaseContext(), "Image Added. Press Compose to transfer to Mail Window", Toast.LENGTH_SHORT).show();
}
}
//Upload image
private void uploadFile() {
//if there is a file to upload
if (imageUri != null) {
//displaying a progress dialog while upload is going on
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle("Uploading");
progressDialog.show();
StorageReference riversRef = mStorageRef.child("images/pic.jpg");
riversRef.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//if the upload is successfull
//hiding the progress dialog
progressDialog.dismiss();
//and displaying a success toast
Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
//if the upload is not successfull
//hiding the progress dialog
progressDialog.dismiss();
//and displaying error message
Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@SuppressWarnings("VisibleForTests")
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
//calculating progress percentage
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
//displaying percentage in progress dialog
progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
}
});
}
//if there is not any file
else {
//you can display an error toast
}
}
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) public void onActivityCreated(Bundle savedInstanceState)
......
...@@ -58,13 +58,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL ...@@ -58,13 +58,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL
b.setOnClickListener(this); b.setOnClickListener(this);
loginText.setOnClickListener(this); loginText.setOnClickListener(this);
} }
...@@ -88,9 +81,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL ...@@ -88,9 +81,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL
return; return;
} }
progress.setMessage("Registering"); // Progress Bar progress.setMessage("Registering"); // Progress Bar
progress.show(); progress.show();
......
package com.mapps.seproject; package com.mapps.seproject;
import android.*;
import android.Manifest;
import android.annotation.TargetApi;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
...@@ -10,18 +19,111 @@ public class StartActivty extends AppCompatActivity implements View.OnClickListe ...@@ -10,18 +19,111 @@ public class StartActivty extends AppCompatActivity implements View.OnClickListe
Button user; Button user;
Button municipal; Button municipal;
public static final int PERMISSIONS_MULTIPLE_REQUEST = 123;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_activty); setContentView(R.layout.activity_start_activty);
checkAndroidVersion();
user = (Button) findViewById(R.id.user_entry); user = (Button) findViewById(R.id.user_entry);
municipal = (Button) findViewById(R.id.municipal_entry); municipal = (Button) findViewById(R.id.municipal_entry);
user.setOnClickListener(this); user.setOnClickListener(this);
municipal.setOnClickListener(this); municipal.setOnClickListener(this);
} }
private void checkAndroidVersion() {
if (Build.VERSION.SDK_INT >= 23) {
checkPermission();
} else {
// write your logic here
}
}
@TargetApi(Build.VERSION_CODES.M)
private void checkPermission() {
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.READ_EXTERNAL_STORAGE) + ContextCompat
.checkSelfPermission(this, android.Manifest.permission.CAMERA) + ContextCompat
.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) + ContextCompat
.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale
(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) ||
ActivityCompat.shouldShowRequestPermissionRationale
(this, android.Manifest.permission.CAMERA) ||
ActivityCompat.shouldShowRequestPermissionRationale
(this, Manifest.permission.ACCESS_COARSE_LOCATION) ||
ActivityCompat.shouldShowRequestPermissionRationale
(this, Manifest.permission.ACCESS_FINE_LOCATION)) {
Snackbar.make(findViewById(android.R.id.content),
"Please Grant Permissions ",
Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
new View.OnClickListener() {
@Override
public void onClick(View v) {
requestPermissions(
new String[]{android.Manifest.permission
.READ_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, Manifest.permission
.ACCESS_FINE_LOCATION, Manifest.permission
.ACCESS_COARSE_LOCATION},PERMISSIONS_MULTIPLE_REQUEST);
}
}).show();
} else {
requestPermissions(
new String[]{android.Manifest.permission
.READ_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, Manifest.permission
.ACCESS_FINE_LOCATION, Manifest.permission
.ACCESS_COARSE_LOCATION},PERMISSIONS_MULTIPLE_REQUEST);
}
} else {
// write your logic code if permission already granted
}
}
@Override
@TargetApi(Build.VERSION_CODES.M)
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case PERMISSIONS_MULTIPLE_REQUEST:
if (grantResults.length > 0) {
boolean cameraPermission = grantResults[1] == PackageManager.PERMISSION_GRANTED;
boolean readExternalFile = grantResults[0] == PackageManager.PERMISSION_GRANTED;
if(cameraPermission && readExternalFile)
{
// write your logic here
Snackbar.make(findViewById(android.R.id.content),
"Please Grant Permissions to upload profile photo",
Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
new View.OnClickListener() {
@Override
public void onClick(View v) {
requestPermissions(
new String[]{android.Manifest.permission
.READ_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, Manifest.permission
.ACCESS_FINE_LOCATION, Manifest.permission
.ACCESS_COARSE_LOCATION},PERMISSIONS_MULTIPLE_REQUEST);
}
}).show();
} else {
}
}
break;
}
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if(v==user){ if(v==user){
......
...@@ -3,25 +3,54 @@ package com.mapps.seproject; ...@@ -3,25 +3,54 @@ package com.mapps.seproject;
import android.app.Fragment; import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.android.volley.Cache;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;
import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser; import com.google.firebase.auth.FirebaseUser;
import com.mapps.seproject.adapter.FeedListAdapter;
import com.mapps.seproject.app.AppController;
import com.mapps.seproject.data.FeedItem;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import static android.content.ContentValues.TAG;
public class UserActivityFragment extends Fragment { public class UserActivityFragment extends Fragment {
Button bSignOut; Button bSignOut;
TextView welcome;
FirebaseUser user;
FirebaseAuth firebaseAuth; FirebaseAuth firebaseAuth;
Button bComposeScreen;
private ListView listView;
private FeedListAdapter listAdapter;
private List<FeedItem> feedItems;
private String URL_FEED = "https://se-project-4a6c6.firebaseapp.com/feeds/feeds.json";
View view; View view;
...@@ -41,11 +70,11 @@ public class UserActivityFragment extends Fragment { ...@@ -41,11 +70,11 @@ public class UserActivityFragment extends Fragment {
} }
FirebaseUser user = firebaseAuth.getCurrentUser(); user = firebaseAuth.getCurrentUser();
welcome = (TextView) view.findViewById(R.id.tvWelcome);
welcome.setText("Welcome "+user.getEmail()); // Get Email'
bSignOut = (Button) view.findViewById(R.id.bSignOut); bSignOut = (Button) view.findViewById(R.id.bSignOut);
bSignOut.setOnClickListener(new View.OnClickListener() { bSignOut.setOnClickListener(new View.OnClickListener() {
...@@ -59,6 +88,58 @@ public class UserActivityFragment extends Fragment { ...@@ -59,6 +88,58 @@ public class UserActivityFragment extends Fragment {
} }
}); });
listView = (ListView) view.findViewById(R.id.lists);
feedItems = new ArrayList<FeedItem>();
listAdapter = new FeedListAdapter(getActivity(), feedItems);
listView.setAdapter(listAdapter);
// These two lines not needed,
// just to get the look of facebook (changing background color & hiding the icon)
// We first check for cached request
Cache cache = AppController.getInstance().getRequestQueue().getCache();
Cache.Entry entry = cache.get(URL_FEED);
if (entry != null) {
// fetch the data from cache
try {
String data = new String(entry.data, "UTF-8");
try {
parseJsonFeed(new JSONObject(data));
} catch (JSONException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else {
// making fresh volley request and getting json
JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET,
URL_FEED, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
VolleyLog.d(TAG, "Response: " + response.toString());
if (response != null) {
parseJsonFeed(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
// Adding request to volley request queue
AppController.getInstance().addToRequestQueue(jsonReq);
}
return view; return view;
...@@ -67,13 +148,42 @@ public class UserActivityFragment extends Fragment { ...@@ -67,13 +148,42 @@ public class UserActivityFragment extends Fragment {
@Override @Override
public void onViewCreated(View view,Bundle savedInstanceState){ public void onViewCreated(View view,Bundle savedInstanceState){
super.onViewCreated(view,savedInstanceState); super.onViewCreated(view,savedInstanceState);
getActivity().setTitle("Menu1"); getActivity().setTitle("Welcome "+ user.getEmail());
} }
private void parseJsonFeed(JSONObject response) {
try {
JSONArray feedArray = response.getJSONArray("feed");
for (int i = 0; i < feedArray.length(); i++) {
JSONObject feedObj = (JSONObject) feedArray.get(i);
FeedItem item = new FeedItem();
item.setId(feedObj.getInt("id"));
item.setName(feedObj.getString("name"));
String image = feedObj.isNull("image") ? null : feedObj
.getString("image");
item.setImge(image);
item.setStatus(feedObj.getString("status"));
item.setProfilePic(feedObj.getString("profilePic"));
item.setTimeStamp(feedObj.getString("timeStamp"));
String feedUrl = feedObj.isNull("url") ? null : feedObj
.getString("url");
item.setUrl(feedUrl);
feedItems.add(item);
}
listAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
} }
...@@ -4,11 +4,23 @@ ...@@ -4,11 +4,23 @@
android:orientation="vertical" android:layout_width="match_parent" android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView" <Button
android:layout_width="match_parent" android:id="@+id/btnCapturePicture"
android:layout_height="300dp" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_marginStart="13dp" android:layout_marginBottom="114dp"
app:srcCompat="@drawable/googleg_standard_color_18" /> android:layout_marginStart="53dp"
android:text="Take Image" />
<Button
android:id="@+id/choose_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/btnCapturePicture"
android:layout_marginEnd="42dp"
android:text="Choose Image" />
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
...@@ -23,24 +23,16 @@ ...@@ -23,24 +23,16 @@
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_alignParentStart="true" /> android:layout_alignParentStart="true" />
<Button <Button
android:text="Compose Email" android:text="Compose Email"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/bComposeMail" android:id="@+id/bComposeMail"
android:layout_marginBottom="28dp"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_alignParentStart="true" /> android:layout_alignParentStart="true" />
<Button
android:text="Add Image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bAddImage"
android:layout_above="@+id/bComposeMail"
android:layout_alignParentStart="true"
android:layout_marginBottom="12dp" />
<EditText <EditText
android:layout_width="match_parent" android:layout_width="match_parent"
android:inputType="textPersonName" android:inputType="textPersonName"
...@@ -48,27 +40,22 @@ ...@@ -48,27 +40,22 @@
android:id="@+id/tvEmailMessage" android:id="@+id/tvEmailMessage"
android:visibility="visible" android:visibility="visible"
android:layout_height="280dp" android:layout_height="280dp"
android:layout_above="@+id/bAddImage" android:layout_above="@+id/bComposeMail"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_marginBottom="19dp" android:layout_marginBottom="19dp"
android:hint="Enter your complaint here" /> android:hint="Enter your complaint here"
android:layout_alignParentEnd="true" />
<Button <Button
android:id="@+id/button2" android:id="@+id/button2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvEmailMessage" android:text="Get Location"
android:layout_above="@+id/tvEmailMessage"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:text="Get Location" /> android:layout_marginBottom="19dp" />
<Button
android:id="@+id/upload_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Upload Image"
android:layout_alignBaseline="@+id/bComposeMail"
android:layout_alignBottom="@+id/bComposeMail"
android:layout_toEndOf="@+id/button2" />
</RelativeLayout> </RelativeLayout>
......
...@@ -11,20 +11,17 @@ ...@@ -11,20 +11,17 @@
<TextView <ListView
android:text="TextView" android:id="@+id/lists"
android:layout_width="wrap_content" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:divider="@null" />
android:layout_centerHorizontal="true"
android:textSize="24sp"
android:id="@+id/tvWelcome" />
<Button <Button
android:text="Sign Out" android:text="Sign Out"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tvWelcome" android:layout_below="@id/lists"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="76dp" android:layout_marginTop="76dp"
android:id="@+id/bSignOut" /> android:id="@+id/bSignOut" />
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/com.example.kishore.afinal/files/Pictures" /> <external-path name="my_images" path="/Pictures" />
</paths> </paths>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment