- Советы
- Cleartext HTTP traffic not permitted (https)
- Запретить делать скриншот экрана приложения
- Аналог html-кода
- Где находятся исходники системного калькулятора?
- Имитация тяжёлых задач
- Доступ к ресурсам через URI
- Ошибка Debug Certificate expired
- Убрать предупреждающие значки при использовании строк в атрибутах
- Проверка на первый запуск приложения
- Ошибка при загрузке apk-файла на эмулятор/устройство
- Сделать скриншот экрана своего приложения
- Раскодирование HTML-символов
- Кодирование строк по схеме UTF-8
- Кодирование в режиме Base64
- Пишем собственную функцию md5() для вычисления хэша строки
- Как заблокировать экран в приложении?
- Узнать размеры экрана
- В чем разница между fill_parent и match_parent
- Как убрать заголовок у Activity?
- Как использовать собственный значок для программы
- Получить номер версии программы
- Убить приложение
- Сколько используется памяти
- Разрешённый объём памяти для приложения
- Запретить автоматическую смену ориентации при повороте устройства
- Экран
- Настройки — Экран
- Размеры экрана и его ориентация (Старый и новый способ)
- Плотность экрана, масштабирование шрифта и др.
- Получить текущее значение яркости экрана
- Установить яркость экрана
- Настраиваем яркость экрана в своём приложении
- Определение поддерживаемых экранных размеров в манифесте
- Размеры картинок для фона экрана
- Разрешение экрана на Android: зачем менять и как это сделать
- Понятие разрешения экрана
- Как узнать разрешение экрана на Android-устройстве
- Стандартный метод – через настройки телефона
- Через скриншот экрана
- Через установку специального приложения
- Как изменить разрешение дисплея на смартфоне/планшете
- Программа LCD Density Modder Pro
- Программа SecondScreen
- Без использования специальных приложений
Советы
Cleartext HTTP traffic not permitted (https)
При работе с Android 8+ примеры, которые обращаются к веб-адресам по протоколу http вызывают ошибку. Чтобы обойти данное ограничение, можно сделать следующее.
В папке res/xml размещаем файл network_security_config.xml:
В манифесте в блоке application добавляем новый атрибут.
Запретить делать скриншот экрана приложения
Существует специальный флаг FLAG_SECURE, запрещающий пользователю сделать скриншот вашего экрана. Это нужно в целях безопасности для отдельных видов приложений, например, банковских.
Аналог html-кода
При многострочных текстах вы можете воспрепятствовать переносу слов на разные строки, если их желательно держать вместе. В html есть специальный символ неразрывного пробела . В строковых ресурсах вы можете использовать символ или юникод-код \u00A0.
Где находятся исходники системного калькулятора?
Имитация тяжёлых задач
В Android нельзя выполнять сложные задачи в основном потоке. Для создания быстрой заглушки, которая будет имитировать тяжёлую задачу, можно написать следующий код:
Например, поместите код в обработчик нажатия кнопки и после нажатия нажмите на кнопку Back. Программа зависнет и вы увидите сообщение об этом.
Доступ к ресурсам через URI
Обычно мы обращаемся к ресурсам через идентификатор. Существует альтернативный способ через Uri. Например, такой подход может пригодиться для загрузки изображения в WebView при помощи метода loadUrl(). Формат доступа будет следующим: android.resource://[package-name]/res-id. Например:
Ошибка Debug Certificate expired
По умолчанию вашей программе выдается отладочный сертификат на один год. Если у вас есть старый проект, то можете получить сообщение об ошибке: Error generating final archive: Debug Certificate expired.
Вам следует удалить старый сертификат, и Eclipse создаст новый ещё на один год. Путь к сертификату можно посмотреть в настройках: Preferences | Android | Build | Default debug keystore. Обычно это папка C:\Users\ИмяПользователя\.android.
Убрать предупреждающие значки при использовании строк в атрибутах
Если в некоторых атрибутах компонентов использовать строки, то появляются предупреждающие значки с всплывающей надписью [I18N] Hardcoded string «Котики рулят», should use @string resource. Надпись призывает использовать строковые ресурсы, а не писать текст прямо в атрибутах. На самом деле это всего лишь предупреждение, а не ошибка. Программа будет прекрасно запускаться, но новичков такие надписи пугают. Можете убрать данное предупреждение, если добавите дополнительный атрибут tools:ignore.
Проверка на первый запуск приложения
Для проверки первого запуска приложения можно использовать настройки SharedPreferences. Смотрите пример.
Ошибка при загрузке apk-файла на эмулятор/устройство
Если при загрузке apk-файла вашего приложения на эмулятор или устройство вы получаете сообщение об ошибке:
Failed to upload xxxxxxxx.apk on device ’emulator-5554′
java.io.IOException: Unable to upload file: timeout
То зайдите в Eclipse в меню Window | Preferences | Android | DDMS и в текстовом поле ADB connection time-out (ms) вместо значения по умолчанию 5000 введите большее значение.
Сделать скриншот экрана своего приложения
Один из примеров снятия скриншота своего экрана — через методы рисования получить графический отпечаток корневой разметки, а затем сохранить его как картинку, которую можно вывести в ImageView. Выберите любой ваш экран для опытов и добавьте на неё кнопку для снятия скриншотов и ImageView для вывода сохранённого изображения. В моём случае корневым элементом была компоновка TableLayout.
Результат до и после снятия скриншота. Сам скриншот помещается в ImageView, поэтому растягивается до его размеров. Попробуйте доработать пример.
Изменённый пример, когда скриншот сохраняется на SD-карту:
Не забываем про разрешения.
Раскодирование HTML-символов
Если вам нужно раскодировать HTML-символы (угловые скобки <>, знак амперсанда &, кавычки «»), то воспользуйтесь методом TextUtils.htmlEncode(). Добавим на форму две текстовые метки. И небольшой код для примера:
Примечание: Если вы пользуетесь Notepad++, то там есть такая же возможность: TextFX | TextFX Convert | Encode HTML.
Кодирование строк по схеме UTF-8
Вероятно, вы не раз замечали, что в адресной строке некоторые символы заменяются на последовательность других символов. Самый простой пример — символ пробела заменяется на %20. Немного изменим предыдущий пример:
В нашем примере были преобразованы символы пробела и русские символы.
Кодирование в режиме Base64
Пишем собственную функцию md5() для вычисления хэша строки
У PHP-программистов есть готовая функция md5(), которая вычисляет MD5 хэш строки с использованием алгоритма MD5 RSA Data Security и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Напишем собственную функцию на Java:
Осталось применить её где-нибудь:
Как заблокировать экран в приложении?
Также нужно установить разрешение android.permission.DISABLE_KEYGUARD.
Если стоит обратная задача — запретить блокировку экрана при долгом бездействии, то используйте метод setKeepScreenOn() или используйте XML-атрибут android:keepScreenOn=»true».
Узнать размеры экрана
Для вычисления размеров экрана можно воспользоваться двумя способами. Второй способ более правильный.
В чем разница между fill_parent и match_parent
match_parent = fill_parent. Первое свойство нужно использовать в новых проектах, второе свойство считается устаревшим и пока оставлено в целях совместимости.
Как убрать заголовок у Activity?
В некоторых случаях хочется спрятать заголовок (Title) у программы. Есть несколько способов. Например, применить специальную тему (прописать в манифесте файла):
Также попробуйте android:theme=»@android:style/Theme.Black.NoTitleBar.Fullscreen» (убирает не только заголовок, но и панель уведомлений). Названия тем могут быть и другими, смотрите документацию. Несколько примеров
Если у вас используется своя тема, то используйте в ней параметр:
Также существует программный способ (перед вызовом setContentView):
Как использовать собственный значок для программы
Когда вы создаете учебные примеры, то у всех программ используется стандартный значок с изображением андроида. Как же использовать свой значок? Ответ прост. В папке проекта /res вы можете видеть подпапки drawable-ldpi, drawable-mdpi, drawable-hdpi и др., в которых и содержатся готовые значки в формате PNG под разные размеры экранов.
Вы можете просто открыть png-файл в графическом редакторе и нарисовать что-то свое и сохранить изменения.
Вы можете сохранить значки под своим именем, например, cat.png. В этом случае вам надо открыть файл манифеста, найти там строчку:
И отредактировать её, например, android:icon=»@drawable/cat» (без расширения). Как вариант, вы можете сохранить один значок в папке drawable в нужном размере, если пишете программу под определенные типы телефонов.
Размеры значков в папках (часть):
- Low density – ldpi = 36×36 px
- Medium density – mdpi = 48×48 px
- High density – hdpi = 72×72 px
- Extra-high density screen — xhdpi (320 dpi) = 96 × 96 px
Получить номер версии программы
Убить приложение
Сколько используется памяти
Нужно от общей памяти отнять свободную память
Более общий пример:
Разрешённый объём памяти для приложения
Система выделяет каждому приложению определённый лимит памяти. На разных устройствах размер выделяемой памяти отличается. Чтобы узнать размер выделяемой памяти для вашего приложения, используйте код:
Особенно это касается приложений, которые активно используют графику. Следите за размерами изображений, вызывайте метод recycle() для освобождения памяти при работе с классом BitmapFactory.
Начиная с Android 3.0 можно попросить у системы выделять чуть больше памяти, прописав в манифесте просьбу:
Запретить автоматическую смену ориентации при повороте устройства
Если вы хотите запретить автоматическую смену ориентацию при повороте устройства, то можно ее отключить для нужного экрана. Например, если экран с настройками должен отображаться только в портретном режиме, то добавьте одну строчку с атрибутом screenOrientation в манифест файла для соответствующей активности
Источник
Экран
Небольшая подборка различных примеров для работы с экраном. На самом деле их не так часто приходится использовать в практике, но иметь общее представление бывает необходимым. Начало было положено в 2012 году, что-то могло устареть.
Настройки — Экран
Чтобы показать окно Экран из системного приложения Настройки:
Размеры экрана и его ориентация (Старый и новый способ)
Чтобы узнать размеры экрана и его ориентацию из запущенного приложения, можно воспользоваться встроенными классами Android.
Данный способ был опубликован в те времена, когда у меня был Android 2.3. Читатели подсказали, что теперь методы считаются устаревшими (API 13 и выше). Пришлось переписывать код. Впрочем, спустя некоторое время и этот код стал считаться устаревшим.
Ориентацию при помощи нового метода не узнаешь. Помните, что это размеры экрана устройства, а не экрана вашего приложения. Кроме того, в документации как-то туманно описывается точность вычислений этих размеров. Никому верить нельзя.
Плотность экрана, масштабирование шрифта и др.
Существует класс DisplayMetrics, также имеющий в своём составе свойства для экрана. Пример также пришлось переписывать после выхода Android 11 (API 30), который теперь тоже устаревший:
Вот ещё несколько способов определения размеров:
Такой же код, но с использованием дополнительной константы SCREENLAYOUT_SIZE_MASK:
На Kotlin в виде отдельной функции.
Заглянув в документацию, обнаружил, что можно обойтись без собственных констант. Они уже есть в Android. Оформил в виде отдельного метода.
Получить текущее значение яркости экрана
В настройках экрана можно установить желаемую яркость экрана при помощи ползунка, но при этом мы не знаем, сколько это в попугаях. Я открою вам секрет при помощи простого кода:
Установить яркость экрана
Если можно получить значение текущей яркости экрана, значит можно и установить яркость. Для начала нужно установить разрешение на изменение настроек в манифесте:
Для настройки яркости нужно использовать параметр System.SCREEN_BRIGHTNESS. Добавим на форму кнопку, метку и ползунок. Код для установки яркости:
Проверил старый пример времён Android 2.2 на эмуляторе с Android 10. Правила ужесточились. Теперь разрешение на изменение системных настроек выдаются только системным программам. Пока ещё есть лазейка, которой и воспользуемся. Новый пример написан на Kotlin. Добавим в манифест немного модифицированное разрешение.
Далее программа должна проверить возможность изменять системные настройки через метод canWrite(). Если такая возможность есть, то запрашиваем разрешение. Появится специальное окно, в котором пользователь должен подтвердить своё решение через переключатель. После этого нужно заново запустить программу, чтобы ползунок стал доступен. Теперь можете менять настройки.
Настраиваем яркость экрана в своём приложении
Существует возможность переопределить яркость экрана в пределах своего приложения. Я не смог придумать, где можно найти практическое применение, но вдруг вам пригодится. Для управления яркостью экрана воспользуемся элементом SeekBar.
За яркость экрана отвечает свойство LayoutParams.screenBrightness:
Интересно, что когда выводил ползунок в значение 0, то эмулятор зависал с экраном блокировки. Вам следует учесть эту ситуацию и добавить условие:
Опять столкнулся с проблемой. Пример работал на старых устройствах, а на некоторых устройства не работает. Но за эти годы мне ни разу не пришлось использовать этот способ, поэтому даже не стал искать причину. И кстати, ошибка со значением 0 уже не возникает (возможно из-за того, что сам пример не работает как раньше).
Определение поддерживаемых экранных размеров в манифесте
Не всегда предоставляется возможным написать приложение для всех возможных типов экранов. Вы можете использовать тег в манифесте, чтобы указать, на устройствах с какими экранами может работать ваша программа.
В данном примере приводится поддержка нормальных и больших экранов. Маленьким экраном можно назвать любой дисплей с разрешением меньше, чем HVGA. Под большим экраном подразумевается такой, который значительно больше, чем у смартфона (например, у планшетов). Экран нормальных размеров имеет большинство смартфонов.
Атрибут anyDensity говорит о том, каким образом ваше приложение будет масштабироваться при отображении на устройствах с разной плотностью пикселов. Если вы учитываете это свойство экрана в своем интерфейсе, установите этому атрибуту значение true. При значении false Android будет использовать режим совместимости, пытаясь корректно масштабировать пользовательский интерфейс приложения. Как правило, это снижает качество изображения и приводит к артефактам при масштабировании. Для приложений, собранных с помощью SDK с API level 4 и выше, этот атрибут по умолчанию имеет значение true.
Размеры картинок для фона экрана
Если вы используете изображение в качестве фона, то нет смысла выводить очень большую картинку на устройстве с маленьким экраном. Можно подготовить разные размеры.
res/drawable-ldpi — 240×320
res/drawable-mdpi — 320×480
res/drawable-hdpi — 480×800
res/drawable-xhdpi — 640×960
res/drawable-xxhdpi — 960×1440
res/drawable-tvdpi — 1.33 * mdpi
Источник
Разрешение экрана на Android: зачем менять и как это сделать
В рекламе гаджетов часто делают акцент на качестве изображения и постоянно забывают о том, что дело не только в матрице. Крутость картинки во многом зависит от того, какое разрешение поддерживает дисплей устройства. И если про настройку этого параметра на компьютерном мониторе знают все, то про разрешение экрана на Android-устройстве почему-то постоянно забывают. Регулировка разрешения экрана позволяет оптимизировать работу гаджета.
Понятие разрешения экрана
Не стоит путать разрешение с размером дисплея. На устройствах с одинаковым размером экрана картинка может существенно отличаться по яркости, контрасту, количеству цветов и другим критериям. Дело в том, что качество изображения в первую очередь определяет текущее разрешение экрана, и чем оно выше, тем нашему глазу приятнее его созерцать.
На техническом языке разрешение дисплея обозначает количество мелких точек (пикселей), которые помещаются на экране по высоте и ширине. Пиксели могут иметь квадратную, прямоугольную и шестигранную форму.
В качестве основных единиц измерения разрешения используют ppi (количество пикселей на дюйм), но есть и другие величины: dpi, spi и lpi, которые используют в других сферах, например, для определения качества печати.
Чтобы разобраться в том, что такое разрешение, на практике, попробуйте максимально близко приблизить любое изображение. Лучше всего ставить этот эксперимент на ПК в каком-то графическом приложении для рисования, тогда вы гарантированно увидите, как картинка распадается на отдельные точки. Такой же принцип используется при создании изображения на дисплее смартфона, и чем больше количество составных точек, тем лучше.
Как узнать разрешение экрана на Android-устройстве
Производители и продавцы мобильных устройств часто игнорируют такой параметр, как разрешение дисплея. Им проще указать диагональ, количество передаваемых цветов и написать что-то умное в стиле Full HD. Но без простых трудяг-пикселей дела не будет, и поэтому важно знать, как посмотреть разрешение экрана на Android. Сделать это можно с помощью следующих способов.
Стандартный метод – через настройки телефона
Это самый простой метод определения разрешения экрана мобильного устройства. Достаточно открыть меню «Настройки», перейти в подменю «О телефоне», где найти нужный пункт с указанием текущего значения.
В силу обилия производителей и марок гаджетов, а также версий прошивок Android, у многих пользователей может не быть этого пункта в данном подменю. Для Android-устройств подобная путаница вполне нормальна, переживать не стоит.
Через скриншот экрана
Этот способ несколько сложнее, но зато гарантированно подходит всем владельцам мобильных устройств на Android. Нужно сделать скриншот экрана с помощью одновременного нажатия клавиш громкости и блокировки. На некоторых устройствах используется другая комбинация кнопок, но это не повлияет на конечный результат.
Затем следует открыть полученное изображение через галерею, найти пункт дополнительных действий, в котором выбрать функцию «Сведения». В открывшейся таблице будут представлены параметры ширины и высоты картинки, выраженные в пикселях. Это и есть текущее разрешение.
Через установку специального приложения
На Google Play есть целый список приложений для получения информации о разрешении экрана вашего Android-устройства. Некоторые из них даже предлагают даже откорректировать его. Пользоваться такими программами можно, но с определенной долей осторожности, потому что большинство из них запрашивает получение рут-прав администратора, а это может привести к серьезным сбоям в работе гаджета. Просто посмотреть параметры разрешения можно совершенно безопасно.
Подробнее о специальных приложениях для управления разрешением экрана на смартфонах и планшетах мы расскажем далее.
Как изменить разрешение дисплея на смартфоне/планшете
Изменение разрешения – это не уменьшение размера экрана на телефоне Android. Возможно, после изменения настроек какая-то часть дисплея станет неактивной, но это связано с тем, что выбранные параметры не подходят под диагональ экрана. Изменяется не размер, а количество пикселей в каждом дюйме видимой области, таким образом происходит управление качеством изображения.
Чтобы не прогадать с данной настройкой, в сети можно найти калькулятор разрешения, где при вводе размеров монитора пользователь получает данные в пикселях.
Зачем производить манипуляции с разрешением дисплея? Как правило, эти настройки используют в следующих случаях:
- повышение качества изображения. Возможно, производитель устройства специально ограничил его возможности, чтобы качество графики не сказалось на работоспособности процессора. Если вы не запускаете «тяжелые» приложения, можно, не опасаясь, повысить разрешение;
- снижение качества изображения. Снижая разрешение, вы теряете в картинке, но выигрываете в аппаратных мощностях. В результате можно запустить на своем гаджете крутую игру, ускорить время загрузки страниц при работе через мобильный интернет.
А теперь давайте рассмотрим, как можно изменить разрешение экрана на Android-планшете или смартфоне.
Программа LCD Density Modder Pro
Приложение LCD Density Modder Pro не стоит использовать неопытным пользователям мобильных устройств. Оно бесплатное, найти его легко в магазинах приложений или на различных сайтах. Упрощенная версия есть на Google Play, но там можно только посмотреть текущие и доступные настройки.
Чтобы с помощью LCD Density Modder Pro изменить разрешение экрана, для начала следует получить права администратора, то есть рутировать. Дальше работа с программой максимально проста, следует выбрать значение из списка или ввести любое на выбор.
Разработчики ОС Android не зря ограничили владельцев устройств в правах, т.к. необдуманные действия могут привести к серьезной поломке, вплоть до превращения смартфона в «кирпич». Поэтому если вам просто интересно поэкспериментировать с разрешением экрана, обратите внимание на следующую программу.
Программа SecondScreen
Название приложения SecondScreen переводится как «второй экран». Оно есть в свободном доступе на Google Play, для работы не требует прав администратора. Запуская программу, вы активируете второй рабочий экран, для которого можете задать разрешение по своему выбору. Программа сама подскажет, какие параметры подходят вашему устройству.
Преимущество этого приложения в том, что вы практически ничем не рискуете, и максимум, что может случиться с вашим смартфоном, – вылет каких-то отдельных программ.
Заводские установки системы на самом деле не изменяются, происходит скорее их имитация, поэтому существенно выиграть по качеству изображения или аппаратным мощностям процессора не выйдет.
Без использования специальных приложений
Интересной новостью для опытных пользователей мобильных устройств стала возможность управления разрешением экрана в смартфонах Samsung Galaxy S7, представленных в конце 2016 года. Но этот случай является фактически единичным на рынке, и для других моделей и производителей изменить настройки дисплея можно только при наличии прав администратора и хороших знаний системы. Мы приведем ниже краткую инструкцию, но имейте в виду, что действуете на свой страх и риск.
- Первое, что следует сделать, – рутировать смартфон или планшет. Для этого его можно перепрошить, подключив к десктопному устройству или установив и запустив специальную программу.
- После этого устанавливаем файловый менеджер, который поддерживает режим работы при наличии рут-прав, и откроет вам системные папки и файлы. В папке System должен быть файл с названием build.prop, открыть его можно текстовым редактором.
- Затем находим строчку ro.sf.lcd_density, в ней следует поменять текущее значение и сохранить файл. Рекомендуем несколько уменьшить этот параметр. Изменения вступят в силу после перезагрузки смартфона.
- Если телефон после этого будет работать некорректно, верните настройки назад. Если же мобильный отказывается загружаться, придется сделать сброс до заводских настроек, что чревато полной потерей личной информации.
Неопытным пользователям не стоит самостоятельно корректировать системные файлы.
Источник