【Android】蓝牙连接,获取信号地址和强度

本文介绍了一个Android应用程序,用于开启、关闭、连接蓝牙,并扫描周围蓝牙设备以获取其名称、地址和RSSI信号强度。程序还包括了一个特定功能,即识别并列出自家蓝牙基站的详细信息。代码来源于GitHub并进行了个性化修改,遇到的BUG包括类型转换错误和ListView动态刷新问题,已通过调试解决部分问题。
摘要由CSDN通过智能技术生成

程序实现功能:开启、关闭、连接蓝牙,SCAN周围蓝牙并获得蓝牙名字,地址,信号强度RSSI,连接状态,因为当时是为了做一个蓝牙定位,所以按照需求还添加了一个是否是自己买的蓝牙基站的Textview。

当判断SCAN到的蓝牙里面有自己的蓝牙基站时,就再用一个ListView把它们的名字、地址、信号强度、距离和之前设定的坐标单独列出来。

程序实现效果图如下:

 

程序是参考了Github上一个程序,然后根据自己的需求修改的

程序如下:

MainActivity.java

 

import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity implements
        View.OnClickListener, OnItemClickListener, CompoundButton.OnCheckedChangeListener,
        BlueConnectTask.BlueConnectListener, InputDialogFragment.InputCallbacks, BlueAcceptTask.BlueAcceptListener {
    private static final String TAG = "MainActivity";
    String blueName;//声明用户输入的蓝牙设备名称变量
    private CheckBox ck_bluetooth;
    private TextView tv_discovery;
    private ListView lv_bluetooth;
    private ListView lv_zuobiao;

    private BluetoothAdapter mBluetooth;
    private ArrayList<BlueDevice> mDeviceList = new ArrayList<BlueDevice>();
    private ArrayList<BlueDevice> zDeviceList = new ArrayList<BlueDevice>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bluetoothPermissions();
        ck_bluetooth = (CheckBox) findViewById(R.id.ck_bluetooth);
        tv_discovery = (TextView) findViewById(R.id.tv_discovery);
        lv_bluetooth = (ListView) findViewById(R.id.lv_bluetooth);
        lv_zuobiao = (ListView) findViewById(R.id.lv_zuobiao);
        if (BluetoothUtil.getBlueToothStatus(this) == true) {
            ck_bluetooth.setChecked(true);
        }
        ck_bluetooth.setOnCheckedChangeListener(this);
        tv_discovery.setOnClickListener(this);
        mBluetooth = BluetoothAdapter.getDefaultAdapter();
        if (mBluetooth == null) {
            Toast.makeText(this, "本机未找到蓝牙功能", Toast.LENGTH_SHORT).show();
            finish();
        }

    }

    // 定义获取基于地理位置的动态权限
    private void bluetoothPermissions() {
        if (ContextCompat.checkSelfPermission(this, android.
  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值