2012-04-03 207 views
0

我正在製作一個android應用程序,並且我想在其中使用相機。我正確地執行了代碼,但是我面臨的問題是我捕獲的圖像被保存了兩次,一次是水平的,另一次是垂直的。這是一個奇怪的問題,我無法弄清楚。下面是我正在使用的代碼。Android相機在縱向和橫向模式下保存圖像

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(); 

@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(); 
        } 

       } 
     } 
    } 

誰能幫我?
-Thanks在advace

+0

我不認爲我面臨這個問題更早。它可以是因爲android更新。我將我的手機從2.3.4更新到2.3.6。 – Antrromet 2012-04-04 07:58:43

+0

更新:它似乎是一個設備問題,因爲相同的代碼在其他設備上工作得非常好。 – Antrromet 2012-10-06 17:38:06

回答

0

項==Ø請使用以下工作代碼:::

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); 

你也可以改變形象的名字,只要你喜歡

相關問題