Опубликован: 06.05.2014 | Уровень: для всех | Доступ: платный
Самостоятельная работа 5:

Использование мобильной связи в приложениях для смартфона

< Лекция 5 || Самостоятельная работа 5: 12 || Лекция 6 >
Аннотация: Цель лабораторной работы научиться работать с мобильной связью в приложениях для смартфона.

Задачи лабораторной работы

  • Разработать приложение, которое может звонить по телефонным номерам.
  • Проанализировать работу этого приложения на смартфоне.

Инструкции по выполнению лабораторной работы

Приложение, описанное ниже, позволяет выполня ть телефонные звонки через встроенное приложение для звонков, используя при этом собственный список контактов. Конечно, то же самое можно сделать вручную или добавить эти номера в адресную книгу телефона. Однако описанный способ может пригодится в некоторых ситуациях, например, в качестве части внутреннего приложения для хранения заранее определенного списка номеров сотрудников компании. В этом случае пользователь, используя корпоративное приложение, может вызывать нужные номера со своего личного смартфона, не добавляя контакты в адресную книгу. В некоторых случаях таких номеров может быть очень много, и специальное приложение позволит использовать рабочий справочник, не смешивая служебную информацию с личной.

Мы создадим приложение, содержащее несколько кнопок. Нажатие на кнопку вызывает конкретный телефонный номер, проассоциированный с ней. Для простоты понимания в программе не используются базы данных, все нужные сведения "защиты" в код приложения. При желании несложно доработать программу и вынести эту информацию в отдельный файл.

Создайте проект SimpleDialer. Рекомендуемые настройки см. на рис. 10.1

Создание нового приложения

увеличить изображение
Рис. 10.1. Создание нового приложения

Добавьте следующую строчку в файл strings.xml:

<string name="main_label">My Friends</string> 

В файле layout.xml создайте объекты TextView и шесть кнопок:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      android:padding="15dip" >
<TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
         android:layout_marginBottom="25dip"
         android:text="@string/main_label"
         android:textSize="22sp" />
<Button
         android:id="@+id/button1"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:textSize="18sp" />
…//здесь добавить описания остальных кнопок
</LinearLayout>
 

Перейдите в файл MainActivity.java. Создайте переменную для хранения числа записей и два массива строк:

private int entries = 6;
private String phoneNum[];
private String buttonLabels[];
 

Так как кнопки будут реагировать на нажатие, добавьте в заголовок класса implements OnClickListener (нужно также добавить import android.view.View.OnClickListener;).

В методе onCreate() пропишите:

phoneNum = new String[entries];
buttonLabels = new String[entries];
 

и создайте шесть кнопок:

 Button button1 = (Button)findViewById(R.id.button1);
             button1.setText(buttonLabels[0]);
             button1.setOnClickListener(this);

             Button button2 = (Button)findViewById(R.id.button2);
             button2.setText(buttonLabels[1]);
             button2.setOnClickListener(this)
…

Создайте новый метод lunchDialer():

public void launchDialer(String number){
             String numberToDial = "tel:"+number;
             startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));
 }
 

Данный метод отвечает за вызов встроенного телефонного приложения, которое позволяет совершать звонки. Он получает номер телефона в качестве параметра и создает специально отформатированную строку numberToDial, которая является универсальным идентификатором (Uniform Resource Identifier). Далее создается новый интент со стандартным действием ACTION_DIAL (звонок), который используется для старта активности, отвечающей за звонки.

Заполните массивы через метод populateArrays()(не забудьте вызвать его в начале):

public void populateArrays(){
		  phoneNum[0] = "123-456-78-90";
		  phoneNum[1] = "234-567-89-01";
		  phoneNum[2] = "345-678-90-12";
		  phoneNum[3] = "456-789-01-23";
		  phoneNum[4] = "567-890-12-34";
		  phoneNum[5] = "678-901-23-45"; 
                  buttonLabels[0] = "Иванов Ваня";
                  buttonLabels[1] = "Петров Петя";
                  buttonLabels[2] = "Семеныч Сеня";
                  buttonLabels[3] = "Кузнецова Катя";
                  buttonLabels[4] = "Смирнова Саша";
                  buttonLabels[5] = "Попова Полина";
         }
 

Далее опишите метод onClick():

@Override
         public void onClick(View v) {
                  switch (v.getId()) {   
                  case R.id.button1:
                           launchDialer(phoneNum[0]);
                           break;
                  case R.id.button2:
                           launchDialer(phoneNum[1]);
                           break;
                  case R.id.button3:
                           launchDialer(phoneNum[2]);
                           break;
                  case R.id.button4:
                           launchDialer(phoneNum[3]);
                           break;
                  case R.id.button5:
                           launchDialer(phoneNum[4]);
                           break;
                    case R.id.button6:
                           launchDialer(phoneNum[5]);
                           break;
                  }
 
< Лекция 5 || Самостоятельная работа 5: 12 || Лекция 6 >
Александр Коновалов
Александр Коновалов
Олег Литовка
Олег Литовка
Украина