Приложение будет иметь вид, представленный на рисунке 31.
Рисунок 31 – Экран приложения
Для этого необходимо разработать графический интерфейс пользователя, используя навыки, полученные в лабораторной работе №5.
Примечание 5: Изображения режимов и ярлычок приложения находятся в папке к лабораторной работе №6.
II. Код приложения
Точкой входа в приложение (начало жизненного цикла) служит метод onCreate() в классе MainActivity.
При создании пустого проекта код файла MainActivity.java выглядит следующим образом:
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Здесь будет вызов метода обработчика события
}
}
Объект Bundle в методе onCreate() предоставляет способ передачи информации между разными компоновками экрана и деятельностями.
Инструкция setContentView(R.layout.main); служит для того, чтобы система отобразила пользовательский интерфейс на экране устройства.
Чтобы приложение отреагировало на прикосновение к кнопке необходимо создать обработчик события. Для этого необходимо создать метод приёмника щелчка кнопки, например таким образом:
|
|
private void buttonClick() {
Button btn = (Button) findViewById (R.id.btn);
btn.setOnClickListener (new View.onClickListener() {
public void onClick(View v) {
//код обработки события щелчка
}
})
}
Вторая строка приведённого выше кода создаёт объект класса Button, используя метод findViewById(R.id.btn). Данный метод позволяет найти в компоновке деятельности некоторое представление View и произвести с ним некоторое действие (в данном примере – привести к классу Button). Аналогично можно работать с изображениями пользовательского интерфейса.
Установка обработчика события выполняется путём создания приёмника View.onClickListener(), который содержит метод onClick(View v).
Примечание 6: при использовании виджетов в приложении необходимо импортировать содержимое пакета android.widget.*.
Изменение изображения по нажатию кнопки на экране можно реализовать c помощью методов:
newImage = getResources().getDrawable(R.drawable.phone_on);
image.setImageDrawable(newImage);
где новое изображение Drawable newImage извлекается из компоновки первой строчкой кода и обновляется на экране второй строчкой. А image является объектом класса ImageView.
Чтобы получить доступ к звонку мобильного телефона, необходимо применить базовый класс операционной системы AudioManager, который отвечает за управление состоянием звонка. Необходимо создать переменную private типа, являющуюся объектом класса AudioManager, инициализация которой будет производиться в методе onCreate() путём обращения к системной службе вызовом метода getSystemService().
Например:
public class MainActivity extends Activity{
private AudioManager varAudio;
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
|
|
varAudio =
(AudioManager)getSystemService(AUDIO_SERVICE)
…
}
}
Для изменения режима звонка используется метод setRingerMode() класса AudioManager. Параметром метода является состояние звонка:
AudioManager. RINGER_MODE_NORMAL – нормальный режим;
AudioManager. RINGER_MODE_SILENT – бесшумный режим;
представляющее собой переменную целого типа.
Для установки текущего режима звонка и изображения можно ввести булеву переменную, например:
boolean isPhoneOff;
начальное значение которой false.
Пример:
if (isPhoneOff) {
varAudio. setRingerMode(AudioManager. RINGER_MODE_NORMAL);
isPhoneOff = false;
} else {
varAudio. setRingerMode(AudioManager. RINGER_MODE_SILENT);
isPhoneOff = true;
}
Примечание 7: для использования объектов класса AudioManager в приложении необходимо импортировать содержимое пакета android.media.AudioManager.
Получить информацию о текущем состоянии звонка можно с помощью метода getRingerMode(), который не имеет входных параметров и возвращает целый тип данных, соответствующий состоянию звонка.
Пример:
int ringerMode = varAudio. getRingerMode();
Задание:
Создать приложение Android “Signal Phone Mode” для переключения режима сигнала телефона в бесшумный и обратно. Приложение содержит кнопку переключения и значок режима и обращается к базовому классу Android AudioManager.
Порядок выполнения работы:
1. Запустить среду Eclipse, установленную на компьютере.
2. Создать новый проект Android. Указать его название “Signal Phone Mode” и местоположение (перед созданием проекта закрыть все файлы, открытые в рабочей среде Eclipse).
3. Поместить в папку проекта res\drawable-mdpi\ три значка (ic_launcher.png, phone_on.png, phone_silent.png), приложенные к данной лабораторной работе (перезаписать стандартный значок приложения Android).
4. Добавить изображение phone_onв разметку XML проекта. Для этого создать в файле main.xml элемент ImageView и добавить в него ссылку на изображение. В классе ImageView определить атрибуты:
· id – идентификатор представления;
· layout_width – ширина;
· layout_height - высота;
· layout_gravity – размещение по горизонтали и вертикали;
· src – задание файла изображения.
5. Добавить кнопку – в файле main.xml создать элемент Button и задать его атрибуты.
6. Изменить фон приложения на белый (или другой по своему усмотрению).
7. Создать обработчик события нажатия кнопки (для начала по нажатию кнопки пусть изменяется иконка phone_onнаphone_silentи наоборот).
8. Добавить в метод onClick(View v) код, изменяющий режим звонка, с использованием атрибутов и методов базового класса AudioManager.
9. Отладить программу. Получить результаты на симуляторе Android.
10. Оформить отчёт.
11. Сдать работу.
Содержание отчёта:
1. Номер, название и цель лабораторной работы.
2. Текст программы.
3. XML-файлы.
4. Результаты работы программы со скриншотами.
5. Описание полученных результатов.
6. Вывод.
Контрольные вопросы:
1. Какие элементы пользовательского интерфейса вы знаете?
2. Как описать атрибуты интерфейса в XML?
3. Что такое обработчик события?
4. Что такое представление View?
5. Для чего служит метод findViewById(R.id.*), что является его параметром?
6. Для чего нужна инструкция setContentView(R.layout.main)?
7. Какие пакеты необходимо импортировать для приложений Android и зачем?