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