Autore Topic: Catturare immagini da Fragment  (Letto 345 volte)

Offline flik

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab 4
  • Sistema operativo:
    Windows 7
Catturare immagini da Fragment
« il: 15 Dicembre 2014, 10:42:12 CET »
0
Ciao a tutti!! Ho un problema nella cattura delle immagini da Fragment. Sull'onActivityResult mi arriva una Bitmap di 256*192 e quindi un'immagina di bassa qualità.

Questo è il codice:

Codice (Java): [Seleziona]
public class ConteggiFragment extends Fragment {

m_ivContatoriCamera.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                PackageManager pm = getActivity().getPackageManager();
                                if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
                                        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                        ConteggiFragment.this.startActivityForResult(intent,
                                                CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
                                } else {
                                    Toast toast = Toast.makeText(getActivity().getApplicationContext(),
                                            "Fotocamera non rilevata!", Toast.LENGTH_SHORT);
                                    toast.show();
                                }

                            }
                        });


public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch(requestCode)
        {
            case CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE:
                if (resultCode == Activity.RESULT_OK) {
                    Bitmap thumbnail = (Bitmap) intent.getExtras().get("data");
                    if(thumbnail != null) {
                        m_ivContatoriGioco.setImageBitmap(thumbnail);

                        ByteArrayOutputStream bytes = new ByteArrayOutputStream();

                        thumbnail.compress(Bitmap.CompressFormat.PNG, 100, bytes);

                        String DBPath = appInfo.GetCurrentDir();

                        String imageFileName = "image_" + schedaSelezionata.getIDScheda() + ".png";

                        File imageFile = new File(DBPath, imageFileName);

                        try {
                            imageFile.createNewFile();
                            FileOutputStream fos = new FileOutputStream(imageFile);
                            fos.write(bytes.toByteArray());
                            fos.close();
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                } else if (resultCode == getActivity().RESULT_CANCELED) {
                    Toast.makeText(getActivity().getApplicationContext(),
                            "Azione annullata!", Toast.LENGTH_SHORT)
                            .show();
                } else {
                    Toast.makeText(getActivity().getApplicationContext(),
                            "Errore nella cattura dell'immagine", Toast.LENGTH_SHORT)
                            .show();
                }
            default:
                break;
        }
    }
}

Effettuo la compressione PNG (e non JPEG) per evitare di perdere ulteriori informazioni sull'immagine, ma avendo una risoluzione bassa mi risulta illeggibile. Devo passare qualche parametro all'intent nel momento dell'apertura della fotocamera (startActivityForResult)?

Come potete notare, salvo l'immagine su una cartella predefinita dell'SD. Il sistema salva in automatico l'immagine anche sulla cartella predefinita "Camera". Esiste un modo per evitare ciò?

Grazie!  O:-)