我的编程空间,编程开发者的网络收藏夹
学习永远不晚

蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是:二、蓝牙搜索配对连接实现。

课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行
课程2:蓝牙聊天App设计1:Android Studio制作蓝牙聊天通讯软件(UI界面设计)
课程3:蓝牙聊天App设计2:Android Studio制作蓝牙聊天通讯软件(蓝牙搜索)
课程4:蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)

涉及文件:

在java目录下新建一个包“BluetoothPackage”,并在该包内新建两个新文件:“Constant.java”和“BluetoothController.java”,如图所示:
在这里插入图片描述

一、在AndroidManifest.xml中添加依赖:

二、新建文件Constant.java,用来预先定义一些下面可能需要用到的常量,完整代码如下:

package com.example.wyb.btw3.connect;public class Constant {    public static final String CONNECTTION_UUID = "00001101-0000-1000-8000-00805F9B34FB";        public static final int MSG_START_LISTENING = 1;        public static final int MSG_FINISH_LISTENING = 2;        public static final int MSG_GOT_A_CLINET = 3;        public static final int MSG_CONNECTED_TO_SERVER = 4;        public static final int MSG_GOT_DATA = 5;        public static final int MSG_ERROR = -1;}

三、新建文件BlueToothController .java,完整代码如下:

package com.example.wyb.btw3;import android.app.Activity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.content.Intent;import java.util.ArrayList;import java.util.List;public class BlueToothController {    private BluetoothAdapter mAdapter;    public BlueToothController(){        mAdapter = BluetoothAdapter.getDefaultAdapter();    }        public void  turnOnBlueTooth(Activity activity, int requestCode){        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);        activity.startActivityForResult(intent,requestCode);    }        public void findDevice(){        assert (mAdapter!=null);        mAdapter.startDiscovery();    }        public List getBondedDeviceList(){        return new ArrayList<>(mAdapter.getBondedDevices());    }}

四、MainActivity .java完整代码如下:

package com.example.wyb.bluetoothchatui;import android.Manifest;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.pm.PackageManager;import android.os.Build;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.Button;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;import BluetoothPackage.BluetoothController;import MyClass.DeviceAdapter;import MyClass.DeviceClass;public class MainActivity extends AppCompatActivity {    private DeviceAdapter mAdapter1,mAdapter2;    private List mbondDeviceList = new ArrayList<>();//搜索到的所有已绑定设备保存为列表    private List mfindDeviceList = new ArrayList<>();//搜索到的所有未绑定设备保存为列表    private BluetoothController mbluetoothController = new BluetoothController();    private Toast mToast;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Init_Bluetooth();//开启蓝牙相关权限        init_Filter();//初始化广播并打开        Init_listView();//初始化设备列表        show_bondDeviceList();//搜索展示已经绑定的蓝牙设备    }    //初始化蓝牙权限    private void Init_Bluetooth(){        //开启蓝牙位置共享        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {                requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);            }        }        mbluetoothController.enableVisibily(this);//让其他蓝牙看得到我        mbluetoothController.turnOnBlueTooth(this,0);//打开蓝牙    }    //初始化列表,适配器的加载    public void Init_listView(){        mAdapter1 = new DeviceAdapter(MainActivity.this, R.layout.device_item, mbondDeviceList);        ListView listView1 = (ListView)findViewById(R.id.listview1);        listView1.setAdapter(mAdapter1);        mAdapter1.notifyDataSetChanged();        //listView1.setOnItemClickListener(toMainActivity2);//设备点击事件,点击设备名称后执行toMainActivity2        mAdapter2 = new DeviceAdapter(MainActivity.this, R.layout.device_item, mfindDeviceList);        ListView listView2 = (ListView)findViewById(R.id.listview2);        listView2.setAdapter(mAdapter2);        mAdapter2.notifyDataSetChanged();    }    //开启广播    private void init_Filter(){        IntentFilter filter = new IntentFilter();        //开始查找        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);        //结束查找        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);        //查找设备        filter.addAction(BluetoothDevice.ACTION_FOUND);        //设备扫描模式改变        filter.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);        //绑定状态        filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);        registerReceiver(receiver, filter);    }    //广播内容    private BroadcastReceiver receiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            String action = intent.getAction();            if(BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)){                setSupportProgressBarIndeterminateVisibility(true);                change_Button_Text("搜索中...","DISABLE");                mfindDeviceList.clear();                mAdapter2.notifyDataSetChanged();            }            else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){                setProgressBarIndeterminateVisibility(false);                change_Button_Text("搜索设备","ENABLE");            }            //查找设备            else if(BluetoothDevice.ACTION_FOUND.equals(action)){                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);                change_Button_Text("搜索中...","DISABLE");                //查找到一个设备就添加到列表类中                mfindDeviceList.add(new DeviceClass(device.getName(),device.getAddress()));                mAdapter2.notifyDataSetChanged();//刷新列表适配器,将内容显示出来            }            else if(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED.equals(action)){                int scanMode = intent.getIntExtra(BluetoothAdapter.EXTRA_SCAN_MODE,0);                if (scanMode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE){                    setProgressBarIndeterminateVisibility(true);                }                else {                    setProgressBarIndeterminateVisibility(false);                }            }            else if(BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {                BluetoothDevice remoteDecive = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);                if(remoteDecive == null){                    return;                }                int status = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, 0);                if(status == BluetoothDevice.BOND_BONDED) {                    showToast("已绑定" + remoteDecive.getName());                } else if(status == BluetoothDevice.BOND_BONDING) {                    showToast("正在绑定" + remoteDecive.getName());                } else if(status == BluetoothDevice.BOND_NONE) {                    showToast("未绑定" + remoteDecive.getName());                }            }        }    };    //点击开始查找蓝牙设备    public View findDevice(View view){        mbluetoothController.findDevice();        return view;    }    //查找已绑定的蓝牙设备    private void show_bondDeviceList(){        mbondDeviceList.clear();        List bondDevices = mbluetoothController.getBondedDeviceList();//查找已绑定设备        for(int i=0;i            mbondDeviceList.add(new DeviceClass(bondDevices.get(i).getName(),bondDevices.get(i).getAddress()));        }        mAdapter1.notifyDataSetChanged();    }    //点击按键搜索后按键的变化    private void change_Button_Text(String text,String state){        Button button = (Button)findViewById(R.id.button1);        if("ENABLE".equals(state)){            button.setEnabled(true);            button.getBackground().setAlpha(255); //0~255 之间任意调整            button.setTextColor(ContextCompat.getColor(this, R.color.black));        }        else {            button.setEnabled(false);            button.getBackground().setAlpha(150); //0~255 之间任意调整            button.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));        }        button.setText(text);    }    //点击设备后执行的函数    private AdapterView.OnItemClickListener toMainActivity2 =new AdapterView.OnItemClickListener(){        @Override        public void onItemClick(AdapterView adapterView, View view, int i, long l){            Intent intent = new Intent(MainActivity.this,Main2Activity.class);            startActivity(intent);        }    };    //设置toast的标准格式    private void showToast(String text){        if(mToast == null){            mToast = Toast.makeText(this, text,Toast.LENGTH_SHORT);            mToast.show();        }        else {            mToast.setText(text);            mToast.show();        }    }}

五、效果图
在这里插入图片描述

六、完整项目分享
项目链接:https://pan.baidu.com/s/1z8tW3aA7a5knKxiwlE3BFw 提取码:3d53

七、蓝牙聊天功能实现
可以看课程蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)

来源地址:https://blog.csdn.net/weiybin/article/details/130352162

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是:二、蓝牙搜索配对连接实现。 课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello
2023-08-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录