Системные настройки¶
Вы можете использовать API Settings в FIRERPA для настройки некоторых параметров Android или чтения системных настроек. Эта функция позволяет делать много вещей, например устанавливать яркость экрана, включать/выключать режим разработчика и даже громкость рингтона. Здесь мы приведём лишь несколько простых примеров.
Вызов API¶
Перед началом необходимо получить экземпляр Settings. Вы можете сделать это следующим образом.
settings = d.stub("Settings")
Установите режим яркости экрана вручную, чтобы яркость экрана устройства не менялась в зависимости от окружающего освещения; только после этого вы сможете задать фиксированную яркость.
settings.put_system("screen_brightness_mode", "0")
Получите текущую яркость экрана, затем уменьшите яркость экрана до 5.
settings.get_system("screen_brightness")
settings.put_system("screen_brightness", "5")
Узнайте, включён ли режим разработчика, затем отключите его.
settings.get_global("development_settings_enabled")
settings.put_global("development_settings_enabled", "0")
Узнайте, включена ли заставка, затем отключите её.
settings.get_secure("screensaver_enabled")
settings.put_secure("screensaver_enabled", "0")
В следующем примере будет установлен ручной режим яркости, яркость 64 и отключено автоматическое выключение экрана.
settings.put_system("screen_brightness", "64")
settings.put_system("screen_brightness_mode", "1")
settings.put_system("screen_off_timeout", "604800000")
Доступные параметры¶
Если вам непонятны строки вроде screen_brightness, этот раздел для вас. Доступные параметры этого API полностью зависят от того, какие параметры поддерживает система. Обратите внимание, что некоторые константы могут быть несовместимы в разных версиях Android, а некоторые производители добавляют собственные переменные. Вы можете найти соответствующие доступные параметры в официальной документации Android ниже и использовать их вместе с приведёнными выше API для настройки системы.
Совет
Ниже мы перечисляем доступные поля, определённые официально, однако в реальной системе таких полей гораздо больше. Вы можете использовать команду settings list [system|global|secure], чтобы увидеть, какие параметры фактически доступны в каждой категории.
Официальная документация¶
| Категория | Ссылка |
|---|---|
| Глобальные настройки (Global Settings) — общесистемные предпочтения, доступные для всех пользователей | https://developer.android.com/reference/android/provider/Settings.Global |
| Системные настройки (System Settings) — унаследованные системные предпочтения, в основном связанные с рингтонами, яркостью и другими конфигурациями устройства | https://developer.android.com/reference/android/provider/Settings.System |
| Защищённые настройки (Secure Settings) — системные настройки, связанные с конфиденциальностью и безопасностью | https://developer.android.com/reference/android/provider/Settings.Secure |
Global¶
| Имя поля (нижний регистр) | Тип | Описание | Добавлено в версии | Удалено из версии |
|---|---|---|---|---|
| adb_enabled | int | Включён ли ADB (Android Debug Bridge) при подключении по USB. | 17 | |
| airplane_mode_on | int | Включён ли режим полёта. | 17 | |
| airplane_mode_radios | string | Список радиоинтерфейсов, которые следует отключать при включении режима полёта, разделённый запятыми. | 17 | |
| always_finish_activities | int | Если значение не равно 0, ActivityManager немедленно завершает активности и процессы, когда они больше не нужны; при 0 используется обычный продлённый жизненный цикл. | 17 | |
| animator_duration_scale | float | Масштабный коэффициент для анимаций на основе Animator. | 17 | |
| apply_ramping_ringer | int | Применять ли нарастающую громкость к мелодии входящего вызова. | 29 | 33 |
| auto_time | int | Автоматически ли устанавливать системные часы устройства в UTC (например, с помощью сигналов сотовой сети, таких как NITZ, или других источников). | 17 | |
| auto_time_zone | int | Автоматически ли устанавливать системное свойство часового пояса устройства (например, с помощью сигналов сотовой сети, таких как MCC, NITZ, или других механизмов, например определения местоположения). | 17 | |
| bluetooth_on | int | Включён ли Bluetooth (0 = выключен, 1 = включён). | 17 | |
| boot_count | int | Количество загрузок устройства, подсчитываемое с API уровня 24. | 24 | |
| contact_metadata_sync_enabled | int | Включена ли синхронизация метаданных контактов (1 = включена, 0 = выключена). | 24 | |
| data_roaming | int | Включён ли роуминг данных (0 = нет, 1 = да). | 17 | |
| debug_app | string | Имя пакета приложения, которое нужно отлаживать. | 17 | |
| development_settings_enabled | int | Включил ли пользователь параметры разработчика (0 = нет, 1 = да). | 17 | |
| device_name | string | Имя устройства. | 25 | |
| device_provisioned | int | Завершена ли первоначальная настройка устройства (0 = нет, 1 = да). | 17 | |
| http_proxy | string | Имя хоста и порт глобального HTTP-прокси (разделённые двоеточием). | 17 | |
| install_non_market_apps | int | Разрешена ли установка приложений не из магазина. | 17 | 21 |
| mode_ringer | int | Режим звонка (используется внутри системы; изменение этого значения не изменит фактический режим звонка, см. AudioManager). | 17 | |
| network_preference | int | Предпочтение пользователя относительно используемой сети (изменяется только службой подключения). | 17 | |
| radio_bluetooth | string | Константа для указания Bluetooth-радио в списке радиоинтерфейсов для режима полёта или спутникового режима. | 17 | |
| radio_cell | string | Константа для указания сотового радиоинтерфейса в списке радиоинтерфейсов для режима полёта. | 17 | |
| radio_nfc | string | Константа для указания NFC-радио в списке радиоинтерфейсов для режима полёта или спутникового режима. | 17 | |
| radio_wifi | string | Константа для указания Wi-Fi-радио в списке радиоинтерфейсов для режима полёта или спутникового режима. | 17 | |
| secure_frp_mode | int | Указывает, находится ли устройство в ограниченном безопасном режиме FRP (защита от сброса до заводских настроек). | 34 | |
| show_processes | int | Управляет отображением индикатора использования ЦП процессами. | 17 | 25 |
| stay_on_while_plugged_in | int | Оставаться ли устройству включённым при подключении к источнику питания (комбинируемые значения: AC, USB, беспроводная зарядка, док-станция). | 17 | |
| transition_animation_scale | float | Масштабный коэффициент для анимаций переходов между активностями. | 17 | |
| usb_mass_storage_enabled | int | Включён ли режим USB-накопителя. | 17 | |
| use_google_mail | int | Если этот параметр установлен (любое значение), все упоминания Gmail на устройстве должны быть заменены на Google Mail. | 17 | |
| wait_for_debugger | int | Если значение равно 1, при запуске DEBUG_APP выполнение пользовательского кода откладывается до подключения отладчика; при 0 запуск происходит обычным образом. | 17 | |
| wifi_device_owner_configs_lockdown | int | Управляет блокировкой Wi-Fi-конфигураций, созданных приложением-владельцем устройства (только оно может их редактировать или удалять). | 23 | |
| wifi_max_dhcp_retry_count | int | Максимальное количество повторных попыток подключения к точке доступа после неудачного получения IP-адреса по DHCP (N означает общее количество попыток N+1). | 17 | |
| wifi_mobile_data_transition_wakelock_timeout_ms | int | Максимальное время в миллисекундах удержания wakelock после отключения от Wi-Fi в ожидании установления мобильного соединения. | 17 | |
| wifi_networks_available_notification_on | int | Уведомлять ли пользователя при обнаружении доступных открытых сетей. | 17 | 26 |
| wifi_networks_available_repeat_delay | int | Задержка в секундах перед повторным показом уведомления о доступных Wi-Fi-сетях. | 17 | 30 |
| wifi_num_open_networks_kept | int | Когда количество открытых сетей превышает это значение, лишние сети удаляются по принципу наименее недавно использованных. | 17 | 30 |
| wifi_on | int | Должен ли быть включён Wi-Fi (изменяется только службой Wi-Fi). | 17 | |
| wifi_sleep_policy | int | Политика, определяющая, когда Wi-Fi переходит в спящий режим. | 17 | 30 |
| wifi_sleep_policy_default | int | Значение для использования политики сна Wi-Fi по умолчанию (в зависимости от настройки STAY_ON_WHILE_PLUGGED_IN). | 17 | 30 |
| wifi_sleep_policy_never | int | Значение, при котором Wi-Fi никогда не переходит в спящий режим. | 17 | 30 |
| wifi_sleep_policy_never_while_plugged | int | Значение, при котором при питании от батареи используется политика по умолчанию, а при подключении к питанию Wi-Fi никогда не спит. | 17 | 30 |
| wifi_watchdog_on | int | Включён ли сторожевой таймер Wi-Fi. | 17 | |
| window_animation_scale | float | Масштабный коэффициент для обычных анимаций окон. | 17 |
System¶
| Имя поля (нижний регистр) | Тип | Описание | Добавлено в версии | Удалено из версии |
|---|---|---|---|---|
| accelerometer_rotation | int | Управляет автоматическим поворотом экрана с помощью акселерометра (0 = выключено, 1 = включено). | 3 | |
| alarm_alert | string | URI системного звука будильника по умолчанию. | 5 | |
| bluetooth_discoverability | int | Настройка обнаруживаемости Bluetooth (2 = обнаруживаемый и подключаемый, 1 = подключаемый, но не обнаруживаемый, 0 = ни то, ни другое). | 1 | |
| bluetooth_discoverability_timeout | int | Время ожидания в секундах для состояния обнаруживаемости Bluetooth. | 1 | |
| date_format | string | Формат даты (устарел, больше не используется). | 1 | 31 |
| dtmf_tone | int | Воспроизводить ли тональные сигналы DTMF при наборе номера (1 = да, 0 = нет). | 1 | |
| dtmf_tone_type | int | Тип тонального сигнала DTMF при наборе в CDMA (0 = обычный, 1 = длинный). | 23 | |
| end_button_behavior | int | Поведение кнопки завершения вызова, когда вызов не выполняется (0 = ничего не делать, 1 = перейти на главный экран, 2 = перейти в режим сна и заблокировать экран, 3 = перейти на главный экран или в режим сна). | 1 | |
| font_scale | float | Масштаб шрифта. | 1 | |
| haptic_feedback_enabled | int | Включена ли тактильная отдача (вибрация при нажатии, 1 = включена, 0 = выключена). | 3 | 33 |
| mode_ringer_streams_affected | int | Битовая маска аудиопотоков, на которые влияет режим звонка. | 1 | |
| mute_streams_affected | int | Битовая маска аудиопотоков, на которые влияет отключение звука. | 1 | |
| notification_sound | string | URI системного звука уведомлений по умолчанию. | 1 | |
| ringtone | string | URI системной мелодии входящего вызова по умолчанию. | 1 | |
| screen_brightness | int | Значение яркости экрана (1–255). | 1 | |
| screen_brightness_mode | int | Режим яркости (0 = ручной, 1 = автоматический). | 8 | |
| screen_off_timeout | int | Время до выключения экрана при бездействии в миллисекундах. | 1 | |
| setup_wizard_has_run | int | Был ли запущен мастер начальной настройки (ненулевое значение означает, что был запущен). | 1 | |
| show_gtalk_service_status | int | Показывать ли статус службы GTalk. | 1 | |
| sound_effects_enabled | int | Включены ли звуковые эффекты (звуки нажатий и т. п., 1 = включены). | 1 | |
| text_auto_caps | int | Включает ли текстовый редактор автоматическую установку заглавных букв (1 = вкл.). | 1 | |
| text_auto_punctuate | int | Включает ли текстовый редактор автоматическую пунктуацию (1 = вкл.). | 1 | |
| text_auto_replace | int | Включает ли текстовый редактор автоматическую замену (1 = вкл.). | 1 | |
| text_show_password | int | Показывает ли текстовый редактор символы пароля (1 = показывать). | 1 | |
| time_12_24 | string | Формат отображения времени («12» или «24»; если не задан, используется региональное значение по умолчанию). | 1 | |
| user_rotation | int | Угол поворота экрана по умолчанию (константы поворота Surface). | 11 | |
| vibrate_on | int | Включена ли вибрация (используется внутри системы; фактическая вибрация управляется AudioManager). | 1 | |
| vibrate_when_ringing | int | Вибрировать ли при входящем вызове (1 = вибрировать, 0 = не вибрировать). | 23 | 33 |
Secure¶
| Имя поля (нижний регистр) | Тип | Описание | Добавлено в версии | Удалено из версии |
|---|---|---|---|---|
| accessibility_display_inversion_enabled | int | Включена ли инверсия цветов дисплея. | 21 | |
| accessibility_enabled | int | Включены ли специальные возможности. | 4 | |
| accessibility_speak_password | int | Проговаривать ли пароль в режиме специальных возможностей (устарело; управляется отдельными службами специальных возможностей). | 15 | 26 |
| allowed_geolocation_origins | string | Список источников, которым браузер по умолчанию разрешает доступ к геолокации (разделён пробелами). | 8 | |
| allow_mock_location | int | Разрешено ли фиктивное местоположение (устарело, больше не используется). | 3 | 23 |
| android_id | string | Уникальный Android ID устройства (64-битная шестнадцатеричная строка; в Android 8.0+ область действия изменена). | 3 | |
| default_input_method | string | Имя компонента текущего метода ввода по умолчанию (ComponentName в виде уплощённой строки). | 3 | |
| enabled_accessibility_services | string | Список включённых служб специальных возможностей (в строковом формате). | 4 | |
| enabled_input_methods | string | Список включённых методов ввода (разделён двоеточиями; формат включает подтипы). | 3 | |
| input_method_selector_visibility | int | Запись о видимости переключателя методов ввода. | 11 | |
| install_non_market_apps | int | Разрешена ли установка приложений не из магазина (1 = разрешена, 0 = запрещена; начиная с API 26 следует использовать PackageManager.canRequestPackageInstalls()). | 3 | 26 |
| location_mode | int | Текущий режим местоположения (целочисленное значение; начиная с API 28 рекомендуется использовать LocationManager.isLocationEnabled()). | 19 | 28 |
| lock_pattern_enabled | int | Включён ли графический ключ блокировки экрана (0 = нет, 1 = да; начиная с API 23 рекомендуется использовать KeyguardManager). | 8 | 23 |
| lock_pattern_visible | int | Отображать ли линии графического ключа блокировки экрана (0 = нет, 1 = да; при чтении на API 23+ может выбрасываться SecurityException). | 8 | 23 |
| parental_control_enabled | int | Включён ли родительский контроль (больше не поддерживается). | 3 | |
| parental_control_last_update | string | Время последнего обновления родительского контроля (больше не поддерживается). | 3 | |
| parental_control_redirect_url | string | URL перенаправления родительского контроля (больше не поддерживается). | 3 | |
| rtt_calling_mode | int | Включён ли режим вызовов RTT (0 = выключен, 1 = включён). | 28 | |
| secure_frp_mode | int | Находится ли устройство в ограниченном режиме FRP (защита от сброса к заводским настройкам) (0 = нет, 1 = да). | 30 | 34 |
| selected_input_method_subtype | string | Идентификатор выбранного подтипа метода ввода. | 11 | |
| settings_classname | string | Имя класса приложения настроек. | 3 | |
| skip_first_use_hints | int | Пропускать ли подсказки при первом использовании (0 = показывать подсказки, 1 = пропускать). | 21 | |
| touch_exploration_enabled | int | Включено ли исследование касанием (функция специальных возможностей). | 14 | |
| tts_default_pitch | int | Высота тона TTS по умолчанию (100 = 1x). | 4 | |
| tts_default_rate | int | Скорость речи TTS по умолчанию (100 = 1x). | 4 | |
| tts_default_synth | string | Движок TTS по умолчанию (имя пакета). | 4 | |
| tts_enabled_plugins | string | Список включённых плагинов TTS (разделён пробелами). | 8 |