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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using System;
 
using ObjCRuntime;
using Foundation;
using UIKit;
 
namespace Shared.IOS.ESVideoPhoneSDK
{
    // The first step to creating a binding is to add your native library ("libNativeLibrary.a")
    // to the project by right-clicking (or Control-clicking) the folder containing this source
    // file and clicking "Add files..." and then simply select the native library (or libraries)
    // that you want to bind.
    //
    // When you do that, you'll notice that MonoDevelop generates a code-behind file for each
    // native library which will contain a [LinkWith] attribute. VisualStudio auto-detects the
    // architectures that the native library supports and fills in that information for you,
    // however, it cannot auto-detect any Frameworks or other system libraries that the
    // native library may depend on, so you'll need to fill in that information yourself.
    //
    // Once you've done that, you're ready to move on to binding the API...
    //
    //
    // Here is where you'd define your API definition for the native Objective-C library.
    //
    // For example, to bind the following Objective-C class:
    //
    //     @interface Widget : NSObject {
    //     }
    //
    // The C# binding would look like this:
    //
    //     [BaseType (typeof (NSObject))]
    //     interface Widget {
    //     }
    //
    // To bind Objective-C properties, such as:
    //
    //     @property (nonatomic, readwrite, assign) CGPoint center;
    //
    // You would add a property definition in the C# interface like so:
    //
    //     [Export ("center")]
    //     CGPoint Center { get; set; }
    //
    // To bind an Objective-C method, such as:
    //
    //     -(void) doSomething:(NSObject *)object atIndex:(NSInteger)index;
    //
    // You would add a method definition to the C# interface like so:
    //
    //     [Export ("doSomething:atIndex:")]
    //     void DoSomething (NSObject object, int index);
    //
    // Objective-C "constructors" such as:
    //
    //     -(id)initWithElmo:(ElmoMuppet *)elmo;
    //
    // Can be bound as:
    //
    //     [Export ("initWithElmo:")]
    //     IntPtr Constructor (ElmoMuppet elmo);
    //
    // For more information, see https://aka.ms/ios-binding
    //
 
    //***************************监控页面***********************
    // typedef void (^CollectButtonCallBack)(_Bool);
    delegate void CollectButtonCallBack(bool arg0);
 
    // @interface ESVideoMonitorViewController : UIViewController
    [BaseType(typeof(UIViewController))]
    interface ESVideoMonitorViewController
    {
        // @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
        [Export("mESVideoID", ArgumentSemantic.Strong)]
        string MESVideoID { get; set; }
 
        // @property (assign, nonatomic) int mESRoomID;
        [Export("mESRoomID")]
        int MESRoomID { get; set; }
 
        // @property (nonatomic, strong) NSString * _Nonnull roomName;
        [Export("roomName", ArgumentSemantic.Strong)]
        string RoomName { get; set; }
 
        // @property (nonatomic, strong) NSString * _Nonnull deviceName;
        [Export("deviceName", ArgumentSemantic.Strong)]
        string DeviceName { get; set; }
 
        // @property (assign, nonatomic) BOOL isCollect;
        [Export("isCollect")]
        bool IsCollect { get; set; }
 
        // @property (copy, nonatomic) CollectButtonCallBack _Nonnull collectButtonCallBack;
        [Export("collectButtonCallBack", ArgumentSemantic.Copy)]
        CollectButtonCallBack CollectButtonCallBack { get; set; }
    }
 
    //***************************被呼叫页面***********************
    //// typedef void (^CollectButtonCallBack)(_Bool);
    //delegate void CollectButtonCallBack(bool arg0);
 
    // @interface ESvideoVideoIntercomViewController : UIViewController
    [BaseType(typeof(UIViewController))]
    interface ESvideoVideoIntercomViewController
    {
        // @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
        [Export("mESVideoID", ArgumentSemantic.Strong)]
        string MESVideoID { get; set; }
 
        // @property (assign, nonatomic) int mESRoomID;
        [Export("mESRoomID")]
        int MESRoomID { get; set; }
 
        // @property (nonatomic, strong) NSString * _Nonnull roomName;
        [Export("roomName", ArgumentSemantic.Strong)]
        string RoomName { get; set; }
 
        // @property (nonatomic, strong) NSString * _Nonnull deviceName;
        [Export("deviceName", ArgumentSemantic.Strong)]
        string DeviceName { get; set; }
 
        // @property (assign, nonatomic) BOOL isCollect;
        [Export("isCollect")]
        bool IsCollect { get; set; }
 
        // @property (copy, nonatomic) CollectButtonCallBack _Nonnull collectButtonCallBack;
        [Export("collectButtonCallBack", ArgumentSemantic.Copy)]
        CollectButtonCallBack CollectButtonCallBack { get; set; }
    }
 
 
 
    // @interface ESVideo : NSObject
    [BaseType(typeof(NSObject))]
    interface ESVideo
    {
        //// @property (nonatomic, strong) int * _Nonnull es;
        //[Export("es", ArgumentSemantic.Strong)]
        //unsafe int* Es { get; set; }
 
        //// @property (copy, nonatomic) int snapImageCallback;
        //[Export("snapImageCallback", ArgumentSemantic.Copy)]
        //int SnapImageCallback { get; set; }
 
        // +(instancetype _Nonnull)shareInstance;
        [Static]
        [Export("shareInstance")]
        ESVideo ShareInstance();
 
        // +(void)haltSharedInstance;
        [Static]
        [Export("haltSharedInstance")]
        void HaltSharedInstance();
 
        // -(void)initSDK;
        [Export("initSDK")]
        void InitSDK();
    }
}