2014-02-19 115 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