2014-02-19 167 views
0

我想用相機拍照並剪裁它。在不同設備上裁剪圖像

Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setClassName("com.android.gallery", "com.android.camera.CropImage"); 

在某些Android版本,包括最新的,com.android.gallery不存在了:這對新設備使用此代碼我的社區維基發現的偉大工程(與第二碼)。你需要使用這個然後:

Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setClassName("com.google.android.gallery3d", "com.android.gallery3d.app.CropImage"); 

當然,我也想支持較舊的設備。什麼是「一些Android版本」的意思?有人可以給我一個API級別嗎?或者在Android源代碼中是否有最終的常量,我可以使用它來爲意圖選擇正確的字符串?

回答

1

我找到了一個更好的代碼針對此問題。這裏將搜索能夠裁剪圖像並啓動找到的第一個應用程序。希望幫助別人。

Intent cropApps = new Intent("com.android.camera.action.CROP"); 
cropApps.setType("image/*"); 

List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(cropApps, 0); 
int size = list.size(); 

if (size == 0) 
{   
    Toast.makeText(context, "Can not find image crop app", Toast.LENGTH_SHORT).show();  
    return null; 
} 
else 
{ 
    ResolveInfo res = list.get(0); 

    Intent intent = new Intent(); 
    intent.setClassName(res.activityInfo.packageName, res.activityInfo.name); 

    intent.setData(imageCaptureUri); 
    intent.putExtra("outputX", 96); 
    intent.putExtra("outputY", 96); 
    intent.putExtra("aspectX", 1); 
    intent.putExtra("aspectY", 1); 
    intent.putExtra("scale", true); 
    intent.putExtra("return-data", true); 

    startActivityForResult(intent, CROP_FROM_CAMERA); 
} 
2

某些設備不支持裁剪,這意味着他們的圖庫應用程序沒有構建它。最好的解決方案是在您的應用程序中構建裁剪機制。這裏是一個很好的開源栽跟頭:

https://github.com/edmodo/cropper

+0

偉大的圖書館!謝謝 :) – Cilenco