📜  Android-蓝牙

📅  最后修改于: 2021-01-05 05:09:42             🧑  作者: Mango


在许多方法中,蓝牙是在两个不同设备之间发送或接收数据的方法。 Android平台包括对蓝牙框架的支持,该框架允许设备与其他蓝牙设备无线交换数据。

Android提供了蓝牙API来执行这些不同的操作。

  • 扫描其他蓝牙设备

  • 获取已配对设备的列表

  • 通过服务发现连接到其他设备

Android提供了BluetoothAdapter类来与Bluetooth通信。通过调用静态方法getDefaultAdapter()创建此调用的对象。其语法如下。

private BluetoothAdapter BA;
BA = BluetoothAdapter.getDefaultAdapter();

为了启用设备的蓝牙,请使用以下蓝牙常量ACTION_REQUEST_ENABLE调用该意图。它的语法是。

Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);       

除了此常量之外,API还提供了其他常量来支持不同的任务。它们在下面列出。

Sr.No Constant & description
1

ACTION_REQUEST_DISCOVERABLE

This constant is used for turn on discovering of bluetooth

2

ACTION_STATE_CHANGED

This constant will notify that Bluetooth state has been changed

3

ACTION_FOUND

This constant is used for receiving information about each device that is discovered

启用蓝牙后,可以通过调用getBondedDevices()方法获取已配对设备的列表。它返回一组蓝牙设备。它的语法是。

private SetpairedDevices;
pairedDevices = BA.getBondedDevices();

除了被阻止的设备外,API中还有其他方法可以更好地控制蓝牙。它们在下面列出。

Sr.No Method & description
1

enable()

This method enables the adapter if not enabled

2

isEnabled()

This method returns true if adapter is enabled

3

disable()

This method disables the adapter

4

getName()

This method returns the name of the Bluetooth adapter

5

setName(String name)

This method changes the Bluetooth name

6

getState()

This method returns the current state of the Bluetooth Adapter.

7

startDiscovery()

This method starts the discovery process of the Bluetooth for 120 seconds.

此示例演示了BluetoothAdapter类的操作蓝牙方法,并显示了由蓝牙配对的设备列表。

要尝试使用此示例,您需要在实际设备上运行它。

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.

这是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);
   }
}

这是activity_main.xml的内容

abc表示关于tutorialspoint的徽标。



   
   
      
   
      
   
      
   
      
   
      
   
      
   
      
   
      
   


这是Strings.xml的内容


   My Application

这是AndroidManifest.xml的内容



   
   
   
   
      
      
         
         
            
            
         
         
      
      
   

让我们尝试运行您的应用程序。我假设您已将实际的Android Mobile设备与计算机连接。要从Android Studio运行该应用,请打开您项目的活动文件之一,然后点击运行Eclipse运行图标工具栏上的图标。如果您的蓝牙无法打开,则会询问您的许可以启用蓝牙。

Anroid蓝牙教程

现在,只需选择“获取可见性”按钮即可打开可见性。将出现以下屏幕,询问您的权限以开启发现功能120秒钟。

Anroid蓝牙教程

现在,只需选择“列出设备”选项。它将在列表视图中列出已配对的设备。就我而言,我只有一个已配对的设备。如下所示。

Anroid蓝牙教程

现在,只需选择“关闭”按钮即可关闭蓝牙。当您关闭蓝牙时,将显示以下消息,指示成功关闭了蓝牙。

Anroid蓝牙教程