using System; using Android.Content; using Com.Hdl.Widget.Cropimage; using Com.Hdl.Widget; using static Com.Hdl.Widget.Cropimage.HDLCropImageActivity; namespace Shared { /// /// 拍照或者选择图片 /// public static class CropImage { ///// ///// 拍照或者读取图片完成时调用的动作,string==null表示用户取消了拍照或者取消选择图片,string!=null,表示图片的路径 ///// //internal static Action _callback; ///// ///// 文件名 ///// //internal static string _fileName; ///// /// 选择类型是拍照 /// internal static readonly int TypeCamera = 101; /// /// 选择图片 /// internal static readonly int TypePicture = 102; /// /// 拍照 /// /// 回调函数 /// 文件名 /// 宽高比的宽值 /// 宽高比的高值 /// 图片大小 分辨率高值,该值不能过高,会内存不足传递不了裁剪图片资源 300以内< public static void TakePicture(Action callback, string fileName, int mRATIO_X = 1, int mRATIO_Y = 1, int OutputYSize = 200) { (Application.Activity as BaseActivity)?.SetCamera((obj) => { if(obj){ //_callback = callback; HDLCropImageActivity.MOnCropImageeCallback = new OnCropImageeCallback(callback); var intent = new Intent(Application.Activity, typeof(HDLCropImageActivity)); intent.PutExtra(HDLUtlisXM.CropTypeKey, TypeCamera); intent.PutExtra(HDLUtlisXM.CropNameKey, fileName); intent.PutExtra(HDLUtlisXM.CropRatioXKey, mRATIO_X); intent.PutExtra(HDLUtlisXM.CropRatioYKey, mRATIO_Y); intent.PutExtra(HDLUtlisXM.CropOutputYKey, OutputYSize); //intent.PutExtra("IsZoom", isZoom); Application.Activity?.StartActivity(intent); } else{ callback?.Invoke(null); } }); //_fileName = fileName; } /// /// 选择图片 /// 回调函数 /// 文件名 /// 宽高比的宽值 /// 宽高比的高值 /// 图片大小 分辨率高值,该值不能过高,会内存不足传递不了裁剪图片资源 300以内 public static void SelectPicture(Action callback, string fileName, int mRATIO_X = 1, int mRATIO_Y = 1, int OutputYSize = 200) { (Application.Activity as BaseActivity)?.SetImagePermission((obj) => { if (obj) { //_fileName = fileName; //_callback = callback; HDLCropImageActivity.MOnCropImageeCallback = new OnCropImageeCallback(callback); var intent = new Intent(Application.Activity, typeof(HDLCropImageActivity)); intent.PutExtra(HDLUtlisXM.CropTypeKey, TypePicture); intent.PutExtra(HDLUtlisXM.CropNameKey, fileName); intent.PutExtra(HDLUtlisXM.CropRatioXKey, mRATIO_X); intent.PutExtra(HDLUtlisXM.CropRatioYKey, mRATIO_Y); intent.PutExtra(HDLUtlisXM.CropOutputYKey, OutputYSize); //intent.PutExtra("IsZoom", isZoom); Application.Activity?.StartActivity(intent); }else{ callback?.Invoke(null); } }); } /// /// OnCropImageeCallback /// public class OnCropImageeCallback : Java.Lang.Object, IOnCropImageeCallback { Action mAction; public OnCropImageeCallback(Action action) { mAction = action; } public void OnSaveCallback(string p0) { mAction?.Invoke(p0); } } } }