Skip to content

Commit 4426a78

Browse files
committed
ServiceExtensions: Created
Signed-off-by: Fung <fython@163.com>
1 parent 79833ee commit 4426a78

File tree

2 files changed

+223
-1
lines changed

2 files changed

+223
-1
lines changed

kotlinyan-common/src/main/kotlin/moe/feng/kotlinyan/common/ActivityExtensions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import android.widget.AdapterView
1818
import android.widget.Button
1919

2020
@SuppressLint("NewApi")
21-
interface ActivityExtensions {
21+
interface ActivityExtensions: ServiceExtensions {
2222

2323
/**
2424
* If function is supported, call it safely.
Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
package moe.feng.kotlinyan.common
2+
3+
import android.accounts.AccountManager
4+
import android.app.*
5+
import android.app.admin.DevicePolicyManager
6+
import android.app.job.JobScheduler
7+
import android.app.usage.NetworkStatsManager
8+
import android.app.usage.UsageStatsManager
9+
import android.appwidget.AppWidgetManager
10+
import android.bluetooth.BluetoothManager
11+
import android.content.ClipboardManager
12+
import android.content.Context
13+
import android.content.RestrictionsManager
14+
import android.content.pm.LauncherApps
15+
import android.content.pm.ShortcutManager
16+
import android.hardware.ConsumerIrManager
17+
import android.hardware.SensorManager
18+
import android.hardware.camera2.CameraManager
19+
import android.hardware.display.DisplayManager
20+
import android.hardware.fingerprint.FingerprintManager
21+
import android.hardware.input.InputManager
22+
import android.hardware.usb.UsbManager
23+
import android.location.LocationManager
24+
import android.media.AudioManager
25+
import android.media.MediaRouter
26+
import android.media.midi.MidiManager
27+
import android.media.projection.MediaProjectionManager
28+
import android.media.session.MediaSessionManager
29+
import android.media.tv.TvInputManager
30+
import android.net.ConnectivityManager
31+
import android.net.nsd.NsdManager
32+
import android.net.wifi.WifiManager
33+
import android.net.wifi.p2p.WifiP2pManager
34+
import android.nfc.NfcManager
35+
import android.os.*
36+
import android.os.storage.StorageManager
37+
import android.print.PrintManager
38+
import android.telecom.TelecomManager
39+
import android.telephony.CarrierConfigManager
40+
import android.telephony.SubscriptionManager
41+
import android.telephony.TelephonyManager
42+
import android.util.DisplayMetrics
43+
import android.view.LayoutInflater
44+
import android.view.WindowManager
45+
import android.view.accessibility.AccessibilityManager
46+
import android.view.accessibility.CaptioningManager
47+
import android.view.inputmethod.InputMethodManager
48+
import android.view.textservice.TextServicesManager
49+
50+
interface ServiceExtensions {
51+
52+
val Context.displayManager: DisplayManager get() = systemServices[Context.DISPLAY_SERVICE]
53+
54+
val Context.powerManager: PowerManager get() = systemServices[Context.POWER_SERVICE]
55+
56+
val Context.windowManager: WindowManager get() = systemServices[Context.WINDOW_SERVICE]
57+
58+
val Context.layoutInflater: LayoutInflater get() = systemServices[Context.LAYOUT_INFLATER_SERVICE]
59+
60+
val Context.accountManager: AccountManager get() = systemServices[Context.ACCOUNT_SERVICE]
61+
62+
val Context.activityManager: ActivityManager get() = systemServices[Context.ACTIVITY_SERVICE]
63+
64+
val Context.alarmManager: AlarmManager get() = systemServices[Context.ALARM_SERVICE]
65+
66+
val Context.notificationManager: NotificationManager get() = systemServices[Context.NOTIFICATION_SERVICE]
67+
68+
val Context.accessibilityManager: AccessibilityManager get() = systemServices[Context.ACCESSIBILITY_SERVICE]
69+
70+
val Context.captioningManager: CaptioningManager get() = systemServices[Context.CAPTIONING_SERVICE]
71+
72+
val Context.keyguardManager: KeyguardManager get() = systemServices[Context.KEYGUARD_SERVICE]
73+
74+
val Context.locationManager: LocationManager get() = systemServices[Context.LOCATION_SERVICE]
75+
76+
val Context.searchManager: SearchManager get() = systemServices[Context.SEARCH_SERVICE]
77+
78+
val Context.sensorManager: SensorManager get() = systemServices[Context.SENSOR_SERVICE]
79+
80+
val Context.storageManager: StorageManager get() = systemServices[Context.STORAGE_SERVICE]
81+
82+
val Context.wallpaperManager: WallpaperManager get() = systemServices[Context.WALLPAPER_SERVICE]
83+
84+
val Context.vibratorManager: Vibrator get() = systemServices[Context.VIBRATOR_SERVICE]
85+
86+
val Context.connectivityManager: ConnectivityManager get() = systemServices[Context.CONNECTIVITY_SERVICE]
87+
88+
val Context.networkStatsManager: NetworkStatsManager get() = systemServices[Context.NETWORK_STATS_SERVICE]
89+
90+
val Context.wifiManager: WifiManager get() = systemServices[Context.WIFI_SERVICE]
91+
92+
val Context.wifiP2pManager: WifiP2pManager get() = systemServices[Context.WIFI_P2P_SERVICE]
93+
94+
val Context.nsdManager: NsdManager get() = systemServices[Context.NSD_SERVICE]
95+
96+
val Context.audioManager: AudioManager get() = systemServices[Context.AUDIO_SERVICE]
97+
98+
val Context.fingerprintManager: FingerprintManager get() = systemServices[Context.FINGERPRINT_SERVICE]
99+
100+
val Context.mediaRouter: MediaRouter get() = systemServices[Context.MEDIA_ROUTER_SERVICE]
101+
102+
val Context.telephonyManager: TelephonyManager get() = systemServices[Context.TELEPHONY_SERVICE]
103+
104+
val Context.telephonySubscriptionManager: SubscriptionManager get() = systemServices[Context.TELEPHONY_SUBSCRIPTION_SERVICE]
105+
106+
val Context.carrierConfigManager: CarrierConfigManager get() = systemServices[Context.CARRIER_CONFIG_SERVICE]
107+
108+
val Context.telecomManager: TelecomManager get() = systemServices[Context.TELECOM_SERVICE]
109+
110+
val Context.clipboardManager: ClipboardManager get() = systemServices[Context.CLIPBOARD_SERVICE]
111+
112+
val Context.inputMethodManager: InputMethodManager get() = systemServices[Context.INPUT_METHOD_SERVICE]
113+
114+
val Context.textServicesManager: TextServicesManager get() = systemServices[Context.TEXT_SERVICES_MANAGER_SERVICE]
115+
116+
val Context.appWidgetManager: AppWidgetManager get() = systemServices[Context.APPWIDGET_SERVICE]
117+
118+
val Context.dropBoxManager: DropBoxManager get() = systemServices[Context.DROPBOX_SERVICE]
119+
120+
val Context.devicePolicyManager: DevicePolicyManager get() = systemServices[Context.DEVICE_POLICY_SERVICE]
121+
122+
val Context.uiModeManager: UiModeManager get() = systemServices[Context.UI_MODE_SERVICE]
123+
124+
val Context.downloadManager: DownloadManager get() = systemServices[Context.DOWNLOAD_SERVICE]
125+
126+
val Context.nfcManager: NfcManager get() = systemServices[Context.NFC_SERVICE]
127+
128+
val Context.bluetoothManager: BluetoothManager get() = systemServices[Context.BLUETOOTH_SERVICE]
129+
130+
val Context.usbManager: UsbManager get() = systemServices[Context.USB_SERVICE]
131+
132+
val Context.launcherApps: LauncherApps get() = systemServices[Context.LAUNCHER_APPS_SERVICE]
133+
134+
val Context.inputManager: InputManager get() = systemServices[Context.INPUT_SERVICE]
135+
136+
val Context.userManager: UserManager get() = systemServices[Context.USER_SERVICE]
137+
138+
val Context.restrictionsManager: RestrictionsManager get() = systemServices[Context.RESTRICTIONS_SERVICE]
139+
140+
val Context.appOpsManager: AppOpsManager get() = systemServices[Context.APP_OPS_SERVICE]
141+
142+
val Context.cameraManager: CameraManager get() = systemServices[Context.CAMERA_SERVICE]
143+
144+
val Context.printManager: PrintManager get() = systemServices[Context.PRINT_SERVICE]
145+
146+
val Context.consumerIrManager: ConsumerIrManager get() = systemServices[Context.CONSUMER_IR_SERVICE]
147+
148+
val Context.tvInputManager: TvInputManager get() = systemServices[Context.TV_INPUT_SERVICE]
149+
150+
val Context.usageStatsManager: UsageStatsManager get() = systemServices[Context.USAGE_STATS_SERVICE]
151+
152+
val Context.mediaSessionManager: MediaSessionManager get() = systemServices[Context.MEDIA_SESSION_SERVICE]
153+
154+
val Context.batteryManager: BatteryManager get() = systemServices[Context.BATTERY_SERVICE]
155+
156+
val Context.jobScheduler: JobScheduler get() = systemServices[Context.JOB_SCHEDULER_SERVICE]
157+
158+
val Context.mediaProjectionManager: MediaProjectionManager get() = systemServices[Context.MEDIA_PROJECTION_SERVICE]
159+
160+
val Context.midiManager: MidiManager get() = systemServices[Context.MIDI_SERVICE]
161+
162+
val Context.hardwarePropertiesManager: HardwarePropertiesManager get() = systemServices[Context.HARDWARE_PROPERTIES_SERVICE]
163+
164+
val Context.shortcutManager: ShortcutManager get() = systemServices[Context.SHORTCUT_SERVICE]
165+
166+
val Context.systemServices: Services get() = Services(this)
167+
168+
val WindowManager.screenHeight: Int
169+
get() = DisplayMetrics().apply { defaultDisplay.getRealMetrics(this) }.heightPixels
170+
171+
val WindowManager.screenWidth: Int
172+
get() = DisplayMetrics().apply { defaultDisplay.getRealMetrics(this) }.widthPixels
173+
174+
val WindowManager.trueScreenHeight: Int
175+
get() {
176+
var dpi = 0
177+
val display = defaultDisplay
178+
val dm = DisplayMetrics()
179+
if (Build.VERSION.SDK_INT >= 17) {
180+
display.getRealMetrics(dm)
181+
dpi = dm.heightPixels
182+
} else {
183+
try {
184+
val c = Class.forName("android.view.Display")
185+
val method = c.getMethod("getRealMetrics", DisplayMetrics::class.java)
186+
method.invoke(display, dm)
187+
dpi = dm.heightPixels
188+
} catch (e: Exception) {
189+
e.printStackTrace()
190+
}
191+
}
192+
return dpi
193+
}
194+
195+
val WindowManager.trueScreenWidth: Int
196+
get() {
197+
var dpi = 0
198+
val display = defaultDisplay
199+
val dm = DisplayMetrics()
200+
if (Build.VERSION.SDK_INT >= 17) {
201+
display.getRealMetrics(dm)
202+
dpi = dm.widthPixels
203+
} else {
204+
try {
205+
val c = Class.forName("android.view.Display")
206+
val method = c.getMethod("getRealMetrics", DisplayMetrics::class.java)
207+
method.invoke(display, dm)
208+
dpi = dm.widthPixels
209+
} catch (e: Exception) {
210+
e.printStackTrace()
211+
}
212+
}
213+
return dpi
214+
}
215+
216+
class Services(private val context: Context) {
217+
218+
operator fun <T> get(serviceName: String): T = context.getSystemService(serviceName) as T
219+
220+
}
221+
222+
}

0 commit comments

Comments
 (0)