Ich muss das Bild von der Kamera und Galerie zu Firebase speichern. In meinem Projekt Upload von Galerie funktioniert, aber wenn ich versuche, von der Kamera zu laden passiert nichts. Wenn Sie auf die Schaltfläche klicken, wählen Sie zwischen Galerie oder Kamera. Wenn Sie ein Bild aufnehmen oder ein Bild aus einer Galerie auswählen, bekomme ich in der Bildansicht ein Bild. Dann klicke ich auf Speichern und wenn das Bild aus der Galerie ist, wird es gespeichert und erstellt Kind in der Datenbank, aber wenn das Bild von der Kamera ist, wird es nicht funktionieren. Gibt es eine Lösung für dieses Problem?Bild der Kamera auf firebase hochladen
MainActivity.java
public class MainActivity extends AppCompatActivity {
private Uri mImageUri = null;
private Button btn,mSubmitBtn;
private ImageView imageview;
private int GALLERY = 1, CAMERA = 2;
private StorageReference mStorage;
private DatabaseReference mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
mSubmitBtn = (Button)findViewById(R.id.submit);
imageview = (ImageView) findViewById(R.id.iv);
mStorage = FirebaseStorage.getInstance().getReference();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Upload");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPictureDialog();
}
});
mSubmitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startPosting();
}
});
}
private void showPictureDialog(){
AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
pictureDialog.setTitle("Select Action");
String[] pictureDialogItems = {
"Select photo from gallery",
"Capture photo from camera" };
pictureDialog.setItems(pictureDialogItems,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
choosePhotoFromGallary();
break;
case 1:
takePhotoFromCamera();
break;
}
}
});
pictureDialog.show();
}
public void choosePhotoFromGallary() {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, GALLERY);
}
private void takePhotoFromCamera() {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA);
}
////////////////////////////
private void startPosting(){
if (mImageUri !=null){
StorageReference filepath = mStorage.child("Images").child(mImageUri.getLastPathSegment());
filepath.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl = taskSnapshot.getDownloadUrl();
DatabaseReference newPost = mDatabase.push();//push kreira uniq random id
newPost.child("image").setValue(downloadUrl.toString());
}
});
}
}
////////////////////////
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == this.RESULT_CANCELED) {
return;
}
if (requestCode == GALLERY) {
if (data != null) {
mImageUri = data.getData();
imageview.setImageURI(mImageUri);
}
} else if (requestCode == CAMERA) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
imageview.setImageBitmap(thumbnail);
imageview.setImageURI(mImageUri);
}
}
}
geschieht dies auf Naugat und über Android-Versionen? –
ja, auf Nougat-Version –