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