Package com.aurelienpierre.sioul
Class WakeRinger
java.lang.Object
android.content.Context
android.content.ContextWrapper
android.app.Service
com.aurelienpierre.sioul.WakeRinger
- All Implemented Interfaces:
ComponentCallbacks,ComponentCallbacks2
The alarm at waking, ringing (WakeAlarms): a service in the foreground for
as long as it rings, its notification on the "Waking" channel with the
screen over the lock screen (WakeScreen), Stop and 10 min later. Sioul plays
the sound itself, the phone's alarm sound as an alarm (it comes through
Android's do-not-disturb, which lets alarms through unless set to total
silence), rising from very low to full over half a minute: a channel's
sound would be at one volume, and an insistent one stops as the shade
opens. It rings until Stop or 10 min later; never silent: another sound
when the alarm's does not play, beeps when none does, and the ring without
this service when Android refuses it. From Android 14 the service is of
the type alarms keep ringing with ("systemExempted", allowed to apps that
set exact alarms). A try ("Try the alarm") rings here the same way; its
Stop and 10 min later touch only the try: 10 min later rings it once more,
then it offers Stop alone. A waking that comes while a try rings takes it
over; a try that comes while a waking rings changes nothing.
-
Nested Class Summary
Nested classes/interfaces inherited from class android.content.Context
Context.BindServiceFlags -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final intAfter "10 min later": when it rings again, with Stop; a try's, its own.private static RingtoneRung without this service, Android having refused it: its sound.private final Runnableprivate ToneGeneratorprivate AudioFocusRequestprivate final Handlerprivate static PowerManager.WakeLockHeld from the alarm to the sound playing: the phone does not fall asleep between.private static boolean(package private) static final intThe ring's notification, by its number alone: the doses' are their keys and 1, the time running's 2.private MediaPlayerprivate static final doubleprivate final Runnableprivate static final longThe sound rises over half a minute, from 40 dB under full, evenly to the ear.private static WakeRingerThe ring going on in this process: Stop and 10 min later reach it here.private long(package private) static final intprivate static booleanWhat rings now: a try; a try's last ring (no "10 min later").Fields inherited from class android.app.Service
START_CONTINUATION_MASK, START_FLAG_REDELIVERY, START_FLAG_RETRY, START_NOT_STICKY, START_REDELIVER_INTENT, START_STICKY, START_STICKY_COMPATIBILITY, STOP_FOREGROUND_DETACH, STOP_FOREGROUND_LEGACY, STOP_FOREGROUND_REMOVEFields inherited from class android.content.Context
ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ADVANCED_PROTECTION_SERVICE, ALARM_SERVICE, APP_FUNCTION_SERVICE, APP_OPS_SERVICE, APP_SEARCH_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_ACTIVITY_STARTS, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_EXTERNAL_SERVICE_LONG, BIND_IMPORTANT, BIND_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_PACKAGE_ISOLATED_PROCESS, BIND_SHARED_ISOLATED_PROCESS, BIND_WAIVE_PRIORITY, BIOMETRIC_SERVICE, BLOB_STORE_SERVICE, BLUETOOTH_SERVICE, BUGREPORT_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_DIAGNOSTICS_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTACT_KEYS_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CREDENTIAL_SERVICE, CROSS_PROFILE_APPS_SERVICE, DEVICE_ID_DEFAULT, DEVICE_ID_INVALID, DEVICE_LOCK_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_HASH_SERVICE, DISPLAY_SERVICE, DOMAIN_VERIFICATION_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FILE_INTEGRITY_SERVICE, FINGERPRINT_SERVICE, GAME_SERVICE, GRAMMATICAL_INFLECTION_SERVICE, HARDWARE_PROPERTIES_SERVICE, HEALTHCONNECT_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, KEYSTORE_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCALE_SERVICE, LOCATION_SERVICE, MEDIA_COMMUNICATION_SERVICE, MEDIA_METRICS_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_QUALITY_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, OVERLAY_SERVICE, PEOPLE_SERVICE, PERFORMANCE_HINT_SERVICE, PERSISTENT_DATA_BLOCK_SERVICE, POWER_SERVICE, PRINT_SERVICE, PROFILING_SERVICE, RECEIVER_EXPORTED, RECEIVER_NOT_EXPORTED, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SATELLITE_SERVICE, SEARCH_SERVICE, SECURITY_STATE_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STATUS_BAR_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_IMS_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TETHERING_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_AD_SERVICE, TV_INPUT_SERVICE, TV_INTERACTIVE_APP_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_MANAGER_SERVICE, VIBRATOR_SERVICE, VIRTUAL_DEVICE_SERVICE, VPN_MANAGEMENT_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICEFields inherited from interface android.content.ComponentCallbacks2
TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_UI_HIDDEN -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static Notification.Actionprivate static voidAfter "10 min later": when it rings again, with Stop (a try's, its own line and Stop).private static AudioAttributesalarm()private voidbeep()No sound plays: beeps, as an alarm, at full; the phone kept awake for them until the end.private static voidbegin(boolean trial, boolean lastTry, boolean ringingAlready) What rings from now: a waking takes a try over; a try never takes a waking over.private static PendingIntent(package private) static String"07:00", as the phone writes times (12 or 24 hours).private voidend(boolean later) Stop, or 10 min later: silent, the notification and the screen gone.private static voidAfter the ring, whichever way it rang: 10 min later set, or nothing more until the next waking.private static floatgain(double t) The gain at `t` of the rise (0 to 1): even steps in decibels, as the ear hears them.private static void(package private) static booleanWhether "10 min later" is offered: always but on a try's last ring.private static NotificationThe ring's notification: the screen over the lock screen (full-screen, WakeScreen), Stop and 10 min later (not on a try's last ring); swiped away, it stops.voidintonStartCommand(Intent intent, int flags, int id) private voidplay()private static voidrelease()(package private) static voidThe alarm rings (WakeReceiver): this service, in the foreground; else the ring from here.private static voidAndroid refused this service: the notification and the alarm sound from here, as long as Android lets the process be.(package private) static booleanringing()Whether it rings now (the screen opened late shows nothing).private voidsilence()The sounds tried in turn: the phone's alarm sound (the settings' own address, which Android keeps readable before the first unlock), then the same by its file, the notifications' sound, the ringtone.(package private) static voidStop, or 10 min later (its buttons, its notification swiped away, the screen's buttons).(package private) static booleantrying()Whether what rings is a try.Methods inherited from class android.app.Service
attachBaseContext, dump, getApplication, getForegroundServiceType, onConfigurationChanged, onCreate, onLowMemory, onRebind, onStart, onTaskRemoved, onTimeout, onTimeout, onTrimMemory, onUnbind, startForeground, startForeground, stopForeground, stopForeground, stopSelf, stopSelf, stopSelfResultMethods inherited from class android.content.ContextWrapper
bindIsolatedService, bindService, bindService, bindService, bindService, bindServiceAsUser, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingOrSelfUriPermissions, checkCallingPermission, checkCallingUriPermission, checkCallingUriPermissions, checkContentUriPermissionFull, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, checkUriPermissions, clearWallpaper, createAttributionContext, createConfigurationContext, createContext, createContextForSplit, createDeviceContext, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, createWindowContext, createWindowContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getAttributionSource, getAttributionTag, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDeviceId, getDir, getDisplay, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getOpPackageName, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getParams, getResources, getSharedPreferences, getSystemService, getSystemServiceName, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, isUiContext, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerComponentCallbacks, registerDeviceIdChangeListener, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeSelfPermissionsOnKill, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startForegroundService, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterComponentCallbacks, unregisterDeviceIdChangeListener, unregisterReceiver, updateServiceGroupMethods inherited from class android.content.Context
bindIsolatedService, getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, revokeSelfPermissionOnKill, sendBroadcastWithMultiplePermissions
-
Field Details
-
NOTE
The ring's notification, by its number alone: the doses' are their keys and 1, the time running's 2.- See Also:
-
AGAIN_NOTE
After "10 min later": when it rings again, with Stop; a try's, its own.- See Also:
-
TRY_AGAIN_NOTE
- See Also:
-
RISE_MS
The sound rises over half a minute, from 40 dB under full, evenly to the ear.- See Also:
-
QUIET_DB
- See Also:
-
running
The ring going on in this process: Stop and 10 min later reach it here. -
bare
Rung without this service, Android having refused it: its sound. -
held
Held from the alarm to the sound playing: the phone does not fall asleep between. -
trying
What rings now: a try; a try's last ring (no "10 min later"). -
last
-
handler
-
player
-
beeps
-
focus
-
started
-
rise
-
beeping
-
-
Constructor Details
-
WakeRinger
public WakeRinger()
-
-
Method Details
-
ring
The alarm rings (WakeReceiver): this service, in the foreground; else the ring from here. `trial`: a try's; `lastTry`: a try's last ring. -
stop
Stop, or 10 min later (its buttons, its notification swiped away, the screen's buttons). What rings says whether it is a try; when nothing rings here (a "rings again" line's Stop, Sioul started again since), the button's own word, `trial`. -
trying
Whether what rings is a try. -
laterOffered
Whether "10 min later" is offered: always but on a try's last ring. -
begin
What rings from now: a waking takes a try over; a try never takes a waking over. -
ringing
Whether it rings now (the screen opened late shows nothing). -
onStartCommand
- Overrides:
onStartCommandin classService
-
onDestroy
-
onBind
-
end
Stop, or 10 min later: silent, the notification and the screen gone. -
ended
After the ring, whichever way it rang: 10 min later set, or nothing more until the next waking. A try's touch only the try: 10 min later rings it once more, as a try, its last time; after that, or at Stop, it is over. The next waking and its own "10 min later" stay as they are. -
alarm
-
sounds
The sounds tried in turn: the phone's alarm sound (the settings' own address, which Android keeps readable before the first unlock), then the same by its file, the notifications' sound, the ringtone. -
play
-
gain
The gain at `t` of the rise (0 to 1): even steps in decibels, as the ear hears them. -
beep
No sound plays: beeps, as an alarm, at full; the phone kept awake for them until the end. -
silence
-
ringBare
Android refused this service: the notification and the alarm sound from here, as long as Android lets the process be. -
hold
-
release
-
clock
"07:00", as the phone writes times (12 or 24 hours). -
note
The ring's notification: the screen over the lock screen (full-screen, WakeScreen), Stop and 10 min later (not on a try's last ring); swiped away, it stops. Shown on the lock screen whole: a time and two buttons. A try's buttons by codes of their own, saying a try's. -
again
After "10 min later": when it rings again, with Stop (a try's, its own line and Stop). Silent: the "Waking" channel has no sound of its own (WakeAlarms.channel(android.content.Context)). -
button
-
action
private static Notification.Action action(Context context, String what, int code, String word, boolean trial)
-