Android - Bluetooth
Bluetooth to między innymi sposób wysyłania lub odbierania danych między dwoma różnymi urządzeniami. Platforma Android obejmuje obsługę struktury Bluetooth, która umożliwia urządzeniu bezprzewodową wymianę danych z innymi urządzeniami Bluetooth.
Android zapewnia interfejs API Bluetooth do wykonywania tych różnych operacji.
Wyszukaj inne urządzenia Bluetooth
Uzyskaj listę sparowanych urządzeń
Połącz się z innymi urządzeniami za pomocą wykrywania usług
Android zapewnia klasę BluetoothAdapter do komunikacji z Bluetooth. Utwórz obiekt tego wywołania, wywołując metodę statyczną getDefaultAdapter (). Jego składnię podano poniżej.
private BluetoothAdapter BA;
BA = BluetoothAdapter.getDefaultAdapter();
Aby włączyć Bluetooth w swoim urządzeniu, wywołaj intencję z następującą stałą Bluetooth ACTION_REQUEST_ENABLE. Jego składnia to.
Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);
Oprócz tej stałej istnieją inne stałe dostarczane przez API, które obsługują różne zadania. Są one wymienione poniżej.
Sr.No | Stała i opis |
---|---|
1 | ACTION_REQUEST_DISCOVERABLE Ta stała służy do włączania wykrywania Bluetooth |
2 | ACTION_STATE_CHANGED Ta stała powiadomi o zmianie stanu Bluetooth |
3 | ACTION_FOUND Ta stała służy do otrzymywania informacji o każdym wykrytym urządzeniu |
Po włączeniu Bluetooth możesz uzyskać listę sparowanych urządzeń, wywołując metodę getBondedDevices (). Zwraca zestaw urządzeń Bluetooth. Jego składnia to.
private Set<BluetoothDevice>pairedDevices;
pairedDevices = BA.getBondedDevices();
Oprócz sparowanych urządzeń w API istnieją inne metody, które zapewniają większą kontrolę nad Bluetooth. Są one wymienione poniżej.
Sr.No | Metoda i opis |
---|---|
1 | enable() Ta metoda włącza adapter, jeśli nie jest włączony |
2 | isEnabled() Ta metoda zwraca wartość true, jeśli adapter jest włączony |
3 | disable() Ta metoda wyłącza adapter |
4 | getName() Ta metoda zwraca nazwę adaptera Bluetooth |
5 | setName(String name) Ta metoda zmienia nazwę Bluetooth |
6 | getState() Ta metoda zwraca aktualny stan adaptera Bluetooth. |
7 | startDiscovery() Ta metoda rozpoczyna proces wykrywania Bluetooth przez 120 sekund. |
Przykład
Ten przykład przedstawia klasę BluetoothAdapter do manipulowania Bluetooth i wyświetlania listy sparowanych urządzeń przez Bluetooth.
Aby poeksperymentować z tym przykładem, musisz go uruchomić na rzeczywistym urządzeniu.
Kroki | Opis |
---|---|
1 | Użyjesz Android Studio do stworzenia aplikacji na Androida, pakietu com.example.sairamkrishna.myapplication. |
2 | Zmodyfikuj plik src / MainActivity.java, aby dodać kod |
3 | Zmodyfikuj plik XML układu res / layout / activity_main.xml, dodaj dowolny składnik GUI, jeśli jest to wymagane. |
4 | Zmodyfikuj plik AndroidManifest.xml, aby dodać niezbędne uprawnienia. |
5 | Uruchom aplikację i wybierz działające urządzenie z systemem Android, zainstaluj na nim aplikację i sprawdź wyniki. |
Oto treść 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 Set<BluetoothDevice>pairedDevices;
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);
}
}
Oto treść activity_main.xml
Tutaj abc wskazuje na logo tutorialspoint.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:transitionGroup="true">
<TextView android:text="Bluetooth Example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:theme="@style/Base.TextAppearance.AppCompat" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Turn On"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_toStartOf="@+id/imageView"
android:layout_toLeftOf="@+id/imageView"
android:clickable="true"
android:onClick="on" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get visible"
android:onClick="visible"
android:id="@+id/button2"
android:layout_alignBottom="@+id/button"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="List devices"
android:onClick="list"
android:id="@+id/button3"
android:layout_below="@+id/imageView"
android:layout_toRightOf="@+id/imageView"
android:layout_toEndOf="@+id/imageView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="turn off"
android:onClick="off"
android:id="@+id/button4"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentBottom="true"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_below="@+id/textView2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Paired devices:"
android:id="@+id/textView2"
android:textColor="#ff34ff06"
android:textSize="25dp"
android:layout_below="@+id/button4"
android:layout_alignLeft="@+id/listView"
android:layout_alignStart="@+id/listView" />
</RelativeLayout>
Oto treść Strings.xml
<resources>
<string name="app_name">My Application</string>
</resources>
Oto treść AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Spróbujmy uruchomić Twoją aplikację. Zakładam, że podłączyłeś swoje rzeczywiste urządzenie mobilne z systemem Android do komputera. Aby uruchomić aplikację ze studia Android, otwórz jeden z plików aktywności projektu i kliknij
Teraz wystarczy wybrać przycisk Pokaż widoczność, aby włączyć swoją widoczność. Pojawi się następujący ekran z prośbą o pozwolenie na włączenie wykrywania na 120 sekund.
Teraz wystarczy wybrać opcję Lista urządzeń. Wyświetli listę sparowanych urządzeń w widoku listy. W moim przypadku mam tylko jedno sparowane urządzenie. Jest to pokazane poniżej.
Teraz wystarczy wybrać przycisk Wyłącz, aby wyłączyć Bluetooth. Po wyłączeniu bluetooth pojawi się następujący komunikat wskazujący na pomyślne wyłączenie Bluetooth.