summaryrefslogtreecommitdiff
path: root/csharp/test/xamarin/controller.Android/MainActivity.cs
blob: 2762c668da864b30fbfe292a6ca3e5d48b477c4b (plain)
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
// **********************************************************************
//
// Copyright (c) 2003-present ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

using System;
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Util;

namespace controller.Droid
{
    public class AndroidLogger : Ice.Logger
    {
        private const string TAG = "ControllerApp";
        private string _prefix;

        public AndroidLogger(string prefix)
        {
            _prefix = prefix;
        }

        public void print(string message)
        {
            Log.Debug(TAG, message);
        }

        public void trace(String category, String message)
        {
            Log.Verbose(category, message);
        }

        public void warning(String message)
        {
            Log.Warn(TAG, message);
        }

        public void error(String message)
        {
            Log.Error(TAG, message);
        }

        public String getPrefix()
        {
            return _prefix;
        }

        public Ice.Logger cloneWithPrefix(string s)
        {
            return new AndroidLogger(s);
        }
    }

    [Activity(Label = "controller",
              Name = "controller.MainActivity",
              Icon = "@mipmap/icon",
              Theme = "@style/MainTheme",
              MainLauncher = true,
              ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity,
                                Test.PlatformAdapter
    {
        protected override void OnCreate(Bundle bundle)
        {
            Ice.Util.setProcessLogger(new AndroidLogger(""));
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App(this));
        }

        public bool isEmulator()
        {
            return Build.Fingerprint.Contains("vbox") ||
                   Build.Fingerprint.Contains("generic") ||
                   Build.Fingerprint.Contains("unknown") ||
                   Build.Model.Contains("google_sdk") ||
                   Build.Model.Contains("Emulator") ||
                   Build.Model.Contains("Android SDK built for x86") ||
                   Build.Manufacturer.Contains("Genymotion") ||
                   (Build.Brand.StartsWith("generic") && Build.Device.StartsWith("generic")) ||
                   Build.Product.Equals("google_sdk");
        }

        public string processControllerIdentity()
        {
            return "Android/ProcessController";
        }

        public string processControllerRegistryHost()
        {
            return isEmulator() ? "10.0.2.2" : ""; // With an empty host, the controller will use IceDiscovery.
        }
    }
}