gxc
2020-02-28 66a9965c44ecc32a6696abca876ab9d1cd091584
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
using System;
using Android.Content;
 
using Com.Hdl.Widget.Cropimage;
using Com.Hdl.Widget;
using static Com.Hdl.Widget.Cropimage.HDLCropImageActivity;
 
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);
            }
        }
 
 
 
    }
}