2017-11-08 2 views
1

I Bild von der Kamera erhalten mag,Get Bild von der Kamera Ergebnis null in Daten onActivityResult

public void LicenseCameraIntent() { 
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, PROFILE_REQUEST_CAMERA); 
} 

Return Bitmap verwenden, aber es funktioniert perfekt. Leider zeigen sich Bilder als wirklich kleine Größe.

Also, ich habe die Suche zu halten, bis ich

public void licenseCameraIntent() { 
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    Uri mImageCaptureUri1 = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), 
      "tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg")); 

    cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri1); 
    cameraIntent.putExtra("return-data", true); 
    startActivityForResult(cameraIntent, LICENSE_REQUEST_CAMERA); 
} 

Auf onActivityResult Daten erhalten immer null Ergebnis zeigen. Wie kann ich dieses Problem beheben? Es ist möglich, die erste Lösung zu verwenden, aber ein größeres Bild zurückzugeben?

Dank

+0

Maßstab der Bitmap oder Last mit Glide-Bibliothek verwenden können ... es wird automatisch anpassen Ihre Bildgröße .... aber die Qualität des Bildes sollte gut sein. –

+0

kann nicht, das Ergebnis von Daten ist Miniaturansicht mit kleiner Größe. Bild beim Zoomen unterbrochen – sikuru13

Antwort

3

während Sie Capture-Bild von der Kamera sind Sie eine Datei für ein Bild erstellt haben, die Ihr Bild vollständiger Pfad ist so macht global.

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
if (cameraIntent.resolveActivity(getPackageManager()) != null) { 
    // Create the File where the photo should go 
    File photoFile = null; 
    try { 
     photoFile = createImageFile(); 
    } catch (IOException ex) { 
     // Error occurred while creating the File 
     Log.i(TAG, "IOException"); 
    } 
    // Continue only if the File was successfully created 
    if (photoFile != null) { 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); 
     startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE); 
    } 
} 

und die Bilddatei, mCurrentPhotoPath ist der vollständige Pfad des Bildes

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, // prefix 
      ".jpg",   // suffix 
      storageDir  // directory 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
    return image; 
} 

nach onActivityResult() können Sie das Bild von mCurrentPhotoPath bekommen

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     try { 
      mImageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath)); 
      mImageView.setImageBitmap(mImageBitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Für weitere Informationen , können Sie diesen Link Capture Image from Camera and Display in Activity

überprüfen
+0

Ich habe deine Idee. Aber immer noch Problem aufgetreten, wenn ich versucht, Bild Bitmap Show FileNotFoundException zu bekommen .. Obwohl Photopath bereits das gleiche. Weißt du, warum? – sikuru13

+0

@ sikuru13 Haben Sie die Berechtigung zum Lesen und Schreiben des Speichers hinzugefügt? Benutzt du Aktivität oder Fragment? –

+0

Ich benutze Aktivität und bereits die Erlaubnis in Manifest @Mohit Suthar setzen – sikuru13

2

dies versuchen,

public static int REQUEST_CAMERA = 111; 

private void cameraIntent() { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(intent, REQUEST_CAMERA); 
} 

Code für onStartActivityForResult

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == Activity.RESULT_OK) { 
     if (requestCode == REQUEST_CAMERA) { 
      _FileName = "image file"; 
      capturePic = null; 
      file_pdf = null; 

      Bundle extras = data.getExtras(); 
      Bitmap imageBitmap = (Bitmap) extras.get("data"); 
      //mImageView.setImageBitmap(imageBitmap); 
      img_ticket_detail.setImageBitmap(imageBitmap); 
      capturePic = imageBitmap; 
     } 

    } 

} 

auch Sie gleiten Bibliothek für Bild anzeigen

Verwandte Themen