2016-06-16 11 views
0

Ich erstelle eine Anwendung, die nach dem Aufnehmen eines Fotos auf einen Server hochgeladen wird (unter Verwendung des Dateipfads, wie das Lernprogramm unter https://trinitytuts.com/capture-image-upload-server-android/).Abrufen des Dateipfads aus dem internen Verzeichnis, Erfassen von Fotos

Um das Bild zu machen, befolgte ich die Anweisungen auf https://developer.android.com/training/camera/photobasics.html.

Während ich ein Bild mit einem externen Speicher erfassen, funktioniert alles gut, aber wenn ich ein Gerät ohne SD (wie ein Nexus) -App verwendet, stürzt ab.

Können Sie mir helfen? Danke

EDIT

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     File photoFile = null; 
     try { 
      photoFile = createImageFile(); 
     } catch (IOException ex) { 
      Log.w("error", "ERROR"); 
     } 
     if (photoFile != null) { 
      Uri photoURI = FileProvider.getUriForFile(this, 
        "com.application.package.fileprovider",//here I put the app pakage 
        photoFile); 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
      startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
     } 
    } 
+0

posten Sie Ihre Kamera Absicht Code hinzufügen –

+0

Ich habe den Code – Carlo

Antwort

0

Nach Bildaufnahme Sie das Ergebnis in der ActivtyResult bekommen.

if (requestCode == CAMERA_REQUEST)

{

Bitmap Foto = (Bitmap) data.getExtras() erhalten ("data").

}

versuchen diese!

1

Verwenden öffnen diese, während die Kamera Absicht

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     File photoFile = null; 
     try { 
      photoFile = createImageFile(); 
     } catch (IOException ex) { 
      Log.e("Log Excepton", ex.toString() + "..."); 
     } 
     if (photoFile != null) { 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); 
      startActivityForResult(takePictureIntent, IMAGE_CAPTURE); 
     } 

    } 

Verwenden Sie diese in auf Aktivitätsergebnis mit

if (requestCode == IMAGE_CAPTURE) { 
    Log.e("Log mCurrentPhotoPath", mCurrentPhotoPath + "..."); 
    iv_uploadimage.setImageURI(Uri.parse(mCurrentPhotoPath)); 
    selectedImagePath1 = mCurrentPhotoPath.substring(5); 
    Log.e("Log Optimized path", selectedImagePath1 + "...");} 

Datei Schreibberechtigung

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

hinzufügen Dies ist für Datei erstellen

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; 
    } 
0

Ich denke, haben Problem in createImageFile Code.

Versuchen mit dieser aktualisierten Funktion

/** 
* Function for create file in SD card or internal storage depending on SD card availability 
* @return : file in internal/external storage 
*/ 
private File createImageFile() { 
    String state = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     // get path of pictures folder from SD card 
     // give any path of your choice 
     return new File(Environment.DIRECTORY_PICTURES); 
    }else { 
     ContextWrapper cw = new ContextWrapper(getApplicationContext()); 
     // create folder of your app or get already exists folder 
     // ie path from internal storage 
     return cw.getDir("media", Context.MODE_PRIVATE); 
    } 
} 

Vergessen Sie nicht, permission

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />