Быстрое переключение программ на андроид. Переключение между экранами в Android. Следи за загрузкой процессора
Всем привет, в очередной раз решил написать пост и долго не знал о чем написать, а потом залез на несколько форумов и увидел что у народа серьезные траблы с интентами в андроиде, люди не могут перейти с активности на активность или передать данные таким способом.
В интернете полно туториалов на эту тему, я не знаю в чем проблема и почему у некоторых не получается разобраться, но сегодня я постараюсь разъяснить элементарные вопросы по этому классу.
Для начала что такое Intent? Intent — это механизм для описания одной операции — выбрать фотографию, перейти с активности на активность, передать данные с одного окна на другое, отправить письмо, сделать звонок, запустить браузер (или какую либо другую программу) и перейти по указанному адресу.
Сегодня я по порядку расскажу как делается каждый из этих типов интентов, быстро и кратко.
Переход с одной активности на другу
Это самый простой и базовый способ, если вы запомните его то дальше будет просто. В любое место где вы хотите что бы запускался переход на вторую активность вставьте этот код и он будет переходить на нужную активность.
Допустим у нас есть два класса — FirstActivity и SecondActivity, нам с первой нада перейти на вторую, для этого на первой активности в лейауте создаем кнопку и вешаем на нее листенера в коде программы. Это выглядит примерно так:
Сперва делаем леяут с разметкой.
main.xml
< RelativeLayout xmlns:android = xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" > < Button android:id = "@+id/button1" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "Button" /> RelativeLayout >
FirstActivity.java
protected
void
onCreate
(Bundle
savedInstanceState
)
{
super
.
onCreate
(savedInstanceState
);
setContentView
(R
.
layout
.
activity_main
);
//присвоили кнопку к кнопке на леяуте
Button
btn
=
(Button
)
findViewById
(R
.
id
.
button1
);
//повесили на него листенера
btn
.
setOnClickListener
(new
OnClickListener
()
{
@Override
public
void
onClick
(View
v
)
{
//переходим с первой на вторую активность
Intent
intent
=
new
Intent
(FirstActivity
.
this
,
SecondActivity
.
class
);
startActivity
(intent
);
}
});
}
AndroidManifest.xml
<
application
android:allowBackup
=
"true"
android:icon
=
"@drawable/ic_launcher"
android:label
=
"@string/app_name"
android:theme
=
"@style/AppTheme"
>
<
activity
android:name
=
"com.example.intent.FirstActivity"
android:label
=
"@string/app_name"
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.MAIN"
/>
<
category
android:name
=
"android.intent.category.LAUNCHER"
/>
intent-filter
>
activity
>
<
activity
android:name
=
".SecondActivity"
>
activity
>
application
>
Ну вторая а вторая активность у нас пустая, после нажатия на кнопку вы просто перейдете на следующую активность. Для просмотра результата перехода создайте второй лейаут файл в котором добавьте текствью, и напишите что нибудь там. Самое главное что бы SecondActivity наследовался так же от Activity как и первый иначе вы увидите ошибку.
Передача данных между активностями
Передача данных между активностями очень популярная штука, и полезная, что бы не мучаться и не делать все это интентами конечно можно использовать преференсы, сохранять в них и считывать в нужной активности, но это годиться не для разовой передачи, а для записи данных на долгое хранение, так как после 1000 записи в префсы у вас программа начнет уже глючить так как кеш будет забит разного рода данными.Идея такого интента очень простая, для примера я просто передам с одной активности на другую какое нибудь слово. Пусть это слово будет «ты торт!». Смотрим как это делается.
Выглядеть программа будет так же как и в первом примере, у нас будет одна кнопка которая будет делать переход с активности на активность, только на этот раз еще и будет передавать слово, по этому менять в лейауте ничего не будем, а изменим сразу код в FirstActivity.
FirstActivity.java
// переходим с первой на вторую активность
Intent
intent
=
new
Intent
(FirstActivity
.
this
,
SecondActivity
.
class
);
//Передаем на следующую аквтиность слово в статическую переменную
intent
.
putExtra
(SecondActivity
.
TEXT
,
"Ты торт!"
);
startActivity
(intent
);
Вот в этом месте мы добавляем putExtra который передает все что ваша душа пожелает, он принимает класс с константой в которую записываем что передавать, и сам текст\символ\цифру которую мы хотим передать.
SecondActivity.java
// статическая перменная
public
static
final
String
TEXT
=
"Text"
;
@Override
protected
void
onCreate
(Bundle
savedInstanceState
)
{
super
.
onCreate
(savedInstanceState
);
setContentView
(R
.
layout
.
second
);
//объявляем текствью в который выведем текст
TextView
text
=
(TextView
)
findViewById
(R
.
id
.
textView1
);
//принимаем интент посланый из первой активности
Bundle
extras
=
getIntent
().
getExtras
();
//выводим что получили
text
.
setText
(extras
.
getString
(TEXT
));
}
Ну и теперь нам нужна разметка в которую будем рисовать текст:
second.xml
xml version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
>
<
TextView
android:id
=
"@+id/textView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"TextView"
/>
LinearLayout
>
После перехода с первой активности на другую вы увидите в левом верхнем углу сообщение что вы торт.
Вызов программ через intent
Так же как я уже упоминал ранее при помощи этого класса можно открывать программы разного рода, разные браузеры которые установлены на телефоне\планшете или например приложения для социальных сетей или файловые менеджеры для нахождения файлов.Это очень удобная штука, я ее использовал в некоторых своих программах, в версиях андроида выше 3 работает отлично, а почему то в 3 версии андроида оно бычит, радует только то что телефонов на третьем андроиде очень мало (:
В общем смотрим на все том же самом примере класса FirstActivity. Сейчас мы откроем список браузеров.
В классе FirstActivity заменим наш старый интент на вот такой:
FirstActivity.java
// задаем адрес на который нада перейти
Uri
address
=
Uri
.
parse
("http://google.com"
);
// открываем список браузеров
Intent
intent
=
new
Intent
(Intent
.
ACTION_VIEW
,
address
);
// запускаем
startActivity
(intent
);
Тут у нас из комментариев понятно что происходит, но помимо константы ACTION_VIEW есть еще очень много других разных констант которые позволяют выполнять разные функций.
Открытие файлов и папок через intent
Например для открытия локального каталога внутри телефона вам нужно сделать вот такой интент:В FirstActivity заменим старый интент на этот.
FirstActivity.java
//создаем в шапке класса переменную которая будет сохранять id выбранного файла
private
static
final
int
FILE_SELECT_CODE
=
0
;
//а дальше в том же onClickListener"ре заменяем старый интент на этот // задаем константу для захвата данных Intent intent = new Intent (Intent . ACTION_GET_CONTENT ); //какую папку открываем intent . setType ("file/*" ); //запускаем всю красоту startActivityForResult (intent , FILE_SELECT_CODE );
FirstActivity.java
//Выше или ниже метода onCreate()
public
void
onActivityResult
(int
requestCode
,
int
resultCode
,
Intent
data
)
{
switch
(requestCode
)
{
case
FILE_SELECT_CODE
:
{
Uri
uri
=
data
.
getData
();
try
{
//тут передаем uri в тот метод в котором вы ходите вывести содержимое файла
}
catch
(IOException
e
)
{
e
.
printStackTrace
();
}
catch
(URISyntaxException
e
)
{
e
.
printStackTrace
();
}
}
break
;
}
super
.
onActivityResult
(requestCode
,
resultCode
,
data
);
}
Так же в андроиде есть куча других констант, их всех я описать не буду потому что их много, например вот несколько:
Сегодня мы рассмотрели только основные самые используемые виды intent"ов, спасибо за внимание.
Исходников не будет так как мне кажется что материал довольно простой.
За четыре года из маленького, но амбициозного проекта Android превратился в едва ли не самую сложную и напичканную функциональностью мобильную ОС современности. В Android есть поддержка огромного количества технологий и функций, многие из которых скрыты от пользователя или запрятаны там, куда даже не подумаешь заглянуть. Эта статья - сборник советов и трюков, которые могут быть применены к любому Android-аппарату без необходимости получать root.
01. ОТКЛЮЧИ АВТОМАТИЧЕСКОЕ СОЗДАНИЕ ИКОНОК НА РАБОЧЕМ СТОЛЕ
Я думаю, не меня одного раздражает, как ведет себя маркет при установке приложения. Он почему-то думает, что для любой мало-мальской софтины или очередной игры мне обязательно нужна иконка на рабочем столе, и успешно ее создает. А мне приходится ее удалять. А потом еще одну. И так каждый раз.
К счастью, такое поведение легко отключить - просто открываем настройки Google Play (на панели слева) и снимаем галочку с пункта «Добавлять значки». Там же можно отключить принудительный запрос пароля каждые 30 мин при покупке приложений, а также ненавистное автообновление приложений.
02. ОТКЛЮЧИ GOOGLE SEARCH И ДРУГОЙ БЕСПОЛЕЗНЫЙ СОФТ
Стандартная прошивка Android-смартфонов включает в себя огромное количество бесполезного софта, начиная от кучи приложений Google (ты знаешь, что Google требует от компаний-производителей включать в прошивку своих аппаратов чуть ли не весь разработанный ей софт?) и заканчивая всяким барахлом от производителя смартфона. Все это (или хотя бы большинство) можно отключить.
Переходим в «Настройки → Приложения → Все», тапаем по нужной софтине и нажимаем «Отключить» (конечно же, тебя предупредят, как это «опасно»). Кстати, при отключении поиска Google исчезнет и Google Now, а также строка поиска с рабочего стола (после перезагрузки), вместо которой останется пустая область.
03. ПЕРЕЗАГРУЗИСЬ В БЕЗОПАСНЫЙ РЕЖИМ
Мало кто знает, но в Android, как и во многих других ОС, есть так называемый Safe mode. Это режим, при котором операционка загружается с отключенными сторонними приложениями. Не слишком умело написанная малварь (та, что не прописывается в системный раздел) при этом отваливается, как и любой софт, мешающий нормальной работе системы. Safe mode можно использовать для обхода блокировщиков экрана, приложений, приводящих к зависанию смартфона, или, как вариант, для выявления того, кто на самом деле жрет батарею - очередное обновление прошивки или софт.
Включается режим довольно простым, но совсем не очевидным способом: зажатием кнопки питания с последующим удержанием пальца на пункте «Отключить питание». После перезагрузки виновника проблемы можно удалить через «Настройки → Приложения».
04. ИЗБАВЬСЯ ОТ НАВЯЗЧИВЫХ УВЕДОМЛЕНИЙ
«Строительство замка закончено!» - как же достали эти уведомления. Все кому не лень пытаются уведомить меня обо всех возможных и невозможных событиях: «Вася Джубга ответил вам в твиттере», «У вас 100500 новых сообщений», «Вы выиграли операцию по увеличению правой ноги». Смахиваешь одно уведомление, на его месте появляются три новых.
Как избавиться от всего этого шлака: долго удерживаем палец на уведомлении и снимаем галочку под кнопкой «Остановить». Это рецепт для KitKat. В Lollipop все немного по-другому, но суть та же: удерживаем, далее кнопка i, в открывшемся окне ставим галочку на «Заблокировать». Там же можно принудительно сделать уведомление приоритетным, чтобы оно всегда было в самом верху.
05. НЕ ЗАБЫВАЙ ПРО СЕРВИСНОЕ МЕНЮ
Еще одна совсем не очевидная функция - сервисное меню. Его можно открыть через набор номера *#*#4636#*#*. В основном там различная техническая информация вроде номера IMEI, уровня сигнала, текущего местоположения или типа сети. Но есть и очень полезная для некоторых ситуаций функция принудительного переключения смартфона на нужный тип сети (2G, 3G, LTE).
В условиях плохого уровня 3G/LTE-сигнала девайс стремится сброситься на 2G, чтобы сохранить заряд батареи и обеспечить доступность абонента. Такое поведение можно отключить. Открываем сервисное меню и в пункте «Настроить предпочтительный тип сети» выбираем WCDMA only или LTE only. Таким же образом можно переключить смартфон на 2G - GSM only. Поможет в том случае, если требуется сохранить заряд батареи и интернет используется редко. Кстати, там же можно отключить радиомодуль вообще (естественно, до ближайшей перезагрузки).
В смартфонах на базе китайских чипов MTK есть собственное и гораздо более изощренное сервисное меню. Его номер *#*#3646633#*#*. Там различная системная информация и огромное количество тестов, среди которых можно найти несколько полезных настроек, таких как регулировка уровня громкости при разговоре или, например, изменение настроек GPS/AGPS. Само меню жутко нелогичное и содержит такое количество разно образной инфы, что я даже не решусь описывать его, а просто отправлю читателя на три буквы - XDA.
06. ИСПОЛЬЗУЙ СТАНДАРТНЫЙ БРАУЗЕР
Не знаю, почему пользователи так не любят встроенный браузер Android. На мой взгляд, он прекрасен. Легкий, быстрый, на движке Chromium, умеет синхронизироваться с аккаунтом Google (то есть сразу включает в себя все закладки и пароли из Chrome), но самое главное - в нем есть очень удобный и почти гениальный метод навигации. Это так называемое круговое меню, которое можно активировать в настройках (только в Android 4.0–4.4).
07. УПРАВЛЯЙ КОНТАКТАМИ С КОМПА
В копилке Google есть веб-сервисы не только для удаленной установки софта, блокирования и поиска смартфона, но и управления контактами. Все когда-либо сохраненные и синхронизируемые при подключении нового смартфона контакты людей всегда можно найти на странице google.com/contacts. Их можно просматривать, редактировать, добавлять и удалять. Причем, как ни странно, по сути это часть Gmail.
08. СЛЕДИ ЗА ЗАГРУЗКОЙ ПРОЦЕССОРА
В Android есть встроенная функция показа текущей загрузки процессора и активных в данный момент процессов поверх экрана. По идее, она предназначена для разработчиков приложений и прошивок и скрыта от обычных юзеров, но нам никто не мешает ее активировать. Но для начала придется достучаться до раздела настроек «Для разработчиков», которого по умолчанию вообще не существует.
Идем в настройки, далее «О телефоне», находим строчку «Номер сборки» и тапаем по ней семь раз подряд. На экране должно появиться сообщение «Вы стали разработчиком!» Это значит, что пункт «Для разработчиков» теперь открыт, и мы переходим в него. Отматываем почти в самый низ экрана и в разделе «Мониторинг» находим переключатель «Показывать загрузку ЦП».
Включаем и видим в правой верхней части экрана список. Первая строка - это так называемый loadavg, показывающий количество процессов, которым пришлось работать или ждать своей очереди на выполнение за последнюю минуту, пять и десять минут. Если говорить совсем грубо: если эти значения, поделенные на количество ядер процессора, будут выше единицы, это означает 100%-ю загрузку процессора за последнюю минуту, пять или десять минут соответственно. Ниже идет список наиболее прожорливых процессов (по сути, аналог команды top из Linux).
09. ИСПОЛЬЗУЙ ADB ДЛЯ БЭКАПА СОФТА НА КОМП
Мы уже не раз писали о замечательном инструменте под названием ADB, который может существенно упростить управление устройством с компа для человека, хорошо знакомого с консолью (здесь речь в основном идет о Linux, конечно же). Кроме возможности установки софта, переноса на смартфон файлов, просмотра логов и других полезностей, с недавних пор ADB позволяет делать бэкап всех настроек и приложений смартфона.
Чтобы воспользоваться данной функциональностью, устанавливаем универсальный ADB-драйвер (goo.gl/AzZrjR), далее скачиваем сам ADB (goo.gl/3P7klM), устанавливаем драйвер, далее разворачиваем архив с ADB, подключаем смартфон к компу USB-кабелем, запускаем командную строку и выполняем команду
На экране смартфона появится сообщение с просьбой указать пароль шифрования для бэкапа - можно смело жать «Далее». Начнется процесс бэкапа приложений, который затронет как сами APK-пакеты (флаг -apk в команде), так и их настройки. В бэкап также попадут все приложения с карты памяти. Восстановить бэкап можно с помощью такой команды:
$ adb restore backup . ab |
10. ОТКЛЮЧИ ФОНОВУЮ ПЕРЕДАЧУ ДАННЫХ В ПРИЛОЖЕНИЯХ
Работая в фоне, приложения могут активно использовать интернет для самых разных целей, от обновления своего контента до слива информации о твоем местоположении. К тому же такая активность в любом случае приводит к повышенному расходу заряда аккумулятора.
В Android есть возможность выборочно ограничить приложения на передачу данных в фоне, вот только находится она в таком месте, куда большинство юзеров вряд ли когда-нибудь бы заглянуло. Чтобы запретить какому-либо приложению использовать интернет в фоне, необходимо перейти в настройки, далее - «Передача данных», промотать экран вниз до списка активно использующих сеть приложений (для некоторых будет сюрпризом, что он там вообще есть) и тапнуть по нужной софтине. Внизу будет опция «Ограничить фоновый режим». Стоит иметь в виду, что опция отключит передачу данных только по мобильной сети, так что по Wi-Fi данные будут продолжать течь.
11. ИСПОЛЬЗУЙ СТРОКУ ПОИСКА
Зачастую владельцы смартфонов на базе Android пренебрегают поисковой строкой в верхней части главного экрана. Это действительно логично, учитывая возможность выполнить поиск, вбив запрос в адресную строку любого мобильного браузера.
Между тем строка поиска на рабочем столе умеет гораздо больше, чем просто перенаправлять запрос на google.com. Она позволяет искать в контактах, приложениях, событиях в календаре, в закладках и истории веб-браузера в автоматическом режиме. При обычном использовании смартфона она, может, и не будет так полезна, но при подключении внешней клавиатуры это незаменимый инструмент. Просто жмем
12. ЮЗАЙ SMART LOCK
Smart Lock - одна из тех функций, о которых не задумываешься, но, попробовав единожды, уже не можешь без нее жить. Это одна из самых заметных новинок Android Lollipop и одна из самых полезных функций, добавленных в Android в последнее время. Идея Smart Lock крайне проста - она отключает пин-код или другую защиту экрана блокировки в том случае, если поблизости есть определенное Bluetooth-устройство или место на карте.
По умолчанию Smart Lock «как бы» отключена. То есть она нигде не светится, но после сопряжения с новым Bluetooth-устройством (любого типа) обязательно предложит добавить его в свой белый список. После этого ты о ней вновь забудешь. Но только до тех пор, пока не включишь защиту экрана блокировки в разделе «Безопасность» настроек. Теперь она заработает так, как и должна.
Сами настройки Smart Lock находятся в том же разделе, и, кроме добавления новых Bluetooth стройств, там можно указать «безопасные места», причем сразу со списком вариантов, основанным на «наблюдениях» Google Now. Кстати, если его отключить, как описано в первом совете, то потеряется и данная функциональность.
13. ЭКОНОМЬ ЭНЕРГИЮ ПРАВИЛЬНО
Еще одно заметное нововведение Lollipop - это режим экономии энергии. В стандартный Android он перекочевал из прошивок производителей смартфонов, которые раньше занимались его реализацией самостоятельно. Теперь функция есть в чистом Android - ты юзаешь смартфон по полной, и при достижении 15% заряда аккумулятора система предлагает включить режим энергосбережения, который отключает фоновую передачу данных, снижает яркость до минимума, отключает некоторые датчики и снижает FPS отрисовки экрана до пары десятков кадров в секунду. Для наглядности строка состояния и наэкранные кнопки внизу экрана становятся красными - чтобы не забывал.
Чтобы сэкономить заряд батареи смартфона с AMOLED-экраном, можно установить черные обои и использовать приложения с черным фоном.
Режим экономии энергии поддается настройке. Идем в «Настройки → Батарея →меню → Режим энергосбережения». Здесь можно указать условие автоматического включения режима (правда, выбор скудный: 5%, 15% или никогда) и, самое главное, включить режим прямо сейчас. Очень удобно в том случае, если предстоит долгое путешествие без возможности подзарядки.
14. СЛЕДИ ЗА ТРАФИКОМ
Скорее всего, производители смартфонов, как обычно, перелопатят стандартный интерфейс Android 5.0 и все поменяют (привет Samsung - самому большому любителю ломать интерфейсы), но в стандартной шторке Lollipop, а точнее, во «второй шторке» с кн
опками быстрых настроек есть одна изюминка. Кнопка передачи данных по центру вовсе не переключает передачу данных, а разворачивается в интерфейс, позволяющий не только просмотреть текущий расход трафика, но и отключить передачу данных с помощью переключателя сверху.
15. ДЕЛИСЬ НЕ ТЕЛЕФОНОМ, А ПРИЛОЖЕНИЕМ
Специально для тех, кто любит давать свой телефон другим людям, в Lollipop есть функция Screen pinning, позволяющая заблокировать смартфон на одном приложении без возможности его закрыть или переключиться на другое. Как и многие другие полезности, она совсем незаметна и запрятана довольно глубоко в настройки. Для активации идем в «Настройки → Безопасность», мотаем почти до самого конца и включаем опцию «Блокировка в приложении».
Теперь, если нажать кнопку просмотра запущенных приложений («Обзор»), внизу миниатюры текущего приложения появится концелярская кнопка. После нажатия на значок экран будет заблокирован на выбранном приложении и для возвращения назад потребуется удерживать кнопки «Назад» и «Обзор» одновременно. При этом придется ввести пин-код, если он установлен для экрана блокировки.
XX. ИСПОЛЬЗУЙ ACITIVITY LAUNCHER
Любое графическое Android- приложение включает в себя одну или несколько так называемых «активностей» (activity). Каждая из них - это окно (экран) приложения, например главный экран или экран настроек, может быть даже окно выбора файла. По умолчанию открыть напрямую (с рабочего стола) можно только те активности, которые разработчик приложения пометит как главные (main), остальные доступны только через само приложение и только если сам разработчик позволит это сделать.
Однако, имея под рукой нужный инструмент, можно достучаться до любой другой активности любого приложения и даже создать для нее ярлык на рабочем столе. Activity Launcher делает именно это. Просто установи приложение, выбери в меню сверху «Все действия» и найди нужную софтину. Все ее активности появятся на экране, и любую из них можно будет открыть простым тапом или повесить на рабочий стол с помощью долгого удержания пальца.
Как пример полезных «внутренних» активностей можно привести окно закладок Chrome (Chrome →Закладка), доступ к скрытому механизму AppOps в Android < 4.4.2 (Настройки → AppOps), запуск поиска в TuneIn Radio (tunein.ui.activities.TuneInSearchActivity). Очень много активностей имеет в себе ES Проводник, включая редактор, музыкальный плеер, просмотрщик изображений и многое другое. Любую из них можно запустить напрямую с рабочего стола. Таким же образом можно открыть любой раздел настроек и получить доступ к некоторым функциям ОС, достучаться до которых проблематично. Это абсолютно легальная функцио нальность, и она не требует root.
В Android есть большой набор горячих клавиш для подключаемых клавиатур. Для навигации по рабочему столу и различным меню можно использовать стрелки, Tab и Enter. Кроме этого, доступны следующие комбинации клавиш:
Esc - кнопка «Назад»;
Win + Esc - кнопка «Домой»;
Ctrl + Esc - кнопка «Меню»;
Alt + Tab - переключение между приложениями;
Ctrl + Space - переключение раскладки;
Ctrl + P - открыть настройки;
Ctrl + M - управление установленными приложениями;
Ctrl + W - смена обоев;
Win + E - написать письмо;
Win + P - проигрыватель музыки;
Win + A - калькулятор;
Win + S - написать СМС;
Win + L - календарь;
Win + C - контакты;
Win + B - браузер;
Win + M - карты Google;
Win + Space - поиск;Чтобы узнать свой MAC- и IP-адрес, идем в «Настройки → Wi-Fi → меню → Дополнитель-
ные функции». MAC и IP будут в самом низу.В Lollipop есть встроенная игра в стиле Flappy Bird. Идем в «Настройки → О телефоне»,
несколько раз тапаем по пункту «Версия Android», затем удерживаем палец на появившемся «чупа-чупсе». Играем.Google Now поддерживает большое количество русскоязычных голосовых команд. Все их можно разделить на две группы: голосовой поиск и собственно сами голосовые коман ды. Голосовой поиск позволяет выполнять интеллектуальный поиск в Google, когда система вместо списка ссылок выдает на экран конкретный ответ, а голосовые коман ды позволяют выполнять те или иные действия, например отправить СМС или установить будильник. Список команд показан на изображении «Голосовые команды Google Now». Голосовой поиск же включает в себя более десятка различных типов вопросов:
Погода. Какая погода будет завтра утром?
Адреса. Где ближайшая аптека?
Информация об авиарейсе. Когда отправляется рейс «Аэрофлота» номер 2336?
Время. Который час в Лондоне?
События. Когда сегодня заход Солнца?
Вычисления. Чему равен квадратный корень из 2209?
Перевод. Как будет «огурец» по-испански?
Спорт. Когда играет «Спартак»?
Финансы. Какой сегодня индекс S&P 500?
Факты. Какова высота самого высокого здания в мире?
Курс валют. Переведи 2600 рупий в доллары США.
Изображения. Покажи фотографии моста Золотые Ворота.
Интересно, что по-английски Google Now понимает большое количество и гораздо менее очевидных вопросов. Как пример можно привести:
Надевать ли сегодня куртку?
Сколько чаевых с 420 рублей?
Где моя посылка?
Это, конечно же, не все, о чем можно было бы рассказать, но растянуть статью не получится, а многие из других возможностей и так известны. Не забывай об этих хитростях, и смартфон станет
чуточку удобнее.
at Январь 26, 2017 .
Android 7.0 Nougat сегодня можно назвать самой масштабной версией этой платформы. Этот дистрибутив действительно приносит множество существенных улучшений и усовершенствований, по сравнению с 6.0 (Marshmallow), а также предоставляет много важных изменений в юзабилити. Что нового в Android 7 представлено пользователям?
Основные изменения
Наиболее значимые изменения включают в себя ярлыки запуска, которые позволяют вам с помощью длительного нажатия получить доступ к быстрой паре действий, например снимать видео или делать селфи в приложении камеры без необходимости запуска всего сервиса. Вместо пяти теперь присутствует шесть быстрых переключений в списке уведомлений, и если вы удерживаете кнопку питания, в меню отключения появляется опция перезапуска.
Инструкция к «Андроиду 7» может быть кратко представлена так. В меню «Настройки» присутствуют новые вкладки, которые реплицируют все найденные в устройстве опции. Кроме того, добавлен подпункт «Поддержка», предназначенный для получения помощи круглосуточно. Также были внесены некоторые изменения в общие настройки, в том числе добавлен диспетчер смарт-хранилищ с параметрами автоматической и ручной очистки. Появился раздел «Перемещения», в котором находятся различные настройки жестов и функции обнаружения движения. Поддержка GIF также имеется в Google Keyboard.
Обзор 7.0 в двух словах
Если попытаться кратко описать Android Nougat, то можно сказать, что это мобильная платформа, глубоко пускающая свои корни. Ощущение стабильности этой ОС становится все более сильным уже начиная с 5.0 Lollipop. Так, в версии 5 можно наблюдать гораздо меньше проблем с производительностью, а внешнему виду уделяется все больше внимания. Nougat 7.0 же, в свою очередь, отличается расширением функциональности, улучшением существующих функций и дальнейшим увеличением возможностей Android.
Стоит отметить, что Android 6.0 Marshmallow в основном поддерживала общий вид 5.0 Lollipop, но получила некоторые новые функции, такие как DozeMode, сканер отпечатков пальцев API и гранулярные разрешения. Прошел всего год, и появилась версия 7, которая поддерживает дизайн главного экрана и приложений из предыдущего 6-го дистрибутива, но при этом закладывает фундаментальную основу для всего функционала.
При изучении инструкции к «Андроиду 7 Нуга» можно заметить, что в платформе имеется гораздо больше инноваций, чем кажется на первый взгляд. Появились некоторые новые визуальные функции, которыми можно воспользоваться, чтобы изменить меню настроек и область уведомлений.
Режим экрана
В первую очередь инструкция к «Андроиду 7» на русском языке актуальна для новых настроек дисплея. Nougat предоставляет режим с разделенным экраном для Android. Сплит-экран работает как в портретном, так и в ландшафтном режимах, причем два окна изменяются и настраиваются только в портретном. Разработчики приложений могут устанавливать свой собственный минимальный размер и пропорции окна, но в ландшафтном отображении будет отображаться неизменный стандарт 50/50.
Режим разделения экрана можно активировать, нажав кнопку «Обзор приложений» и выбрав «Последние». Его также можно включить, нажимая ярлык в панели выбора приложений и перетаскивая его в верхнюю часть экрана. Вы даже можете активировать действие жестов, чтобы он запускался при прокрутке вверх по кнопке обзора.
В этой настройке первое приложение появится в верхнем окне (или слева, если вы находитесь в ландшафтном режиме), и вы сможете выбрать вторую программу из перечня, который будет отображаться автоматически. Или же, когда в дополнительном окне отображается какой-либо сервис, вы можете нажать «Домой», чтобы параллельно запустить другое приложение с вашего домашнего экрана.
Быстрое переключение между программами
Представляя инструкцию к «Андроиду 7» на русском, нельзя обойти вниманием и это обновление. Быстрое переключение - это просто перетасовка между двумя последними используемыми приложениями. Оно работает в общесистемном режиме, поэтому вы можете быстро переключаться всякий раз, когда находитесь в и вы также можете использовать его во вторичном окне режима разделения экрана. Просто дважды нажмите кнопку обзора приложения, и вы переключитесь между двумя своими последними программами в дополнительном окне.
Наличие быстрого переключения - это, возможно, любимая многими функция Nougat. Она означает, что вы можете выполнять тройную задачу в многооконном режиме. Например, вы можете смотреть видеоролик YouTube в верхнем окне и быстро переключаться между двумя социальными сетями внизу. Или же вы можете просматривать электронную почту в верхней панели, одновременно переключаясь между приложением примечания и веб-страницей в нижнем окне. Это действительно выглядит потрясающе.
Выход из режима с разделенным экраном также достаточно прост: перетащите черный разделитель в нижнюю часть экрана или полностью переместите открытое приложение вверх. Кроме того, вы можете снова нажать кнопку обзора приложения, и оно будет отображаться в полноэкранном режиме.
Область уведомлений
Однако не все в «Нуге» так запутано. Некоторые новые функции простые и интуитивно понятные, что подтверждает инструкция к «Андроиду 7» для чайников.
Области уведомлений в этой версии платформы получили небольшое усовершенствование, устранив карты Google. Вы получаете больше информации и меньше потраченного впустую места. Аналогично связанные уведомления и быстрый ответ настолько полезны, что удивительно, как они не появились в Android до сих пор.
Быстрый ответ - это просто возможность ответить на сообщение непосредственно из его уведомления, не открывая приложение полностью. Это фантастическая функция, которая сэкономит вам много времени и избавит вас от бесконечного переключения программ.
Кроме того, быстрые действия выходят за рамки простого ответа: вы также можете копировать, удалять, архивировать и совершать другие действия непосредственно из уведомлений. Однако не все приложения поддерживают эту функцию.
Система UI Tuner
Для пользователей, которые предпочитают «скользящую шкалу» уведомлений приложений из предварительного просмотра, доступен режим System UI Tuner, включаемый с помощью элементов управления уведомлением Power. Инструкция пользователя «Андроид», направленная на его включение, выглядит следующим образом.
Чтобы добавить System UI Tuner в меню «Настройки», просто нажмите и удерживайте значок шестеренки в «Быстрых настройках», пока он не начнет вращаться и ваше устройство не завибрирует. Теперь вы найдете его в нижней части этого меню. Данный режим также содержит переключатель для разметки экрана и значков в
Настраиваемые быстрые настройки
Быстрые настройки в «Андроиде Нуга» также были обновлены. Вы получаете удобный список из пяти переключателей в верхней части меню уведомлений. Вы можете отредактировать порядок этого списка, чтобы выбрать только самые важные ярлыки. Маленькая стрелка с правой стороны приведет вас к полной странице подменю «Быстрые настройки», к которой вы также можете получить доступ жестом, проведя двумя пальцами вниз от верхней части экрана).
В этой версии «Андроида» также есть несколько страниц плиток. Некоторые из них мгновенно включают или отключают определенную настройку, например фонарик, режим «Не беспокоить» и «Местоположение». Другие элементы, такие как Bluetooth и Wi-Fi, можно включить при помощи доступа к мини-меню прямо в плитке «Быстрые настройки».
Длительное нажатие на вышеуказанную плитку приведет вас к экрану полного меню настроек. В нем вы можете нажать кнопку «Редактировать» в правом нижнем углу, чтобы переставить плитки или заменить их другими. Список дополнительных опций невелик: Cast, DataSaver, Invertcolors и Hotspot. Однако разработчики теперь могут создавать пользовательские плитки QuickSettings для своих приложений, что, безусловно, сделает выбор шире в ближайшие месяцы.
Многоязыковая поддержка и обои
Полезные функции Android 7.0 затронули и языковую поддержку. Теперь Nougat позволяет вам устанавливать несколько локальных языков, а также основной и дополнительный и легко переключаться между ними. Это является огромным преимуществом для двуязычных пользователей Android и частых путешественников.
Различные скины, любезно предоставленные Unicode 9, позволят вам установить любое изображение в качестве как обоев рабочего стола, так и заставки для При этом возможно разместить одну и ту же картинку в обеих настройках.
Оптимизация платформы
Обзор «Андроида 7.0 Nougat» подтверждает, что система не просто усложнилась по сравнению с предыдущими версиями. Большая работа была направлена на ускорение развития платформы. Разработчиками были внесены большие изменения: от оптимизации Chrome до появления GoogleFiber и проекта доставки дронов Wing.
Меню настроек переконфигурировано в Android 7.0, причем двумя основными изменениями являются добавление многослойного меню слева и наличие подробной информации под каждым заголовком раздела настроек. Первое из них уже знакомо пользователям: это тот же механизм, с которым вы привыкли обращаться к Google Now и к навигационному поиску во многих приложениях Google.
Хотя вы можете получить к нему доступ в любое время, как только вы попадете в подменю «Настройки», теперь вы увидите новый значок в левом верхнем углу, который заменяет кнопку «Назад». Нажмите на него (или проведите пальцем по левому краю), и вы можете сразу перейти к любой другой части меню настроек, не нажимая повторно стрелку назад.
Даже если вы не видите этот значок, например в разделе «Дополнительные параметры Wi-Fi» или на главной странице, вы все равно можете провести пальцем слева. Это удобная функция «быстрого выхода», даже если она вряд ли будет использоваться часто.
Инструкция к «Андроиду 7»: главная страница
Основная информация, содержащаяся в каждом разделе настроек, теперь отображается на главной странице. Вы сразу узнаете, к какой сети Wi-Fi или к какому устройству Bluetooth вы подключены, сколько приложений вы установили, какой объем хранилища данных вы использовали и какое время еще сможет работать ваш аккумулятор. Возможно, это незначительное дополнение, но оно дает вам важную экономию времени.
В верхней части меню «Настройки» есть новая область «Предложения», в которой вы будете периодически просматривать сообщения от системы Android о самых разных данных. Получая напоминания использовать голосовой поиск, зарегистрировать отпечаток пальца, добавить учетные записи электронной почты или изменить обои, вы можете выполнять эти действия или игнорировать предложения по своему усмотрению.
Когда вы включите режим Do Not Disturb (или несколько других параметров, таких как FlightMode), вы увидите постоянное напоминание в верхней части меню настроек, в котором вы также можете отключить его. Встроенный содержащийся в Storage > Explore, теперь слегка перекодирован и использует мозаичный макет вместо списка, представленного в Android 6.0 Marshmallow.
В Nougat, когда вы переходите на страницу сведений о приложении, которое вы установили самостоятельно, вы сможете узнать, загружено оно из Google Play или стороннего источника. Это, вероятно, не имеет большого значения для большинства пользователей, но это поможет при устранении системных ошибок или отсутствии обновлений.
Звуки и уведомления теперь имеют свои собственные выделенные области настроек, и вы можете установить свой телефон в режим «Полная тишина» с помощью переключателя «Не беспокоить» в быстрых настройках (но не с помощью кнопки регулировки громкости).
Do Not Disturb
Режим «Не беспокоить» был одной из самых сложных реализаций полезной функции в Android. Настройки Do Not Disturb позволяют вам выбирать варианты: «Полная тишина», «Только сигналы тревоги» и «Приоритет», а также устанавливать исключения. С помощью последних вы можете разрешить определенные уведомления, включить режим «Не беспокоить» в течение заданного периода времени или на неопределенный срок, создавать автоматические правила для выходных, вечеров или часов работы, а также блокировать экранные всплывающие окна.
Сохранение данных
Data Saver - это не совсем новая опция, но благодаря ей вы можете существенно усовершенствовать управление гаджетом. Эта функция позволяет запретить доступ в Интернет для фоновых приложений, когда вы подключены к сотовым данным. Вы также получите большое напоминание в верхней части меню «Настройки», когда функция «Экономия данных» будет включена.
Включение функции экономии, доступной как для переключения быстрых настроек, так и для области данных в настройках, ограничит синхронизацию фона при подключении к Wi-Fi. Разумеется, вы можете использовать белый список любых приложений, для которых вы хотите иметь неограниченный доступ к сети (например, электронную почту или WhatsApp), даже если включен DataSaver.
Бесшовные обновления
Android Nougat также представляет концепцию обновлений по умолчанию. Это означает, что новые данные для «Андроида 7» будут загружаться в и сохраняться в другом системном разделе.
После того как обновление будет загружено, при следующем запуске вашего телефона система переключит разделы, и вы мгновенно получите новые настройки, не выполняя обычный процесс загрузки, перезагрузки и установки.
Изменения в последних приложениях
Недавнее меню приложений также было слегка изменено в Android 7.0. Сама система «Андроид» теперь может удалять из списка давно неиспользуемые сервисы.
Удобная кнопка «Очистить все» добавлена в самую верхнюю часть стека карт, чтобы вы могли очистить беспорядок и сообщить системе, что она может закрыть любые связанные процессы приложений.
Полезное для разработчиков
Инструкцию к «Андроиду 7» можно завершить кратким описанием узкоспециальных дополнений. Nougat официально добавляет поддержку режима API Vulkan, который обещает быструю, плавную и лучшую визуализацию игровой графики.
Разработчики игр могут просто выбирать для более высокой производительности и сложности Vulkan или же придерживаться более простого в использовании, но менее интенсивного стандарта OpenGL.
Android Nougat также поддерживает Java 8. Данный язык на практике актуален только для разработчиков, поэтому для большинства пользователей его обновление пройдет незамеченным.
Приложение не всегда состоит из одного экрана. Например, мы создали очень полезную программу и пользователю хочется узнать, кто же её автор. Он нажимает на кнопку «О программе» и попадает на новый экран, где находится полезная информация о версии программы, авторе, адресе сайта, сколько у автора котов и т.д. Воспринимайте экран активности как веб-страницу с ссылкой на другую страницу. Если вы посмотрите на код в файле MainActivity.java из прошлых уроков, то увидите, что наш класс MainActivity тоже относится к Activity (или его наследникам) или, если говорить точнее, наследуется от него.
Public class MainActivity extends AppCompatActivity
Как нетрудно догадаться, нам следует создать новый класс, который может быть похож на MainActivity и затем как-то переключиться на него при нажатии кнопки.
Для эксперимента мы возьмем программу из первого урока и будем использовать для опытов кнопку (или создайте новый проект с одной кнопкой на экране). Далее создадим новую форму для отображения полезной информации. Например, покажем пользователю, что делает кот, когда идёт налево и направо. Согласитесь, это очень важная информация, дающая ключ к разгадке Вселенной.
Создавать новую активность будем вручную, хотя в студии есть готовые шаблоны. Но там ничего сложного и для лучшего понимания полезно всё делать руками.
Создадим новый XML-файл разметки activity_about.xml в папке res/layout . Щёлкните правой кнопкой мыши на папке layout и выберите из контекстного меню New | Layout resource file . Появится диалоговое окно. В первом поле вводим имя файла activity_about . Во втором нужно ввести корневой элемент. По умолчанию там стоит ConstraintLayout . Стираем текст и вводим ScrollView . Ввода нескольких символов достаточно, чтобы студия подсказала готовые варианты, можно сразу нажать Enter, не дожидаясь полного ввода слова:
Получится соответствующая заготовка, в которую вставим элемент TextView .
Информация будет извлекаться из ресурсов, а именно из строкового ресурса about_text . Сейчас он подсвечен красным цветом, сигнализируя об отсутствии информации. Можно было нажать Alt+Enter и ввести текст в диалоговом окне. Но для нашего примера этот способ не подойдёт, так как наш текст будет многострочным, с использованием управляющих символов. Поэтому поступим по-другому. Откроем файл res/values/strings.xml и вводим следующий текст вручную:
Мы использовали простейшие HTML-теги форматирования текста типа , , . Для нашего примера достаточно выделить жирным слова, которые относятся к коту и направлению движения. Для перевода текста на новую строку используйте символы \n . Добавим ещё один строковый ресурс для заголовка нового экрана:
С разметкой разобрались. Далее необходимо создать класс для окна AboutActivity.java . Выбираем в меню File | New | Java Class и заполняем нужные поля. На первых порах достаточно указать только имя. Потом разберётесь с другими полями.
Получим заготовку.
Сейчас класс практически пустой. Добавим код вручную. Класс должен наследоваться от абстрактного класса Activity или его родственников типа FragmentActivity , AppCompatActivity и т.д. Дописываем extends Activity . У класса активности должен быть метод onCreate() . Ставим курсор мыши внутри класса и выбираем в меню Code | Override Methods (Ctrl+O). В диалоговом окне ищем нужный класс, можно набирать на клавиатуре первые символы для быстрого поиска. В созданном методе нужно вызвать метод setContentView() , который подгрузит на экран подготовленную разметку. У нас получится такой вариант.
Package ru.alexanderklimov.helloworld; import android.app.Activity; import android.os.Bundle; /** * Created by Alexander Klimov on 01.12.2014. */ public class AboutActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); } }
Теперь начинается самое главное. Наша задача - перейти на новый экран при щелчку кнопки на первом экране. Переходим обратно к классу MainActivity . Напишем обработчик щелчка кнопки:
Public void onClick(View view) { Intent intent = new Intent(MainActivity.this, AboutActivity.class); startActivity(intent); }
Здесь я использовал способ обработки нажатия кнопки, о котором рассказывалось в занятии .
Для запуска нового экрана необходимо создать экземпляр класса Intent и указать в первом параметре текущий класс, а во втором - класс для перехода, у нас это AboutActivity . После этого вызывается метод startActivity() , который и запускает новый экран.
Если вы сейчас попытаетесь проверить работу приложения в эмуляторе, то получите сообщение об ошибке. Что мы сделали неправильно? Мы пропустили один важный шаг. Необходимо зарегистрировать новый Activity
в манифесте AndroidManifest.xml
. Найдите этот файл в своем проекте и дважды щёлкните на нём. Откроется окно редактирования файла. Добавьте новый тег
Вот и пригодился строковый ресурс about_title . Запускаем приложение, щёлкаем на кнопке и получаем окно О программе . Таким образом мы научились создавать новое окно и вызывать его по щелчку кнопки. А в нашем распоряжении появилась мегаудобная программа - теперь всегда под рукой будет подсказка, что делает кот, когда идёт налево.
Ещё раз обращаю внимание, что второй создаваемый класс активности должен наследоваться от класса Activity или ему похожих (ListActivity и др.), иметь XML-файл разметки (если требуется) и быть прописан в манифесте.
После вызова метода startActivity() запустится новая активность (в данном случае AboutActivity ), она станет видимой и переместится на вершину стека, содержащего работающие компоненты. При вызове метода finish() из новой активности (или при нажатии аппаратной клавиши возврата) она будет закрыта и удалена из стека. Разработчик также может перемещаться к предыдущей (или к любой другой) активности, используя всё тот же метод startActivity() .
Создаём третий экран - способ для ленивых
Программисты, как и коты, существа ленивые. Постоянно помнить, что для активности нужно создать разметку и класс, который наследуется от Activity , а затем не забыть прописать класс в манифесте - да ну нафиг.
В этом случае выберите в меню File | New | Activity | Basic Activity (или другой шаблон). Дальше появится знакомое вам окно создания новой активности. Заполняем необходимые поля.
Нажимаем на кнопку Finish и активность будет готова. Чтобы убедиться в этом, откройте файл манифеста и проверьте наличие новой записи. Про файлы класса и разметки я уже не говорю, они сами появятся перед вами.
Самостоятельно добавьте новую кнопку на экране главной активности и напишите код для перехода на созданную активность.
На первых порах я бы посоветовал вам вручную создавать все необходимые компоненты для новой активности, чтобы понимать взаимосвязь между классом, разметкой и манифестом. А когда набьёте руку, то можете использовать мастер создания активности для ускорения работы.
Передача данных между активностями
Мы использовали простейший пример для вызова другого экрана активности. Иногда требуется не только вызвать новый экран, но и передать в него данные. Например, имя пользователя. В этом случае нужно задействовать специальную область extraData , который имеется у класса Intent .
Область extraData - это список пар ключ/значение , который передаётся вместе с намерением. В качестве ключей используются строки, а для значений можно использовать любые примитивные типы данных, массивы примитивов, объекты класса Bundle и др.
Для передачи данных в другую активность используется метод putExtra() :
Intent.putExtra("Ключ", "Значение");
Принимающая активность должна вызвать какой-нибудь подходящий метод: getIntExtra() , getStringExtra() и т.д.:
Int count = getIntent().getIntExtra("name", 0);
Переделаем предыдущий пример. У нас уже есть три активности. У первой активности разместим два текстовых поля и кнопку. Внешний вид может быть следующим:
У второй активности SecondActivity установим элемент TextView , в котором будем выводить текст, полученный от первой активности. Напишем следующий код для метода onCreate() у второй активности.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); String user = "ЖЫвотное"; String gift = "дырку от бублика"; TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(user + " , вам передали " + gift); }
Если сейчас запустить программу и просто вызвать второе окно, как это было описано в первой части статьи, то мы увидим надпись по умолчанию ЖЫвотное, вам передали дырку от бублика . Согласитесь, довольно обидно получать такие сообщения.
Исправляем ситуацию. Добавляем код у первой активности:
Public void onClick(View view) { EditText userEditText = (EditText) findViewById(R.id.editTextUser); EditText giftEditText = (EditText) findViewById(R.id.editTextGift); Intent intent = new Intent(MainActivity.this, SecondActivity.class); // в ключ username пихаем текст из первого текстового поля intent.putExtra("username", userEditText.getText().toString()); // в ключ gift пихаем текст из второго текстового поля intent.putExtra("gift", giftEditText.getText().toString()); startActivity(intent); }
Мы поместили в специальный контейнер объекта Intent два ключа со значениями, которые берутся из текстовых полей. Когда пользователь введёт данные в текстовые поля, они попадут в этот контейнер и будут переданы второй активности.
Вторая активность должна быть готова к тёплому приёму сообщений следующим образом (выделено жирным).
// Значения по умолчанию String user = "ЖЫвотное"; String gift = "дырку от бублика"; user = getIntent().getExtras().getString("username"); gift = getIntent().getExtras().getString("gift"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(user + " , вам передали " + gift);
Теперь сообщение выглядит не столь обидным, а даже приятным для кое-кого. В сложных примерах желательно добавить проверку при обработке данных. Возможны ситуации, когда вы запустите вторую активность с пустыми данными типа null , что может привести к краху приложения.
В нашем случае мы знаем, что ждём строковое значение, поэтому код можно переписать так:
Intent intent = getIntent(); user = intent.getStringExtra("username");
User = getIntent().getStringExtra("username");
У программы есть недостаток - не понятно, от кого мы получаем приветы. Любая хорошо воспитанная мартышка не возьмет подарок от анонимного источника. Поэтому в качестве домашнего задания добавьте ещё одно текстовое поле для ввода имени пользователя, который отправляет сообщение.
Google рекомендует для ключей использовать следующий формат: имя вашего пакета в качестве префикса, а затем сам ключ. В этом случае можно быть уверенным в уникальности ключа при взаимодействии с другими приложениями. Приблизительно так:
Public final static String USER = "ru.alexanderklimov.myapp.USER";
Кто подставил кота Ваську - получаем результат обратно
Не всегда бывает достаточно просто передать данные другой активности. Иногда требуется получить информацию обратно от другой активности при её закрытии. Если раньше мы использовали метод startActivity(Intent intent) , то существует родственный ему метод startActivityForResult(Intent intent, int RequestCode) . Разница между методами заключается в дополнительном параметре RequestCode . По сути это просто целое число, которое вы можете сами придумать. Оно нужно для того, чтобы различать от кого пришёл результат. Допустим у вас есть пять дополнительных экранов и вы присваиваете им значения от 1 до 5, и по этому коду вы сможете определить, чей результат вам нужно обрабатывать. Вы можете использовать значение -1, тогда это будет равносильно вызову метода startActivity() , т.е. никакого результата не получим.
Если вы используете метод startActivityForResult() , то вам необходимо переопределить в коде метод для приёма результата onActivityResult() и обработать полученный результат. Запутались? Давайте разберём пример.
Предположим, вы сыщик. Поступила информация, что в ресторане со стола влиятельного человека украли два кусочка колбасы и другие продукты. Подозрение пало на трёх подозреваемых - ворона, сраный пёсик и кот Васька.
Один из посетителей предоставил серию фотографий со своего понтового айфона:
Также имеются показания другого свидетеля: А Васька слушает, да ест .
Создаём новый проект Sherlock с двумя активностями. На первом экране будет кнопка для переключения на второй экран и текстовая метка, в которой будет отображено имя воришки.
На втором экране будет группа переключателей:
Так как мы будем ожидать ответ из второго экрана, то нам необходимо задействовать метод startActivityForResult() на первом экране, в котором мы передадим переменную CHOOSE_THIEF в качестве параметра RequestCode .
Static final private int CHOOSE_THIEF = 0; public void onClick(View v) { Intent questionIntent = new Intent(MainActivity.this, ChooseActivity.class); startActivityForResult(questionIntent, CHOOSE_THIEF); }
Посмотрите на код. При щелчке на кнопке мы собираемся работать со вторым экраном ChooseActivity и запускаем второй экран с ожиданием результата.
Переходим на второй экран и будем писать код для второй активности.
Public final static String THIEF = "ru.alexanderklimov.sherlock.THIEF"; public void onRadioClick(View v) { Intent answerIntent = new Intent(); switch (v.getId()) { case R.id.radioDog: answerIntent.putExtra(THIEF, "Сраный пёсик"); break; case R.id.radioCrow: answerIntent.putExtra(THIEF, "Ворона"); break; case R.id.radioCat: answerIntent.putExtra(THIEF, "Лошадь Пржевальского"); break; default: break; } setResult(RESULT_OK, answerIntent); finish(); }
Здесь всё просто, когда сыщик выбирает имя преступника, то через метод putExtra() мы передаём имя ключа и его значение.
Для удобства, после выбора мы сразу закрываем второе окно и перед закрытием передаём значение RESULT_OK , чтобы было понятно, что выбор сделан. Если пользователь закроет экран через кнопку Back, то будет передано значение RESULT_CANCELED .
Метод setResult() принимает два параметра: результирующий код и сам результат, представленный в виде намерения. Результирующий код говорит о том, с каким результатом завершилась работа активности, как правило, это либо Activity.RESULT_OK , либо Activity.RESULT_CANCELED . В некоторых случаях нужно использовать собственный код возврата для обработки специфических для вашего приложения вариантов. Метод setResult() поддерживает любое целочисленное значение.
Если вы будете передавать данные явно через кнопку, то неплохо бы добавить метод finish() , чтобы закрыть вторую активность за ненадобностью. Если переход происходит через кнопку Назад, то это делать не обязательно.
Если активность была закрыта пользователем при нажатии аппаратной кнопки возврата или если метод finish() был вызван раньше, чем метод setResult() , результирующий код установится в RESULT_CANCELED , а возвращенное намерение покажет значение null .
Возвращаемся на первый экран. Первый экран ожидает ответа от второго экрана, поэтому нужно добавить в код метод onActivityResult() .
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); TextView infoTextView = (TextView) findViewById(R.id.textViewInfo); if (requestCode == CHOOSE_THIEF) { if (resultCode == RESULT_OK) { String thiefname = data.getStringExtra(ChooseActivity.THIEF); infoTextView.setText(thiefname); }else { infoTextView.setText(""); // стираем текст } } }
Метод ожидает входящие данные с кодом CHOOSE_THIEF , и если такие данные поступят, то извлекает значение из ключа ChooseActivity.THIEF с помощью метода getStringExtra . Полученное значение мы выводим в TextView (переменная infoTextView ). Если мы вернулись на экран через кнопку Back, то просто стираем текст.
При закрытии дочерней активности внутри родительского компонента срабатывает обработчик onActivityResult() . Обработчик onActivityResult() принимает несколько параметров.
- Код запроса. Код, который использовался для запуска активности, возвращающей результат
- Результирующий код. Код результата, устанавливаемый дочерней активностью и указывающий, как завершилась её работа. Это может быть любое целочисленное значение, но, как правило, либо Activity.RESULT_OK , либо Activity.RESULT_CANCELED
- Данные. Намерение, используемое для упаковки возвращаемых данных. В зависимости от назначения дочерней активности оно может включать путь URI, представляющий выбранную часть содержимого. В качестве альтернативы (или дополнения) дочерняя активность может возвращать информацию в виде простых значений, упакованных в параметр намерения extras
Если работа дочерней активности завершилась непредвиденно или если перед её закрытием не был указан код результата, этот параметр станет равен Activity.RESULT_CANCELED .
Запускаем проект, нажимаем на кнопку и переходим на второй экран. Там выбираем один из вариантов. Если выбрать ворону, то экран закроется и имя преступника отобразится на первом экране. Если выбрать пёсика, то отобразится его имя.
Между прочим, если выбрать котика, то его имя не отобразится! Проверьте и убедитесь сами. Вы спросите почему? Элементарно, Ватсон! Преступник не учёл одной важной детали. В ресторане велось наблюдение с видеокамер, и запись показала, кто на самом деле украл колбаску и подставил кота. Васька, держись!
P.S. Если поначалу что-то показалось непонятным, то с практикой многое прояснится. Передача данных между экранами часто встречается в приложениях и вы ещё не раз изучите пример.
P.P.S. Лучшая рыба - колбаса. Зная эту слабость, нетрудно было подставить кота.
Используем фильтры
В статье я показывал распространённый способ перехода на другую активность, когда в методе startActivity() указывается текущий класс и класс для перехода. Кстати, класс активности не обязательно должен быть частью вашего приложения. Если вы знаете имя класса из другого приложения, то можете перейти и на него. Но можно перейти в другую активность другим способом.
На практике встречается реже, но может пригодиться. Допустим, у вас уже есть вторая активность. В манифесте добавим к ней специальный фильтр:
И запускаем вторую активность через щелчок кнопки таким способом.
Public void onClick(View view) { startActivity(new Intent("ru.alexanderklimov.testapplication.SecondActivity")); }
Заменим длинную строку на константу.
Public static final String ACTION_SECOND_ACTIVITY = "ru.alexanderklimov.testapplication.SecondActivity"; public void onClick(View view) { startActivity(new Intent(ACTION_SECOND_ACTIVITY)); }
Итак, что мы сделали. Для второй активности мы прописали фильтр и указали имя для action в атрибуте android:name . Для удобства я просто поместил в него полное имя активности с названием пакета. Конструктор класса Intent имеет несколько перегруженных версий. В одной из версий можно указать строку для действия. Мы указали своё созданное действие, которое прописано у второй активности. Система во время работы просматривает манифесты всех установленных приложений. При поиске соответствия система находит наш фильтр и запускает нужную активность.
По такому же принципу можно запустить другие активности. Посмотрите на пример . Если вы скопируете пример к себе и посмотрите на документацию по android.provider.Settings.ACTION_AIRPLANE_MODE_SETTINGS , то увидите, что этому коду соответствует строковая константа public static final java.lang.String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS" . Сравните с нашим кодом. Вы можете предположить, что у активности настроек для автономного режима в фильтре прописана эта строка.
Имя категории фильтра android.intent.category.DEFAULT говорит системе, что следует выполнить действие по умолчанию, а именно, запустить активность. Существует и другие имена, которые пока нас не интересуют.
А теперь вопрос на засыпку. Что произойдёт, если создать ещё одну активность и указать такой же фильтр, как у второй активности? А давайте проверим. Создайте у себя третью активность и скопируйте блок с фильтром от второй активности в него.
Щёлкаем по кнопке в первой активности. Система попросит выбрать нужный вариант.
Если вы выберите пункт ALWAYS , то в следующий раз выбирать не придётся. Чтобы сбросить выбор, зайдите в свойства приложения в Настройках и найдите кнопку Clear defaults .
24 марта 2015Введение
Операционная система Андроид (Android) на сегодняшний день по распространенности едва ли уступает Windows. Она используется более чем в 90% процентах смартфонов и планшетов. Отличительная особенность ее пользовательского (графического) интерфейса заключается в том, что он разработан для использования без клавиатуры и мыши - только лишь с экраном который реагирует на прикосновения пальцев (тачскрин).
В целом управление Андроид несложно.
Эта инструкция в некоторых деталях может не совпадать интерфейсом Андроид на конкретном устройстве. Дело в том, что некоторые производители устройств изменяют стандартный интерфейс Андроид. Особенно большие изменения делает Самсунг.
Тем не менее, общие принципы организации интерфейса сохраняются.
Разблокировка экрана и Рабочий стол Андроид
Первое что вы увидите включив ваше устройство это экран разблокировки:
Нужно коснуться пальцем изображения замка и не отпуская пальца перетащить его вправо, на границу круга и там отпустить:
На некоторых устройствах вместо изображения замка может быть другое. Но принцип остается тот же - нужно провести пальцем по экрану.
После разблокировки экрана откроется рабочий стол на котором сосредоточены все элементы управления:
В самом низу экрана расположена статусная строка и системный трей - они черного цвета. В статусной строке размещены главные кнопки управления, слева направо:
- Кнопка "Назад". Возврат в предыдущее окно активной программы. Если у программы одно окно эта кнопка закрывает программу.
- Кнопка "Домой". Возврат на рабочий стол. Сворачивает активную программу и открывает рабочий стол.
- Кнопка "Свап". Открывает превью всех запущенных программ. Благодаря этому можно удобно переключаться между работающими программами.
- Кнопка "Окно". Меню активной программы. Открывает меню с командами той программы которая сейчас активна.
- Регулировка громкости динамика.
- Сделать скриншот экрана.
Примечание. На некоторых устройствах в статусной строке может не быть кнопок громкости и скриншота.
В правом конце статусной строки находится системный трей. В нем отображаются сообщения программ, иконки программ. Если коснуться трея, то откроется меню с быстрыми настройками:
Примечание. Не на всех устройствах при касании трея открывается меню быстрыми настройками. У некоторых производителей такого меню может не быть. Или оно может открываться иначе, например движением пальца от верхней границы экрана.
Чуть выше статусной строки находится лончер с ярлыками избранных программ.
Тачскрин Андроид
Все управление программами и самим Андроидом осуществляется через прикосновения к экрану. Андроид разделяет прикосновения (еще их называют жесты) по их характеру:
- Быстрое прикосновение (прикоснуться и сразу убрать палец) - аналогично компьютерному двойному клику мыши или нажатию enter. Выполняет операцию по умолчанию, например запускает программу или открывает файл.
- "Длинное" прикосновение (прикоснуться и удерживать палец) - аналогично компьютерному клику правой кнопки мыши - предлагает дополнительные операции. Или выделяет текст, файл, элемент.
- "Масштабирование" - прикосновение двумя пальцами одновременно и затем их движение навстречу другу другу или наоборот. Увеличивает или уменьшает шрифт в документе или размер картинки.
- "Прокрутка" - скользящее движение пальца поперек или вдоль экрана. Отображает элементы которые скрыты за границами экрана. Например список файлов, следующая картинка в галерее, следующая страница документа.
Работа с файлами в Андроид
Открытие, копирование и удаление файлов в Андроид выполняется также как и в любой другой ОС - через специальную программу файловый менеджер. Есть много таких программ для Андроид. Файловый менеджер, который идет в комплекте с Андроид, прост в обращении:
В верхней панели кнопки которые показывают папку в которой вы сейчас находитесь. И кнопки доступных операций. Быстрое прикосновение к папке открывает эту папку. Быстрое прикосновение к файлу открывает этот файл. Если вам нужно выделить файлы (папки) для копирования или удаления, нужно сделать длинное прикосновение на одном файлов и когда он выделится, выделить остальные:
Выделенные файлы можно удалить, скопировать, вырезать или отправить через Bluetooth или WiFi. Если вам нужно скопировать или перенести файлы, то после их выделения и копирования (вырезания) нужно перейти в другую папку и там нажать кнопку "Вставить".
Если нужно выделить все файлы в папке, это делается следующим образом:
Вначале выбираете первый файл (длинным тапом), Затем касаетесь кнопки "Выбрано". Откроется дополнительная кнопка "Выбрать все".
Программы можно запустить через ярлыки в лончере или на рабочем столе, а также через главное меню Андроид.
Если коснуться на значке меню программ в лончере - откроется меню программ:
На одном экране могут не вместиться все установленные программы. Для прокрутки меню нужно сделать скользящее движение пальцем справа налево.
Если сделать короткое касание ярлыка программы, она будет запущена. Если коснуться и удерживать палец, через некоторое время станет виден рабочий стол и можно будет движением пальца переместить ярлык на рабочий стол.
Если коснуться кнопки перехода между программами - .
Откроется экран в котором будут превью всех работающих программ:
На этом экране нужно коснуться нужной программы.
Если окошко программы быстро сдвинуть вниз программа будет закрыта.
Как закрыть программу в Андроид
Первый способ. Нажать кнопку "Назад" - в панели задач Андроид. Но если это программа с несколькими окнам, например браузер, пользоваться этой кнопкой неудобно. Кроме того на самом деле программа не закрывается, ее становится не видно, но она продолжает оставаться в оперативной памяти.
Второй способ. Нажать кнопку "Окно" - .
Если у программы есть главное меню, в нем может быть команда выход или закрыть:
Или такое меню программы:
Третий способ. Нажать кнопку "Свап" - в панели задач Андроид. Затем найти превью окна и сдвинуть его вниз:
Четвертый способ. Открыть настройки системы, перейти на вкладку приложения, затем открыть вкладку "Работающие" программы и коснуться нужной программы:
и в новом экране нажать кнопку "Остановить":
Установка программ на Андроид
Подключение к Интернет на Андроид
На большинстве андроид устройств подключиться к Интернет можно через сети сотовых операторов или WiFi. Оба этих способа доступны через настройки устройства - раздел Беспроводные сети.
Если нужно переключиться с WiFi на 3G или наоборот, предварительно нужно отключить текущий источник Интернет и уже затем включать другой.
Клавиатура в Андроид появляется на экране автоматически когда вы прикасаетесь в полю для ввода данных:
Клавиатура, которая идет в комплекте с Андроид, не очень удобна. На ней цифровые клавиши и клавиши специальных символов перенесены в другой набор, на который нужно переключаться. Кроме того на ней нет клавиш со стрелками для перемещения курсора и нет клавиш Alt, Ctrl. Второй набор символов:
И третий набор символов:
Как видите, если вам понадобятся фигурные скобки, то придется сменить два набора клавиш, для того чтобы добраться до них.
Однако в Андроид клавиатура это программа и это значит что ее можно заменить на другую. Например на Hacker"s Keyboard :
Она почти как настоящая клавиатура. Самое главное - на ней есть клавиши-стрелки для перемещения курсора. Это очень удобно потому что перемещать курсор на несколько символов при помощи пальца или графического ползунка это ад. Но поскольку клавиш на ней больше, их размер меньше и работать с ней нужно аккуратнее.
Для переключения языков, на клавиатуре Hacker"s Keyboard, нужно провести пальцем по клавише пробел.
Переключение между разными клавиатурами выполняется в настройках Андроид:
Выделение и копирование текста в Андроид
При активной работе с текстами на компьютерном устройстве рано или поздно возникнет необходимость в копировании текста и переносе его в другую программу (документ). В обычных ОС это делается легко - контекстное меню или Ctrl + C. В Андроид сложнее. Вначале нужно на каком-то слове из фрагмента, который вы хотите скопировать, быстро, дважды прикоснуться к экрану. Слово будет выделено и появятся два ползунка:
Удерживая пальцем ползунок вы можете переместить его и таким образом выделить столько текста сколько вам необходимо. После этого нужно прикоснуться к выделенному тексту и не отпускать палец пока не появится меню:
В котором нужно выбрать "Копировать". В разных программах такое меню может выглядеть по разному. Например вместо текста могут быть иконки.
Затем переходите в ту программу (документ) куда нужно вставить текст и в нужном месте прикасаетесь к экрану и держите палец пока не появится аналогичное меню, но в нем соответственно выбираете "Вставить".
Конечно, копировать текст в Андроиде неудобно. Но на безрыбье и рак рыба.
Резюме
Конечно в полной мере устройство под управлением Андроид не может заменить полноценный компьютер, тем не менее, худо-бедно, но распространенные виды работ на нем выполнять можно. Вплоть до редактирования простых файлов MS Word, Excel.
Если ваше Андроид-устройство поддерживает режим USB-Host (OTG) тогда к нему можно подключить USB мышь и клавиатуру и уже будет намного легче работать с текстом.