- Android — Bluetooth
- Example
- Bluetooth в Android Studio
- Включение Bluetooth в телефоне
- Bluetooth в Android Studio: показываем сопряженные устройства
- Bluetooth в android studio: поиск устройств
- Saved searches
- Use saved searches to filter your results more quickly
- License
- bauerjj/Android-Simple-Bluetooth-Example
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
Android — Bluetooth
Among many ways, Bluetooth is a way to send or receive data between two different devices. Android platform includes support for the Bluetooth framework that allows a device to wirelessly exchange data with other Bluetooth devices.
Android provides Bluetooth API to perform these different operations.
- Scan for other Bluetooth devices
- Get a list of paired devices
- Connect to other devices through service discovery
Android provides BluetoothAdapter class to communicate with Bluetooth. Create an object of this calling by calling the static method getDefaultAdapter(). Its syntax is given below.
private BluetoothAdapter BA; BA = BluetoothAdapter.getDefaultAdapter();
In order to enable the Bluetooth of your device, call the intent with the following Bluetooth constant ACTION_REQUEST_ENABLE. Its syntax is.
Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(turnOn, 0);
Apart from this constant, there are other constants provided the API , that supports different tasks. They are listed below.
ACTION_REQUEST_DISCOVERABLE
This constant is used for turn on discovering of bluetooth
This constant will notify that Bluetooth state has been changed
This constant is used for receiving information about each device that is discovered
Once you enable the Bluetooth , you can get a list of paired devices by calling getBondedDevices() method. It returns a set of bluetooth devices. Its syntax is.
private SetpairedDevices; pairedDevices = BA.getBondedDevices();
Apart form the parried Devices , there are other methods in the API that gives more control over Blueetooth. They are listed below.
This method enables the adapter if not enabled
This method returns true if adapter is enabled
This method disables the adapter
This method returns the name of the Bluetooth adapter
This method changes the Bluetooth name
This method returns the current state of the Bluetooth Adapter.
This method starts the discovery process of the Bluetooth for 120 seconds.
Example
This example provides demonstration of BluetoothAdapter class to manipulate Bluetooth and show list of paired devices by the Bluetooth.
To experiment with this example , you need to run this on an actual device.
Steps | Description |
---|---|
1 | You will use Android studio to create an Android application a package com.example.sairamkrishna.myapplication. |
2 | Modify src/MainActivity.java file to add the code |
3 | Modify layout XML file res/layout/activity_main.xml add any GUI component if required. |
4 | Modify AndroidManifest.xml to add necessary permissions. |
5 | Run the application and choose a running android device and install the application on it and verify the results. |
Here is the content of src/MainActivity.java
package com.example.sairamkrishna.myapplication; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.Set; public class MainActivity extends Activity < Button b1,b2,b3,b4; private BluetoothAdapter BA; private SetpairedDevices; ListView lv; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); b2=(Button)findViewById(R.id.button2); b3=(Button)findViewById(R.id.button3); b4=(Button)findViewById(R.id.button4); BA = BluetoothAdapter.getDefaultAdapter(); lv = (ListView)findViewById(R.id.listView); >public void on(View v) < if (!BA.isEnabled()) < Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(turnOn, 0); Toast.makeText(getApplicationContext(), "Turned on",Toast.LENGTH_LONG).show(); >else < Toast.makeText(getApplicationContext(), "Already on", Toast.LENGTH_LONG).show(); >> public void off(View v) < BA.disable(); Toast.makeText(getApplicationContext(), "Turned off" ,Toast.LENGTH_LONG).show(); >public void visible(View v) < Intent getVisible = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); startActivityForResult(getVisible, 0); >public void list(View v) < pairedDevices = BA.getBondedDevices(); ArrayList list = new ArrayList(); for(BluetoothDevice bt : pairedDevices) list.add(bt.getName()); Toast.makeText(getApplicationContext(), "Showing Paired Devices",Toast.LENGTH_SHORT).show(); final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list); lv.setAdapter(adapter); >>
Here is the content of activity_main.xml
Here is the content of Strings.xml
Here is the content of AndroidManifest.xml
Let’s try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio, open one of your project’s activity files and click Run icon from the tool bar.If your Bluetooth will not be turned on then, it will ask your permission to enable the Bluetooth.
Now just select the Get Visible button to turn on your visibility. The following screen would appear asking your permission to turn on discovery for 120 seconds.
Now just select the List Devices option. It will list down the paired devices in the list view. In my case , I have only one paired device. It is shown below.
Now just select the Turn off button to switch off the Bluetooth. Following message would appear when you switch off the bluetooth indicating the successful switching off of Bluetooth.
Bluetooth в Android Studio
Понадобилось мне как то приложение на телефон с OS Android, для работы с моим устройством на микроконтроллере через Bluetooth. И вот я уже погрузился в изучение Bluetooth в android studio.
Составим простой алгоритм работы:
- При запуске приложения на телефоне, отобразим все Bluetooth устройства, которые уже спарены с телефоном.
- Организуем поиск новых устройств.
- Далее, по нажатию на устройство в списке, сделаем спаривание с этим устройством ( конечно же не для того, что бы появились маленькие Bluetooth –ики, этого требует протокол работы bluetooth)
- Создадим класс для подключение устройств друг с другом по протоколу SPP.
Что ж, план намечен приступаем к действию. Так как статья получается довольно обширная, по этому 3 и 4 пункты опишем в следующей статье.
Включение Bluetooth в телефоне
Что бы начать работать с Bluetooth первым делом его надо включить. Рассмотрим функцию реализующую проверку на включение Bluetooth, и если выключен, предлагает пользователю включить его.
public boolean BluetoothON() < if (!bleAdapter.isEnabled()) < Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) < return false; >startActivity(turnOn); > else < return true; >return false; >
Здесь, первым делом мы проверяем есть ли у нас в системе Bluetooth адаптер. Если есть, создаем intent с действием на включение блютуза. Так же нам надо проверить есть ли разрешение на работу с блютуз в манифесте. Результатом работы кода будет следующий рисунок.
Bluetooth в Android Studio: показываем сопряженные устройства
Рассмотрим данный вопрос на примере приведенного ниже кода.
public void GetPairDevise(ArrayList list, BluetoothAdapter bluetoothAdapter) < if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) < // Выдать сообщение о ошибке return; >Set pairedDevices = bluetoothAdapter.getBondedDevices(); if (pairedDevices.size() > 0) < for (BluetoothDevice device : pairedDevices) < arrayNewDevice.add(device); list.add(device.getName() + " - " + device.getAddress()); >> >
И так, функция принимает на вход переменную типа ArrayList. В этот массив мы помещаем найденные в системе устройства.
Вторым параметром наш BluetoothAdapter. По сути это наш физический модуль Bluetooth в телефоне. Узнаем о его присутствии через функцию:
getDefaultAtapter();
BluetoothAdapter bleAdapter = BluetoothAdapter.getDefaultAdapter();
Далее необходимо проверить, есть ли необходимые разрешение в нашем файле Манифесте. Без них Bluetooth работать не будет.
getBondedDevices(),
получаем все сопряженные устройства.
Set pairedDevices = bluetoothAdapter.getBondedDevices();
Далее в цикле проходим по всему сету и добавляем наши устройства в массив для дальнейшей работы и в список отображение. На картинке ниже, результат работы нашей функции.
Bluetooth в android studio: поиск устройств
Поиск новых устройств запускает функция bluetoothAdapter.startDiscovery() . Результат работы будет в обработчике событий BroadcastResiver . Это класс в котором идет обработка сообщений.
Посмотрим нижеприведенный код. Сначала мы очистим наши списки. Далее проверим разрешение в манифесте и запустим функцию bluetoothAdapter.startDiscovery(). Инициируем два события: поиск устройств и окончание поиска устройств. После этого регистрируем каждое событие Bluetooth.
public void GetScanDevise(BluetoothAdapter mYBluetoothAdapter) < if (listNewDeviceAdapter.getCount() != 0) listNewDeviceAdapter.clear(); arrayNewDevice.clear(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) < return; >myBleAdapter.startDiscovery(); IntentFilter myFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(mResiver, myFilter); myFilter = new IntentFilter((BluetoothAdapter.ACTION_DISCOVERY_FINISHED)); registerReceiver(mResiver, myFilter); > private final BroadcastReceiver mResiver = new BroadcastReceiver() < @SuppressLint("MissingPermission") @Override public void onReceive(Context context, Intent intent) < String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) < myDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (myDevice.getName() != null) < arrayNewDevice.add(myDevice); deviseScanList.add(myDevice.getName() + " - " + myDevice.getAddress()); listDevice.setAdapter(listNewDeviceAdapter); >> else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) < myBleAdapter.cancelDiscovery(); >> >;
Внимание! Что бы вновь начать поиск новых устройств, необходимо убедиться, что предыдущий поиск остановлен.
Также можно перед стартом нового поиска сначала вызвать функцию
bleAdapter.cancelDiscovery();
Результат работы кода будет представлен на картинке ниже.
Внимание! Данный программный код представлен из реально работающей программы. Описывал все так как понял сам, читая открытые источники. К сожалению я не являюсь программистом Android, по этому говорю честно, данную задачу можно реализовать красивым и правильным кодом. В этой статье описан просто рабочий код и принцип работы с Bluetooth в android studio на языке java.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Simple Android Bluetooth example to turn on/off radio and to view and connect with devices. Has associated code to connect to an Arduino.
License
bauerjj/Android-Simple-Bluetooth-Example
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
A simple Android bluetooth example to turn on/off the radio and to view and connect with other devices. It has associated embedded firmware code to connect to an Arduino to test the bi-directional data stream.
For a complete tutorial write-up, please see here:
This is a simple demo app that creates buttons to toggle ON/OFF the bluetooth radio, view connected devices, and to discover new bluetooth enabled devices. A checkbox and status strings provide functionality to communicate with an embedded microcontroller such as an Arduino. You don’t necessarily need to connect an Arduino to still have a functioning phone application. The connected device MUST abide by the Serial Port Profile (SPP). Other complex profiles are not supported with this example and will fail to connect.
- Android Studio IDE and SDK
- HC-06 bluetooth module
- Arudino Uno
- A few breadboard wires to connect the HC-06 to the Arduino
- Clone this repo and open it inside of Android Studio. Note, a later SDK will work just fine (SDK 23+)
- Build the app
- Install the app to your connected Android phone. You will need to install special drivers and enable USB debugging on your phone for this to work. There are plenty of tutorials on the web for this.
- Clone this Arudino gist and program your Arudino
- Run the application on your phone after it installs. Connect to the HC-06 and you should see a number incrementing on the application every second.
Please submit all issues to the github tracker. Pull requests are also encouraged. General comments can be left either inside github or at mcuhq.com.
About
Simple Android Bluetooth example to turn on/off radio and to view and connect with devices. Has associated code to connect to an Arduino.