📜  如何使蓝牙可被Android中的其他设备发现?

📅  最后修改于: 2021-05-10 16:57:05             🧑  作者: Mango

在android设备中,蓝牙是一种通信网络协议,允许设备无线连接以与其他蓝牙设备交换数据。通常,我们可以利用Bluetooth API来实现Bluetooth功能,例如启用或禁用Bluetooth,搜索可用的Bluetooth设备,与这些设备连接以及管理该范围内的设备之间的数据传输。在Android中, BluetoothAdapter类执行所有与Bluetooth相关的活动。默认情况下,蓝牙设备处于不可发现的模式。这意味着,如果我们打开设备中的蓝牙,则只有与之配对的人才能看到该蓝牙。该设备在配对设备以外的设备上不可见。为了使该设备可见,我们打开“可发现”选项,该选项使该设备在附近具有全局性。现在,此设备将显示在每个列表中,无论是新设备还是早先配对的设备。涉及将音乐设备或数字手表与其他设备配对(通过蓝牙传输同步)的应用程序非常简单。这些设备设置为全局,任何其他设备都可以发现它们。为了使这件事在Android手机上成为可能,您可以转到Bluetooth设置并将其设置为全局或可发现。本文希望与您分享一个应用程序的实现,该应用程序使打开蓝牙后即可发现设备的蓝牙。下面的样本GIF给出得到什么我们将在本文中做的想法。请注意,我们将使用Kotlin语言实施此项目。

使蓝牙可被其他设备发现

执行

  • 本文介绍的应用程序基本上是测试我们是否可以以编程方式调用方法来实现我们的目的。
  • 我们创建了一个由三个按钮组成的Android移动应用程序;打开,可发现关闭,使功能调用各种蓝牙适配器方法。
  • 此应用程序的更改是全局的,即,如果未单击“关闭”按钮或任何其他相关版本,则蓝牙将继续打开。
  • 为了使该设备可在其他设备列表上发现,必须使用具有ACTION_REQUEST_DISCOVERABLE意图的startActivityForResult(intent,int)来初始化一个新活动。

分步实施

要以编程方式在我们的Android设备上显示蓝牙配对设备的列表,请执行以下步骤:

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

步骤2:使用AndroidManifest.xml文件进行唤醒

转到AndroidManifest.xml文件,并添加蓝牙适配器所需的以下权限: BLUETOOTH,BLUETOOTH_ADMINACCESS_COARSE_LOCATION

以下是AndroidManifest.xml文件的完整代码。

XML


  
    
    
    
    
  
  
        
            
                
  
                
            
        
    
  


XML


  
    
    


Kotlin
import android.bluetooth.BluetoothAdapter
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare the three buttons from the layout file
        val btnOn = findViewById


Kotlin
startActivityForResult(Intent
                       (BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE)
                       .putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 40)
                       , 1)


步骤3:使用activity_main.xml文件

现在转到代表应用程序UI的activity_main.xml文件。创建三个按钮,一个按钮打开设备的蓝牙,一个按钮使该设备的蓝牙可在其他设备上发现,另一个按钮关闭蓝牙服务。以下是activity_main.xml文件的代码。在代码内部添加了注释,以更详细地了解代码。

XML格式



  
    
    

步骤4:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

import android.bluetooth.BluetoothAdapter
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare the three buttons from the layout file
        val btnOn = findViewById

输出:在物理设备上运行

输出视频中输入事件的顺序为:

  1. 打开点击(打开蓝牙并检查按钮是否正常工作)
  2. 关闭点击(关闭蓝牙并检查按钮是否正常工作)
  3. 打开点击(再次打开蓝牙)
  4. 可发现的点击(使设备的蓝牙可发现)
  5. 关闭点击(关闭蓝牙)

设置自定义发现时间

默认情况下,设备在“发现”模式下停留120秒。我们可以通过使用putExtra向意图提供特定的值来更改此值:

科特林

startActivityForResult(Intent
                       (BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE)
                       .putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 40)
                       , 1)

这会将默认值更改为40秒

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!