Salve a tutti, sto tentando di creare un activity in cui l'utente può caricare la propria immagine di profilo.
Quando clicca sul pulsante per caricare l'immagine, gli si apre un Dialog in cui può scegliere se selezionare una foto dalla galleria o scattarla. Ho provato con questo codice, ma funziona soltanto se seleziona l'immagine dalla galleria, altrimenti se scatta una foto questa non viene visualizzata dove dovrebbe.
Questo il codice del CircleImageView che utilizzo per mostrare l'immagine scelta:
Queste invece sono le parti del file Java interessato
Qualcuno ha qualche idea?
Grazie
Quando clicca sul pulsante per caricare l'immagine, gli si apre un Dialog in cui può scegliere se selezionare una foto dalla galleria o scattarla. Ho provato con questo codice, ma funziona soltanto se seleziona l'immagine dalla galleria, altrimenti se scatta una foto questa non viene visualizzata dove dovrebbe.
Questo il codice del CircleImageView che utilizzo per mostrare l'immagine scelta:
Codice:
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/photo"
android:layout_width="160dp"
android:layout_height="160dp"
android:layout_marginTop="20dp"
android:layout_gravity="center"
android:layout_centerInParent="true"
android:src="@mipmap/add_profile_photo_round"
app:civ_border_width="0dp"
app:civ_border_color="#000000" />
Codice:
TextView take_photo = (TextView) dialog.findViewById(R.id.take_photo);
...
take_photo.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onClick(View v) {
takePhotoFromCamera();
dialog.dismiss();
}
});
pick_gallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
choosePhotoFromGallary();
dialog.dismiss();
}
});
}
public void choosePhotoFromGallary() {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, GALLERY);
}
@RequiresApi(api = Build.VERSION_CODES.M)
private void takePhotoFromCamera() {
if (checkSelfPermission(Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.CAMERA},
MY_CAMERA_REQUEST_CODE);
}
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@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) {
Uri contentURI = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI);
image.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
} else if (requestCode == MY_CAMERA_REQUEST_CODE) {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
final Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(),
options);
image.setImageBitmap(bitmap);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
Grazie