当前位置: 首页 > news >正文

java之WIFI信号模块

开发步骤分为以下几点:

1.在 AndroidManifest 中声明相关权限(网络和文件读写权限)

声明权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

这里我写了四个文件供大家参考,首先是主菜单:

只是包含了发送和接收,这个界面的代码实现很简单,只需要,在xml文件里面放俩个button按钮,然后,绑定另外的发送端和接收端就可以了:

public class MainActivity extends AppCompatActivity {private Button startBtton, stopButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {//super的意思是继承父类super.onCreate(savedInstanceState);//初始化xml组件setContentView(R.layout.activity_main);//初始化按钮组件startBtton=findViewById(R.id.bth_start);stopButton=findViewById(R.id.bth_stop);//当按钮按下去时候的监听器然后进行跳转到发送端界面startBtton.setOnClickListener(v->startActivity(new Intent(MainActivity.this ,ServerActivity.class)));//当按钮按下去时候的监听器然后进行跳转到接收端界面stopButton.setOnClickListener(view ->startActivity(new Intent(MainActivity.this,ClientActivity.class)) );}
}

其实比较难的就是用到socket编程,然后还用到多线程:

这里给大家截取部分供大家参考一下

接下里是客户端功能:

然后还用服务器功能:

public class NSDDeviceAdapter extends RecyclerView.Adapter<NSDDeviceAdapter.ViewHolder> {//定义了一个私有变量device,用来存储NsdServiceInfo的对象private List<NsdServiceInfo> devices = new ArrayList<>();//这里面接收了NsdServiceInfo的参数devicepublic  void addDevice(NsdServiceInfo device){//将传入的设备信息添加到devices集合中。这个集合可能是一个列表,用于存储所有设备信息。devices.add(device);// 调用这个方法来通知列表视图(比如RecyclerView)在指定位置插入了一个新的项目。// devices.size()-1是新添加的项目在列表中的索引位置notifyItemInserted(devices.size()-1);}public void removeDevice(NsdServiceInfo device){Iterator<NsdServiceInfo> iterator = devices.iterator();boolean hasRemoved = false;while (iterator.hasNext()){//这行代码从迭代器获取下一个元素NsdServiceInfo tmp = iterator.next();//这是一个条件判断,如果当前遍历的元素与返回值相等,就执行大括号内的代码if(tmp.getServiceName().equals(device.getServiceName())){//如果天剑满足,这行代码会从集合中删除当前遍历到的元素iterator.remove();//表示有元素被删除hasRemoved = true;}}//如果在遍历过程中有元素被删除,这行代码会调用notifyDataSetChanged方法if(hasRemoved) {notifyDataSetChanged();}}@NonNull@Overridepublic NSDDeviceAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {return new ViewHolder(new TextView(viewGroup.getContext()));}@Overridepublic void onBindViewHolder(@NonNull NSDDeviceAdapter.ViewHolder viewHolder, int i) {NsdServiceInfo serviceInfo = devices.get(i);viewHolder.textView.setText(serviceInfo.toString());}@Overridepublic int getItemCount() {return devices.size();}class ViewHolder extends RecyclerView.ViewHolder{protected TextView textView;public ViewHolder(@NonNull View itemView) {super(itemView);textView = (TextView) itemView;}}public interface ItemClick{void onClick(NsdServiceInfo nsdServiceInfo);}
}

每一行什么作用,我都做了注释,希望能帮到大家!

相关文章:

java之WIFI信号模块

开发步骤分为以下几点&#xff1a; 1.在 AndroidManifest 中声明相关权限&#xff08;网络和文件读写权限&#xff09; 声明权限: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.…...

Mybatis面试

Mybatis 面试 1、Mybatis 的执行流程是什么&#xff1f; 1、读取MyBatis配置文件&#xff1a;mybatis-config.xml 加载运行环境 和 映射文件 2、构造会话工厂 SqlSessionFactory &#xff08;全局只有一个&#xff09; 3、会话工厂创建SqlSession对象&#xff08;项目与数据…...

Centos 8系统xfs文件系统类型进行扩容缩容 (LVM)

Centos 8系统xfs文件系统类型进行扩容缩容 &#xff08;LVM&#xff09;,xfs分区类型是不支持正常缩容&#xff0c;只能强制缩容 1.磁盘情况&#xff1a;2.缩容home分区1.备份home数据&#xff1a;2.查找使用 /home 的进程&#xff1a;3.终止这些进程&#xff1a;4.卸载 /home …...

C语言基础知识之函数指针和指针函数

函数指针和指针函数 函数指针和指针函数指向函数的指针返回指针值的函数指针函数和函数指针的区别 问题1_1代码1_1结果1_1 函数指针和指针函数 指向函数的指针 用函数指针变量调用函数 可以用指针变量指向整型变量、字符串、数组&#xff0c;也可以指向一个函数。一个…...

【Unity】web gl inputFied 中文输入,同时支持TextMeshInputFied,支持全屏

同时支持TextMeshInputFied&#xff0c;支持全屏。 使用github包【WebGLInput】&#xff1a;https://github.com/kou-yeung/WebGLInput 需要资源的在这里也可以下载 https://download.csdn.net/download/weixin_46472622/89600795 用于unity web gl 中文输入&#xff0c;只需…...

vue3+vite全局引入less变量和函数

需要在vite配置 plugins: [css: {preprocessorOptions: {less: {additionalData: import "./src/styles/variables.module.less"; import "./src/views/Visualization/component/ViewportCom/px2viewport.less";,javascriptEnabled: true}}}, ]多个文件按…...

H81002S 1.7mm网络变压器:BMS汽车蓝牙接收器中的超薄共模电感科技

华强盛导读&#xff1a;在当今这个日新月异的汽车科技领域&#xff0c;每一处细节都蕴含着创新与突破。作为电动汽车心脏的电池管理系统&#xff08;BMS&#xff09;&#xff0c;其高效稳定的运行不仅关乎续航与安全&#xff0c;更是智能化驾驶体验的基石。而在这背后&#xff…...

C语言.回调函数

回调函数 回调函数也是一个函数。与一般函数直接调用区别在于&#xff0c;使用回调函数的过程&#xff0c;是一个函数将另一个函数作为参数调用。而被用来调用的那个函数&#xff0c;就是回调函数。 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地…...

《从零开始:使用Python构建简单Web爬虫》

前言 随着互联网信息的爆炸性增长&#xff0c;如何高效地获取和处理这些数据变得越来越重要。Web爬虫作为一种自动化工具&#xff0c;可以帮助我们快速抓取所需的网页内容。本文将介绍如何使用Python编写一个简单的Web爬虫&#xff0c;并通过实例演示其基本用法。 准备工作 …...

最新个人免签约支付系统源码|PHP源码 | 码支付系统 | ThinkPHP6框架 | 开源

源码介绍&#xff1a; 这个最新的个人专用免签约支付系统源码&#xff01;是PHP源码写的哦&#xff0c;而且是用ThinkPHP6框架开发的&#xff0c;完全开源的码支付系统。 这个系统适合个人用户使用&#xff0c;作为收款的免签约解决方案。它还加入了监控端&#xff0c;可以拒…...

The Llama 3 Herd of Models 第4部分后训练的全文

Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…...

MongoDB性能调优

文章目录 MongoDB性能调优MongoDB性能不佳原因影响MongoDB性能的因素MongoDB性能监控工具mongostatmongotopProfiler模块db.currentOp() MongoDB性能调优 MongoDB性能不佳原因 慢查询阻塞等待硬件资源不足 1,2通常是因为模型/索引设计不佳导致的 排查思路&#xff1a;按1-2…...

【Qt开发】调试log日志QDebug重定向输出到textEdit等控件(qInstallMessageHandler回调函数)

【Qt开发】调试log日志QDebug重定向输出到textEdit等控件&#xff08;qInstallMessageHandler回调函数&#xff09; 文章目录 Log输出方式qInstallMessageHandler回调函数线程安全textEdit控件附录&#xff1a;C语言到C的入门知识点&#xff08;主要适用于C语言精通到Qt的C开发…...

【JavaEE精炼宝库】 网络编程套接字——UDP业务逻辑 | TCP流套接字编程及业务逻辑实现

文章目录 一、UDP业务逻辑实现二、TCP流套接字编程2.1 API 介绍&#xff1a;2.1.1 ServerSocket&#xff1a;2.1.2 Socket&#xff1a; 2.2 Java流套接字通信模型&#xff1a;2.3 代码示例&#xff1a;2.3.1 TCP Echo Server&#xff1a;2.3.2 TCP Echo Client&#xff1a;2.3.…...

前端过渡动画

前端过渡动画 vue3 1、组件进入视口时向上移动且渐显 1、创建js文件addViewportEffect.js function slideDownEffect(element) {console.log("执行");element.style.transform translateY(0);element.style.opacity 1; }/*** 添加视口效果到指定的类名元素上。…...

actual combat 38 ——vue

vue-cli脚手架 创建命令&#xff1a;vue create 项目名称 eslint 如何关闭&#xff1f; vue.config.js文件中加 module.exports {lintOnSave: false }文件全代码&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpile…...

测试面试宝典(四十七)— 功能测试用例一般包含哪些内容

首先&#xff0c;明确测试用例的编号和名称&#xff0c;以便于识别和管理。 其次&#xff0c;详细描述测试的目标和背景&#xff0c;让其他人能够清楚了解该测试用例的目的和适用场景。 接着是测试的步骤&#xff0c;需要清晰、准确地列出每一个操作步骤&#xff0c;包括输入…...

rust_mac环境安装

在 macOS 上安装 Rust 很简单。你可以使用 Rust 提供的安装工具 rustup。下面是安装步骤&#xff1a; 打开终端。 运行以下命令以安装 rustup 和 Rust&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh按照提示进行操作&#xff1a; 这个命令将下载并…...

【前端面试】七、算法-递归

常考算法 排序算法&#xff1a;快速排序、归并排序、堆排序等。 查找算法&#xff1a;二分查找、哈希表查找等。 动态规划&#xff1a;解决最优化问题&#xff0c;如斐波那契数列、最长公共子序列等。 图论算法&#xff1a;最短路径&#xff08;Dijkstra、Floyd-Warshall&am…...

CmsEasy逻辑漏洞--零元购

CmsEasy逻辑漏洞--零元购 选择购买MackBook 购买成功后会员中心发现多出8100快钱 然后就可以正常购买了...

审核员能力模型——冰山模型说人话版

&#x1f4cb; 审核概论系列 第9篇/共10篇知识和技能不等于能力。认证审核员到底需要什么能力&#xff1f;麦克利兰冰山模型告诉你&#x1f4ca; 真实场景&#xff1a;CCAA注册审核员考试通过率大约只有30%-40%。很多人专业知识学了不少&#xff0c;ISO 9001标准背得滚瓜烂熟&…...

归并排序:分治思想的经典应用

归并排序一、核心原理分治思想分&#xff1a;把数组不断从中间拆成左右两半&#xff0c;直到每个子数组只剩 1 个元素&#xff08;天然有序&#xff09;&#xff1b;治&#xff1a;把两个有序子数组 合并 成一个大的有序数组&#xff1b;递归向上合并&#xff0c;最终整个数组有…...

本地化部署AI做表格工具评测:数以轻舟Agent技术架构与落地实践

一、产品定位与核心架构数以轻舟Agent是一款面向Excel数据处理场景的垂直型AI智能体&#xff0c;由北京乾策数智科技有限公司开发&#xff0c;2025年12月推出首款产品&#xff0c;2026年5月正式上线本地化部署版本。产品核心定位并非通用AI助手&#xff0c;而是聚焦"AI做表…...

UNet3+全解析:从结构创新到医学图像分割实战

1. UNet3为什么能成为医学图像分割的新标杆&#xff1f; 第一次看到UNet3的论文时&#xff0c;我正被一个肝脏CT分割项目折磨得焦头烂额。当时试过UNet、UNet、Attention UNet等各种变体&#xff0c;但总在一些微小病灶的边界分割上差强人意。直到把UNet3的代码跑起来&#xff…...

构建企业级日志监控:免费Syslog服务器部署方案

构建企业级日志监控&#xff1a;免费Syslog服务器部署方案 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 在分布式系统架构中&#xff0c;网络设备、服务器和应…...

HCIA前三章综合实验报告

实验要求按照图示配置IP地址完成路由器之间的协议配置构建需求的环境&#xff0c;配置MGRE&#xff0c;GRE测试全网通实验配置&#xff08;1&#xff09;配置IP地址[R1-GigabitEthernet0/0/0]ip address 192.168.1.2 24[R1-Serial4/0/0]ip address 15.1.1.1 24[R2-GigabitEther…...

中国科学技术大学学位论文LaTeX模板ustcthesis:学术写作的终极解决方案

中国科学技术大学学位论文LaTeX模板ustcthesis&#xff1a;学术写作的终极解决方案 【免费下载链接】ustcthesis LaTeX template for USTC thesis 项目地址: https://gitcode.com/gh_mirrors/us/ustcthesis 中国科学技术大学学位论文LaTeX模板ustcthesis是专为中科大师生…...

别再用Excel硬扛了!SPSS数据视图和变量视图保姆级上手指南

别再用Excel硬扛了&#xff01;SPSS数据视图和变量视图保姆级上手指南 第一次打开SPSS时&#xff0c;很多从Excel转过来的用户会愣住——这个界面怎么既熟悉又陌生&#xff1f;左边明明也是表格&#xff0c;但为什么右键菜单里找不到"设置单元格格式"&#xff1f;右上…...

通过Taotoken CLI工具一键配置团队所有成员的开发环境

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键配置团队所有成员的开发环境 当团队开始使用多个大模型进行开发时&#xff0c;为每位成员逐一配置API密钥…...

Linux系统编程-makefile文件与make命令的使用

目录 一.makefile文件 1.1什么是makefile 1.2 makefile的一、二、三 1.2.1 一个规则 (1) 两个基本原则&#xff1a; (2) 使用 ALL 来指定makefile的终极目标&#xff1a; 1.2.2 两个函数 (1) src $(wildcard *.c) (2) obj $(patsubst %.c, %.o, $(src)) 1.2.3 三个…...