Witam serdecznie ! :P
Po kliknięciu w button odpalam Camere w aparacie, robię zdjęcie, a następnie wrzucam do ImageView i wszystko jest ok, zdjęcie się wyświetla. Problem pojawia się wtedy gdy chcę przekazać Bitmapę do innego Activity. Jeśli chcę coś przekazać w Bundle, jest ok, ale od razu jak wrzucam BitMapę do putExtra nie dzieje się nic, aplikacja działa dalej i nie odpala nowego Activity. Wpadłem, więc na pomysł żeby przerabiać bitmapę na Stringa i wysłać go Bundlem, a tu znowu problem przy bitmap.compress wywala się aplikacja.
Nie mam już pomysłu, nie wiem co zrobić. Problemem jest to, że robię to w onActivityResult() ?
Kod:
public void savePicture(){
Calendar cal = Calendar.getInstance();
File file = new File(Environment.getExternalStorageDirectory(), (cal.getTimeInMillis()+".jpg"));
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
file.delete();
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
capturedImageUri = Uri.fromFile(file);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
startActivityForResult(i, CAMERA_PIC_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap( getApplicationContext().getContentResolver(), capturedImageUri);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
Bundle koszyk = new Bundle();
koszyk.putString("path", encoded);
Intent startActivityPhotoAdd = new Intent(this, PhotoAddActivity.class);
startActivityPhotoAdd.putExtras(koszyk);
startActivity(startActivityPhotoAdd);
W przypadku od razu wrzucając BitMapę:
Intent startActivityPhotoAdd = new Intent(MainActivity.this, PhotoAddActivity.class);
startActivityPhotoAdd.putExtra("BitmapImage", bitmap);
startActivity(startActivityPhotoAdd);
Odebranie:
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
ImageView image = (ImageView) findViewById(R.id.imageViewNewPhoto);
Dodam, że zrobiłem ImageView z obrazkiem Androida, przerobiłem go na Bitmapę, a następnie na Stringa. Także kod wydaję się być w porządku, bitmapa ze zdjęcia z telefonu ma jakiś problem =/