Created
July 4, 2019 09:31
-
-
Save TheAlchemistKE/68e098bb5ea746d59b6eca0f5ec9b4c2 to your computer and use it in GitHub Desktop.
This is the Activity to which I show all my images.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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