lect13_4

advertisement
Как отправить SMS?
1. В файле AndroidManifest.xml нужно прописать разрешение:
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
Пользователь будет предупрежден при установке приложения, что
приложение требует разрешить отправлять SMS.
2. В том месте программы, где нужно отправить SMS, пишем:
String s = "Privet, papa!";
String number = "0506416117";
SmsManager.getDefault().sendTextMessage(number, null, s, null,null);
Android
Работа с Bluetooth
Основные возможности работы с Bluetooth на Android:
1. Обнаружение работающих устройств с Bluetooth
2. Отправка запроса на другое устройство для установления
связи через Bluetooth
3. Организация канала RFCOMM (простой транспортный
протокол, поддерживающий одновременно до 60 соединений
между двумя устройствами Bluetooth)
4. Установка соединения с другими устройствами с помощью
сервисов
5. Передача данных на другие устройства
6. Получение данных с других устройств
7. Поддержка соединений одновременно с несколькими
устройствами
Некоторые классы пакета android.bluetooth:
1. BluetoothAdapter - отвечает за работу с установленным в телефоне
Bluetooth модулем.
2. BluetoothDevice - класс, ассоциирующийся с Bluetooth устройством на
чужом телефоне.
3. BluetoothSocket - интерфейс для Bluetooth socket, аналогичный TCP
сокетам. Это точка соединения, позволяющая обмениваться данными с
удаленным устройством через InputStream и OutputStream.
4. BluetoothServerSocket - представляет открытый сокет сервера, готовый к
обработке входящего запроса. Для того чтобы соединить два Android
устройства, одно из них должно открыть сокет с помощью этого класса.
5. BluetoothClass - описывает основные параметры Bluetooth модуля. Объект
этого класса доступен только в режиме чтения и может быть полезен при
определении типа устройства.
6. BluetoothHeadset - обеспечивает поддержку bluetooth гарнитур.
7. BluetoothA2dp - Описывает Advanced Audio Distribution Profile,
определяющий передачу потока высококачественных аудиоданных через
bluetooth.
Шаг 1. Запрос разрешений для приложения
В AndroidManifest.xml нужно вставить следующие строки:
если мы хотим передавать и принимать данные через Bluetooth
<uses-permission android:name="android.permission.BLUETOOTH“ />
если мы хотим менять настройки Bluetooth
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN“ />
требования к телефону
<uses-feature android:name="android.hardware.bluetooth" />
При установке этого приложения на смартфон операционная
система спросит пользователя, разрешает ли он приложению
рботать с Bluetooth. Если пользователь откажется разрешать,
приложение просто не установится.
Шаг 2. Получить доступ к Bluetooth
Объявляем поле типа BluetoothAdapter
BluetoothAdapter oksana;
В методе onCreate пытаемся получить доступ к Bluetooth
oksana = BluetoothAdapter.getDefaultAdapter();
Если в телефоне нет Bluetooth, то в oksana будет null
if (oksana==null)
Шаг 3. Проверить состояние Bluetooth
String s;
if (oksana.isEnabled())
{
s = oksana.getName() + ” : ” + oksana.getAddress();
oksana.setName(“Nikolay”); // если есть BLUETOOTH_ADMIN
}
else s = “Bluetooth не включен!”;
// всплывающее сообщение
Toast.makeText(this, s, Toast.LENGTH_LONG).show();
Шаг 4. Включить Bluetooth, если он выключен
private static final int zapros = 1;
Intent oleg;
// Intent нужно для взаимодействия с другими приложениями
if (oksana.isEnabled()==false)
{
oleg = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(oleg, zapros);
}
При этом операционная система спросит пользователя “Можно
включить Bluetooth?” и, если он согласится, включит его.
Шаг 5. Так Bluetooth включился или нет?
@Override
protected
void
onActivityResult(int
resultCode, Intent data)
requestCode,
{
if(requestCode == zapros)
{
if (resultCode == RESULT_OK) // включилось
{
}
if (resultCode == RESULT_CANCELED) // отказались включать
{
}
}
}
int
Шаг 6. Как соединиться с другим телефоном с
Bluetooth, если известен его MAC адрес?
private static String MacAdress = "20:11:02:47:01:60";
BluetoothDevice dima;
код установки соединения:
dima = oksana.getRemoteDevice(MacAdress);
oksana – это то поле типа BluetoothAdapter, которое мы
инициализировали ранее
Откуда взять MAC адрес для телефонов, с которыми
ранее уже была установлена связь?
Set <BluetoothDevice> vse = oksana.getBondedDevices();
if (vse.size() > 0)
for (BluetoothDevice dima : vse)
{
// dima.getName(); – имя телефона
// dima.getAddress(); - MAC адрес телефона
}
}
Откуда взять MAC адрес для телефонов, с которыми
ранее не было связи?
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice dima =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//в dima.getAddress – MAC адрес устройства
}
}
};
// Регистрируем BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter); // Не забудьте снять регистрацию
в onDestroy
Как сделать свой телефон обнаруживаемым для
других телефонов?
Intent u = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
u.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(u);
Здесь 300 – количество секунд, на которые Bluetooth телефона
станет видимым для окружающих. Максимальное время – 3600
секунд. Можно включить видимость навсегда, в этом случае
нужно указать число 0.
При включении обнаруживаемости адаптер (шаг 4) включается
автоматически.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Создаем проект Android
Запросить разрешения у пользователя при установке на
телефон
Создать строку типа TextView для вывода на экран
отладочной информации (для себя)
Создать поле oksana типа BluetoothAdapter
В OnCreate инициализировать oksana и провести все
необходимые проверки
Назначить наш метод mReceiver обработчиком двух событий:
«устройство найдено» и «поиск устройств закончен».
Написать текст mReceiver: по событию «поиск устройств
закончен» запустить oksana.startDiscovery(), а по событию
«устройство найдено» проверить имя устройства и
произнести текст
Для произнесения текста создаем переменную
TextToSpeech tts;
В onCreate инициализируем tts
Download