using System;
|
using Android.Content;
|
|
using Com.Hdl.Widget;
|
|
namespace Shared
|
{
|
|
/// <summary>
|
/// 拍照或者选择图片
|
/// </summary>
|
public static class CropImage
|
{
|
///// <summary>
|
///// 拍照或者读取图片完成时调用的动作,string==null表示用户取消了拍照或者取消选择图片,string!=null,表示图片的路径
|
///// </summary>
|
//internal static Action<string> _callback;
|
///// <summary>
|
///// 文件名
|
///// </summary>
|
//internal static string _fileName;
|
///// <summary>
|
/// 选择类型是拍照
|
/// </summary>
|
internal static readonly int TypeCamera = 101;
|
/// <summary>
|
/// 选择图片
|
/// </summary>
|
internal static readonly int TypePicture = 102;
|
|
|
|
|
/// <summary>
|
/// 拍照
|
/// </summary>
|
/// <param name="callback">回调函数</param>
|
/// <param name="fileName">文件名</param>
|
/// <param name="mRATIO_X">宽高比的宽值</param>
|
/// <param name="mRATIO_Y">宽高比的高值</param>
|
/// <param name="OutputYSize">图片大小 分辨率高值,该值不能过高,会内存不足传递不了裁剪图片资源 300以内<</param>
|
public static void TakePicture(Action<string> 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;
|
|
}
|
|
/// <summary>
|
/// 选择图片
|
/// <param name="callback">回调函数</param>
|
/// <param name="fileName">文件名</param>
|
/// <param name="mRATIO_X">宽高比的宽值</param>
|
/// <param name="mRATIO_Y">宽高比的高值</param>
|
/// <param name="OutputYSize">图片大小 分辨率高值,该值不能过高,会内存不足传递不了裁剪图片资源 300以内</param>
|
public static void SelectPicture(Action<string> 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);
|
}
|
});
|
}
|
|
|
/// <summary>
|
/// OnCropImageeCallback
|
/// </summary>
|
public class OnCropImageeCallback : Java.Lang.Object, IOnCropImageeCallback
|
{
|
|
Action<string> mAction;
|
public OnCropImageeCallback(Action<string> action)
|
{
|
mAction = action;
|
}
|
|
public void OnSaveCallback(string p0)
|
{
|
mAction?.Invoke(p0);
|
}
|
}
|
|
|
|
}
|
}
|