2010-09-13 67 views
4

我在嘗試裁剪用戶從其圖庫中選擇的圖像時遇到了與我的程序有關的問題。到目前爲止,該問題僅出現在運行在Droid X上時,因爲在原始moto Droid上運行正常。在Droid X上裁剪圖片將生成的圖片設置爲壁紙

基本上,問題出現在剪切意圖正在運行。一旦用戶裁剪照片並單擊保存按鈕,它將用保存的裁剪圖像替換主屏幕上的牆紙!它不在moto droid或模擬器上這樣做。下面是裁剪和保存圖片到SD卡的代碼:

@Override 
public void onActivityResult(int requestCode,int resultCode,Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
if (requestCode ==1){ 
if (resultCode == Activity.RESULT_OK) { 
    Intent i = new Intent("com.android.camera.action.CROP"); 
    i.setData(data.getData()); 
    i.putExtra("noFaceDetection", true); 
    i.putExtra("outputX", 80); 
    i.putExtra("outputY", 80); 
    i.putExtra("aspectX", 1); 
    i.putExtra("aspectY", 1); 
    i.putExtra("scale", true); 


if(selectedImageString == null){ 
     ContentValues values = new ContentValues(); 
     values.put(android.provider.MediaStore.Images.Media.TITLE, "Temp_Icon1"); 
     values.put(android.provider.MediaStore.Images.Media.BUCKET_ID, "Temp_Icons"); 
     values.put(android.provider.MediaStore.Images.Media.BUCKET_DISPLAY_NAME,"Temp_Icons"); 
     values.put(android.provider.MediaStore.Images.Media.IS_PRIVATE, 1); 
     selectedImageString = getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values).toString(); 
    } 
    i.putExtra("output", Uri.parse(selectedImageString)); 
    startActivityForResult(i, 2); 
} 
} 
if(requestCode == 2){ 
if (resultCode == Activity.RESULT_OK){ 
    uriPath = Uri.parse(selectedImageString); 
    imageView.setImageURI(uriPath); 
} 
} 

} 

有人可以幫我這個嗎?

+0

我在Droid 2的應用程序中看到了同樣的問題。任何想法?我注意到Droid 2上的聯繫人應用程序沒有修剪後更新壁紙的相同副作用,所以必須有一種方法可以避免在我們的應用程序中... – manisha 2011-01-07 23:07:13

+0

相關:[com.android.camera.action的問題。作者:摩托羅拉Defy](http://stackoverflow.com/q/5709601) – blahdiblah 2013-03-05 03:31:19

回答

3

我能證明,在Droid X是做我一樣,即使上面提到的「輸出」選項。到目前爲止,我還沒有找到辦法解決這個問題,並且也會考慮阻止Droid X手機的裁剪功能。它在這裏不起作用。

通過他們的方式,你可以嘗試以下...

i.putExtra("return-data", true); 

這將返回在返回的意圖的圖像。您可以通過以下方式訪問它...

BitMap BM = data.getParcelableExtra("data"); 

但是,這不受Galaxy S系列手機的支持。無論如何它都會返回一個空的包裹。所以,我還沒有找到好的解決方案。

1

這可能是因爲在調用作物意圖覆蓋圖像時不指定放置數據的位置。

作物意圖是內部的代碼,我是這麼認爲的,我不相信我們可以肯定知道

當我打電話作物意圖我通過

(作物的意圖是不是所有的手機要麼BTW找到)
i.putExtra("output", croppedOutputUri); 
+0

謝謝,我決定限制裁剪能力只是我可以物理測試的手機,並確認我需要的方式工作。 – Brian 2010-09-22 17:09:01

+0

@losSebos建議MediaStore.EXTRA_OUTPUT比「輸出」更好。 – Jonathan 2013-03-14 10:46:19