Skip to content

Instantly share code, notes, and snippets.

@TheAlchemistKE
Created July 4, 2019 09:31
Show Gist options
  • Save TheAlchemistKE/68e098bb5ea746d59b6eca0f5ec9b4c2 to your computer and use it in GitHub Desktop.
Save TheAlchemistKE/68e098bb5ea746d59b6eca0f5ec9b4c2 to your computer and use it in GitHub Desktop.
This is the Activity to which I show all my images.
package com.kelynnjeri.memories;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class HomeScreen extends AppCompatActivity {
private RecyclerView mRecyclerView;
private RecyclerView.LayoutManager layoutManager;
private StorageReference storageRef;
private DatabaseReference dbReference;
private ImageAdapter mImageAdapter;
private List<Uploads> mUploadsList;
private static final int REQUEST_CODE = 21;
private static final String TAG = "HomeScreen";
private Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Log.d(TAG, "HomeScreen Created");
mRecyclerView = findViewById(R.id.recyclerview);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mUploadsList = new ArrayList<>();
dbReference = FirebaseDatabase.getInstance().getReference("images");
dbReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Uploads upload = postSnapshot.getValue(Uploads.class);
mUploadsList.add(upload);
}
mImageAdapter = new ImageAdapter(HomeScreen.this, mUploadsList);
mRecyclerView.setAdapter(mImageAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(HomeScreen.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent addImage = new Intent(Intent.ACTION_GET_CONTENT);
addImage.setType("image/*");
addImage.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(addImage.createChooser(addImage, "Add Image"), REQUEST_CODE);
uploadImage();
}
});
storageRef = FirebaseStorage.getInstance().getReference();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
imageUri = data.getData();
}
}
private String getImageExtension(Uri uri) {
ContentResolver contentResolver = getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
return mime.getExtensionFromMimeType(contentResolver.getType(uri));
}
private void uploadImage() {
if(imageUri != null) {
StorageReference imageReference = storageRef.child("images/" + System.currentTimeMillis() + "." + getImageExtension(imageUri));
imageReference.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(HomeScreen.this, "Upload Successful.", Toast.LENGTH_LONG).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(HomeScreen.this, "Upload Failed!!!" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(this, "No File Selected.", Toast.LENGTH_SHORT).show();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment