/
Device.java
107 lines (87 loc) · 3.43 KB
/
Device.java
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
package com.capacitorjs.plugins.device;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.BatteryManager;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.provider.Settings;
import android.webkit.WebView;
public class Device {
private Context context;
Device(Context context) {
this.context = context;
}
public long getMemUsed() {
final Runtime runtime = Runtime.getRuntime();
final long usedMem = (runtime.totalMemory() - runtime.freeMemory());
return usedMem;
}
public long getDiskFree() {
StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
return statFs.getAvailableBlocksLong() * statFs.getBlockSizeLong();
}
public long getDiskTotal() {
StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath());
return statFs.getBlockCountLong() * statFs.getBlockSizeLong();
}
public String getPlatform() {
return "android";
}
public String getUuid() {
return Settings.Secure.getString(this.context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
}
public float getBatteryLevel() {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = this.context.registerReceiver(null, ifilter);
int level = -1;
int scale = -1;
if (batteryStatus != null) {
level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
}
return level / (float) scale;
}
public boolean isCharging() {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = this.context.registerReceiver(null, ifilter);
if (batteryStatus != null) {
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
return status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
}
return false;
}
public boolean isVirtual() {
return android.os.Build.FINGERPRINT.contains("generic") || android.os.Build.PRODUCT.contains("sdk");
}
public String getName() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
return Settings.Global.getString(this.context.getContentResolver(), Settings.Global.DEVICE_NAME);
}
return null;
}
public String getWebViewVersion() {
PackageInfo info = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
info = WebView.getCurrentWebViewPackage();
} else {
String webViewPackage = "com.google.android.webview";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
webViewPackage = "com.android.chrome";
}
PackageManager pm = this.context.getPackageManager();
try {
info = pm.getPackageInfo(webViewPackage, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
if (info != null) {
return info.versionName;
}
return android.os.Build.VERSION.RELEASE;
}
}