2012-04-03 10 views
0

Ich mache eine Android-App, und ich möchte die Kamera darin verwenden. Ich habe den Code richtig implementiert, aber das Problem, mit dem ich konfrontiert bin, ist, dass das Bild, das ich erhalte, zweimal gespeichert wird, eines horizontal und das andere vertikal. Das ist ein seltsames Problem und ich bin nicht in der Lage es herauszufinden. Das Folgende ist der Code, den ich verwende.Android Kamera Speichern von Bildern sowohl im Hoch-und Querformat

AlertDialog.Builder builder = new AlertDialog.Builder(
       FaceconActivity.this); 
     builder.setTitle("Share a Photo"); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       if (item == 0) { 
        values = new ContentValues(); 
        values.put(MediaStore.Images.Media.TITLE, "New Picture"); 
        values.put(MediaStore.Images.Media.DESCRIPTION, 
          "From your Camera"); 
        imageUri = getContentResolver().insert(
          MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
          values); 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
        startActivityForResult(intent, PICTURE_RESULT); 
       } else if (item == 1) { 
        try { 
         Intent intent = new Intent(); 
         intent.setType("image/*"); 
         intent.setAction(Intent.ACTION_GET_CONTENT); 
         startActivityForResult(
           Intent.createChooser(intent, "Select Picture"), 
           PICK_IMAGE); 
        } catch (Exception e) { 
         Toast.makeText(getApplicationContext(), e.getMessage(), 
           Toast.LENGTH_LONG).show(); 
         Log.e(e.getClass().getName(), e.getMessage(), e); 
        } 
       } 
      } 
     }); 
     builder.show(); 

und

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
     case PICK_IMAGE: 
      if (resultCode == Activity.RESULT_OK) { 
       Uri selectedImageUri = data.getData(); 
       try { 
        // OI FILE Manager 
        String filemanagerstring = selectedImageUri.getPath(); 
        // MEDIA GALLERY 
        String selectedImagePath = getPath(selectedImageUri); 
        if (selectedImagePath != null) { 
         filePath = selectedImagePath; 
        } else if (filemanagerstring != null) { 
         filePath = filemanagerstring; 
        } else { 
         Toast.makeText(getApplicationContext(), "Unknown path", 
           Toast.LENGTH_LONG).show(); 
         Log.e("Bitmap", "Unknown path"); 
        } 

        if (filePath != null) { 
         decodeFile(filePath); 
        } else { 
         bitmap = null; 
        } 
       } catch (Exception e) { 
        Toast.makeText(getApplicationContext(), "Internal error", 
          Toast.LENGTH_LONG).show(); 
        Log.e(e.getClass().getName(), e.getMessage(), e); 
       } 
      } 
      break; 
     case PICTURE_RESULT: 
      if (requestCode == PICTURE_RESULT) 
       if (resultCode == Activity.RESULT_OK) { 
        try { 
         thumbnail = MediaStore.Images.Media.getBitmap(
           getContentResolver(), imageUri); 
         imageurl = getRealPathFromURI(imageUri); 
         decodeFile(imageurl); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 
     } 
    } 

Kann jemand mir bitte helfen ??
-Danke in advace

+0

nicht mögen ich glaube, ich war mit Blick auf Dieses Problem früher. Kann es wegen der Android-Aktualisierung sein. Ich aktualisiere meine Zelle von 2.3.4 auf 2.3.6. – Antrromet

+0

Update: Es scheint, dass es ein Geräteproblem war, weil der gleiche Code in anderen Geräten einwandfrei funktionierte. – Antrromet

Antwort

0

in Artikeln == o bitte den unten stehenden Arbeits Code verwenden :::

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(); 
    } 
} 
imageUri = Uri.fromFile(file); 
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
startActivityForResult(i, PICTURE_RESULT); 

auch können Sie die Bildnamen ändern, wie Sie

Verwandte Themen