I. Графический интерфейс пользователя

Приложение будет иметь вид, представленный на рисунке 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 и зачем?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: