/
RemoteActivity.cs
92 lines (77 loc) · 2.45 KB
/
RemoteActivity.cs
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
using System;
using System.Threading.Tasks;
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Preferences;
using Android.Views;
using Android.Widget;
using PTZRemoteController.Core;
namespace PTZRemoteControllerAndroid
{
[Activity (Label = "PTZ Remote", MainLauncher = true, ConfigurationChanges = ConfigChanges.Orientation)]
public class RemoteActivity : Activity
{
private PTZRemote _remote;
protected override async void OnCreate (Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
PreferenceManager.SetDefaultValues(this, Resource.Xml.Preferences, false);
_remote = new PTZRemote();
AttachHandlers();
await ConnectToRelay();
}
private async Task ConnectToRelay()
{
bool connected = false;
var waitIndicator = new ProgressDialog(this) { Indeterminate = true };
waitIndicator.SetCancelable(false);
waitIndicator.SetMessage("Connecting...");
waitIndicator.Show();
try
{
var prefs = PreferenceManager.GetDefaultSharedPreferences(this);
connected = await _remote.Connect(prefs.GetString("RelayServerUrl", ""),
prefs.GetString("RemoteGroup", ""),
prefs.GetString("HubName", ""));
}
catch (Exception)
{
}
finally
{
waitIndicator.Hide();
}
Toast.MakeText(this, connected ? "Connected!" : "Unable to connect", ToastLength.Short).Show();
}
private void AttachHandlers()
{
FindViewById<Button>(Resource.Id.MoveUp).Click += delegate { _remote.MoveUp(); };
FindViewById<Button>(Resource.Id.MoveDown).Click += delegate { _remote.MoveDown(); };
FindViewById<Button>(Resource.Id.MoveLeft).Click += delegate { _remote.MoveLeft(); };
FindViewById<Button>(Resource.Id.MoveRight).Click += delegate { _remote.MoveRight(); };
FindViewById<Button>(Resource.Id.ZoomIn).Click += delegate { _remote.ZoomIn(); };
FindViewById<Button>(Resource.Id.ZoomOut).Click += delegate { _remote.ZoomOut(); };
}
public override bool OnCreateOptionsMenu (IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.RemoteMenu, menu);
return true;
}
public override bool OnOptionsItemSelected (IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.Reconnect:
ConnectToRelay();
return true;
case Resource.Id.Settings:
StartActivity(typeof(SettingsActivity));
return true;
default:
return base.OnOptionsItemSelected(item);
}
}
}
}