UNPKG

@nativescript/core

Version:

A JavaScript library providing an easy to use api for interacting with iOS and Android platform APIs.

121 lines 4.06 kB
/* tslint:disable:class-name */ import { Application } from '../application'; import { SDK_VERSION } from '../utils/constants'; import { platformNames } from './common'; const MIN_TABLET_PIXELS = 600; export * from './common'; class MainScreen { reinitMetrics() { if (!this._metrics) { this._metrics = new android.util.DisplayMetrics(); } this.initMetrics(); } initMetrics() { const nativeApp = Application.android.getNativeApplication(); nativeApp.getSystemService(android.content.Context.WINDOW_SERVICE).getDefaultDisplay().getRealMetrics(this._metrics); } get metrics() { if (!this._metrics) { // NOTE: This will be memory leak but we MainScreen is singleton Application.on('cssChanged', this.reinitMetrics, this); Application.on(Application.orientationChangedEvent, this.reinitMetrics, this); this._metrics = new android.util.DisplayMetrics(); this.initMetrics(); } return this._metrics; } get widthPixels() { return this.metrics.widthPixels; } get heightPixels() { return this.metrics.heightPixels; } get scale() { return this.metrics.density; } get widthDIPs() { return this.metrics.widthPixels / this.metrics.density; } get heightDIPs() { return this.metrics.heightPixels / this.metrics.density; } } export class Screen { } Screen.mainScreen = new MainScreen(); // This retains compatibility with NS6 export const screen = Screen; class DeviceRef { get manufacturer() { if (!this._manufacturer) { this._manufacturer = android.os.Build.MANUFACTURER; } return this._manufacturer; } get os() { return platformNames.android; } get osVersion() { if (!this._osVersion) { this._osVersion = android.os.Build.VERSION.RELEASE; } return this._osVersion; } get model() { if (!this._model) { this._model = android.os.Build.MODEL; } return this._model; } get sdkVersion() { if (!this._sdkVersion) { this._sdkVersion = android.os.Build.VERSION.SDK; } return this._sdkVersion; } get deviceType() { if (!this._deviceType) { const dips = Math.min(Screen.mainScreen.widthPixels, Screen.mainScreen.heightPixels) / Screen.mainScreen.scale; // If the device has more than 600 dips it is considered to be a tablet. if (dips >= MIN_TABLET_PIXELS) { this._deviceType = 'Tablet'; } else { this._deviceType = 'Phone'; } } return this._deviceType; } get uuid() { if (!this._uuid) { const nativeApp = Application.android.getNativeApplication(); this._uuid = android.provider.Settings.Secure.getString(nativeApp.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); } return this._uuid; } get language() { let defaultNativeLocale; if (SDK_VERSION >= 24) { defaultNativeLocale = android.content.res.Resources.getSystem().getConfiguration().getLocales().get(0); } else { defaultNativeLocale = android.content.res.Resources.getSystem().getConfiguration().locale; } return defaultNativeLocale.getLanguage().replace('_', '-'); } get region() { let defaultNativeLocale; if (SDK_VERSION >= 24) { defaultNativeLocale = android.content.res.Resources.getSystem().getConfiguration().getLocales().get(0); } else { defaultNativeLocale = android.content.res.Resources.getSystem().getConfiguration().locale; } return defaultNativeLocale.getCountry(); } } export const Device = new DeviceRef(); // This retains compatibility with NS6 export const device = Device; //# sourceMappingURL=index.android.js.map