Как отправить 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