forked from NativeScript/NativeScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplatform.android.ts
More file actions
140 lines (116 loc) · 3.97 KB
/
Copy pathplatform.android.ts
File metadata and controls
140 lines (116 loc) · 3.97 KB
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
/* tslint:disable:class-name */
import definition = require("platform");
import utils = require("utils/utils");
import * as enumsModule from "ui/enums";
export module platformNames {
export var android = "Android";
export var ios = "iOS";
}
// This is a "static" class and it is used like a name-space.
// It is not meant to be initialized - thus it is not capitalized
export class device implements definition.device {
private static MIN_TABLET_PIXELS = 600;
private static _manufacturer: string;
private static _model: string;
private static _osVersion: string;
private static _sdkVersion: string;
private static _deviceType: string;
private static _uuid: string;
private static _language: string;
private static _region: string;
static get os(): string {
return platformNames.android;
}
static get manufacturer(): string {
if (!device._manufacturer) {
device._manufacturer = android.os.Build.MANUFACTURER;
}
return device._manufacturer;
}
static get osVersion(): string {
if (!device._osVersion) {
device._osVersion = android.os.Build.VERSION.RELEASE;
}
return device._osVersion;
}
static get model(): string {
if (!device._model) {
device._model = android.os.Build.MODEL;
}
return device._model;
}
static get sdkVersion(): string {
if (!device._sdkVersion) {
device._sdkVersion = android.os.Build.VERSION.SDK;
}
return device._sdkVersion;
}
static get deviceType(): string {
if (!device._deviceType) {
var dips = Math.min(screen.mainScreen.widthPixels, screen.mainScreen.heightPixels) / screen.mainScreen.scale;
var enums: typeof enumsModule = require("ui/enums");
// If the device has more than 600 dips it is considered to be a tablet.
if (dips >= device.MIN_TABLET_PIXELS) {
device._deviceType = enums.DeviceType.Tablet;
}
else {
device._deviceType = enums.DeviceType.Phone;
}
}
return device._deviceType;
}
static get uuid(): string {
if (!device._uuid) {
device._uuid = android.provider.Settings.Secure.getString(
utils.ad.getApplicationContext().getContentResolver(),
android.provider.Settings.Secure.ANDROID_ID
);
}
return device._uuid;
}
static get language(): string {
if (!device._language) {
device._language = java.util.Locale.getDefault().getLanguage().replace("_", "-");
}
return device._language;
}
static get region(): string {
if(!device._region) {
device._region = java.util.Locale.getDefault().getCountry();
}
return device._region;
}
}
var mainScreen: MainScreen;
// This is a "static" class and it is used like a namespace.
// It is not meant to be initialized - thus it is not capitalized
export class screen implements definition.screen {
static get mainScreen(): definition.ScreenMetrics {
if (!mainScreen) {
var metrics = utils.ad.getApplicationContext().getResources().getDisplayMetrics();
mainScreen = new MainScreen(metrics);
}
return mainScreen;
}
}
class MainScreen implements definition.ScreenMetrics {
private _metrics: android.util.DisplayMetrics;
constructor(metrics: android.util.DisplayMetrics) {
this._metrics = metrics;
}
get widthPixels(): number {
return this._metrics.widthPixels;
}
get heightPixels(): number {
return this._metrics.heightPixels;
}
get scale(): number {
return this._metrics.density;
}
get widthDIPs(): number {
return this._metrics.widthPixels / this._metrics.density;
}
get heightDIPs(): number {
return this._metrics.heightPixels / this._metrics.density;
}
}