import { getNativeApp } from '../../application/helpers-common';
import { SDK_VERSION } from '../../utils/constants';
import { platformNames } from '../common';
import { Screen } from '../screen';
const MIN_TABLET_PIXELS = 600;
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 = getNativeApp();
            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