文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-08-17 06:09

关注

前言:蓝牙聊天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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯