Android Wifi Direct 安卓手机间wifi直连

【安卓】安卓设备实现wifi display解决方案 通过演示上面的Demo我们发现Wifi direct技术原理是底层实现了Scoket链接,它是可以替代蓝牙传输的技术实现,传输效率快蓝牙传输100倍,但是也有缺点就是功耗高(耗电)。安卓手机用户都知道我们的安卓手机有一个wifi直连功能,在点击设置–》WIFI–》更多Wifi设置–》Wifi直连;安卓手机默认有source端的api,只是没有暴露出来给开发者,这也是我们在Google开发者文档看不到的原因,我们如果想要调用,需要通过反射的方式(有技术实现难度,而且各个手机厂商的api有可能被定制化了)。 阅读详情

         Wi-Fi Direct™的API允许应用程序不通过网络或热点,直接与周围的设备进行连接。应用程序可以迅速地查找附近的设备,交换信息。并且与蓝牙相比,Wi-Fi Direct的通讯范围更大。

        通过Wi-Fi Direct查找附近的设备,并与之连接一般包括如下几个步骤:

  • 设置应用程序权限
  • 创建一个广播接收器和对等网络管理器 
  • 初始化对等点的搜索
  • 获取对等点列表
  • 连接一个对等点


一、设置应用程序权限


        使用Wi-Fi Direct,需要向你的清单文件添加 CHANGE_WIFI_STATE,ACCESS_WIFI_STATE 和INTERNET 权限。Wi-Fi Direct不需要因特网连接,但需要使用标准Java套接字,而套接字需要INTERNET 权限,因此,你需要有以下的权限才可以使用Wi-Fi Direct。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.nsdchat"
    ...

    <uses-permission
        android:required="true"
        android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.INTERNET"/>
    ...

注:

android.permission.ACCESS_WIFI_STATE       允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)
android.permission.CHANGE_WIFI_STATE      允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)
android.permission.INTERNET                           当需要访问网络的时候,需要在AndroidManifest.xml里面添加访问网络的权限


二、创建一个广播接收器和对等网络管理器

        使用Wi-Fi Direct,你需要监听广播意图(Intents)来获知某个特定事件的发生。在你的应用程序中,初始化一个 IntentFilter,并让它监听以下动作:

WIFI_P2P_STATE_CHANGED_ACTION

  • * 表明Wi-Fi对等网络(P2P)是否已经启用

WIFI_P2P_PEERS_CHANGED_ACTION

  • * 表明可用的对等点的列表发生了改变

WIFI_P2P_CONNECTION_CHANGED_ACTION

  • * 表示Wi-Fi对等网络的连接状态发生了改变

WIFI_P2P_THIS_DEVICE_CHANGED_ACTION

  • * 表示该设备的配置信息发生了改变


private final IntentFilter intentFilter = new IntentFilter();
...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //表示Wi-Fi对等网络状态发生了改变
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);

    //表示可用的对等点的列表发生了改变
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);

    //表示Wi-Fi对等网络的连接状态发生了改变
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);

    //设备配置信息发生了改变
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

    ...
}

        在 onCreate() 方法的最后,获得了 WifiP2pManager 的一个实例,并调用了他的 initialize() 方法。这个方法返回一个 WifiP2pManager.Channel 对象。稍后会用它把你的应用程序连接到Wi-Fi Direct框架中。

@Override

Channel mChannel;

public void onCreate(Bundle savedInstanceState) {
    ....
    mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    mChannel = mManager.initialize(this, getMainLooper(), null);
}

        现在,创建一个新的 BroadcastReceiver 类,用来监听系统的Wi-Fi P2P状态的改变。在 onReceive() 方法中,添加一个条件来处理上面列出的各种P2P状态的变更。

@Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {

            //确定Wi-Fi Direct模式是否已经启用,并提醒Activity。
            int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
            if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
                activity.setIsWifiP2pEnabled(true);
            } else {
                activity.setIsWifiP2pEnabled(false);
            }
        } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {

    //对等点列表已经改变!我们可能需要对此做出处理。

        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {

    //连接状态已经改变!我们可能需要对此做出处理。

        } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
            DeviceListFragment fragment = (DeviceListFragment) activity.getFragmentManager()
                    .findFragmentById(R.id.frag_list);
            fragment.updateThisDevice((WifiP2pDevice) intent.getParcelableExtra(
                    WifiP2pManager.EXTRA_WIFI_P2P_DEVICE));

        }
    }

       最后,添加代码,在主活动激活时,注册意图过滤器(Intent Filter)和广播接收器;在主活动暂停时把它们注销。最好在 onResume() 和 onPause() 方法中完成该操作。

/* 注册一个与意图(Intent)值匹配的广播接收器* /
    @Override
    public void onResume() {
        super.onResume();
        receiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);
        registerReceiver(receiver, intentFilter);
    }

    @Override
    public void onPause() {
        super.onPause();
        unregisterReceiver(receiver);
    }

三、初始化对等点的搜索

         使用Wi-Fi Direct搜索附近的设备,需要调用 discoverPeers()方法。其参数如下:

          WifiP2pManager.Channel 是在你初始化对等网络的mManager时收到的。

          WifiP2pManager.ActionListener 的一个实例,实现了系统在查找成功或失败时会调用的方法。


mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {

        @Override
        public void onSuccess() {
        //查找初始化成功时的处理写在这里。

        //实际上并没有发现任何服务,所以该方法可以置空。
        //对等点搜索的代码在onReceive方法中,详见下文。
        }

        @Override
        public void onFailure(int reasonCode) {
        //查找初始化失败时的处理写在这里。
        //警告用户出错了。
        }
});



        此处只初始化了对等点的搜索。 discoverPeers() 方法启动了搜索线程,并立刻返回。系统通过调用给定的动作监听器的方法来进行初始化,并会在成功初始化对等点进程时通知你。同时,搜索也会持续进行,直到一个连接被初始化,或者一个P2P组形成。


四、获取对等点列表

        获取对等点的列表并进行处理,首先实现 WifiP2pManager.PeerListListener 接口,它提供了Wi-Fi Direct检测到的对等点信息。参见下面的代码片段。

       

private List peers = new ArrayList();
    ...

    private PeerListListener peerListListener = new PeerListListener() {
        @Override
        public void onPeersAvailable(WifiP2pDeviceList peerList) {

            //旧的不去,新的不来
            peers.clear();
            peers.addAll(peerList.getDeviceList());

            //如果AdapterView可以处理该数据,则把变更通知它。比如,如果你有可用对等点的ListView,那就发起一次更新。
            ((WiFiPeerListAdapter) getListAdapter()).notifyDataSetChanged();
            if (peers.size() == 0) {
                Log.d(WiFiDirectActivity.TAG, "No devices found");
                return;
            }
        }
    }

        现在,修改你的广播接收器的 onReceive() 方法,以便在收到一个带有 WIFI_P2P_PEERS_CHANGED_ACTION 动作的意图(Intent)时调用 requestPeers()方法。你得想办法把这个监听器传给接收器。其中一个方法是,将它作为一个参数传递给广播接收器的构造函数。

public void onReceive(Context context, Intent intent) {
    ...
    else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {

        //从Wi-Fi P2P管理器中请求可用的对等点。
        //这是个异步的调用,
        //并且,调用行为是通过PeerListListener.onPeersAvailable()上的一个回调函数来通知的。
        if (mManager != null) {
            mManager.requestPeers(mChannel, peerListener);
        }
        Log.d(WiFiDirectActivity.TAG, "P2P peers changed");
    }...
}

至此,带有 WIFI_P2P_PEERS_CHANGED_ACTION 动作的意图(Intent)将会发起一个更新对等点列表的请求。

五、连接一个对等点

        为了连接一个对等点,需要先创建一个新的 WifiP2pConfig 对象,然后从代表你想连接的设备的 WifiP2pDevice 中拷贝数据进去。再调用 connect() 方法。

@Override
    public void connect() {

        //使用在网络上找到的第一个设备。
        WifiP2pDevice device = peers.get(0);

        WifiP2pConfig config = new WifiP2pConfig();
        config.deviceAddress = device.deviceAddress;
        config.wps.setup = WpsInfo.PBC;

        mManager.connect(mChannel, config, new ActionListener() {

            @Override
            public void onSuccess() {
            // WiFiDirectBroadcastReceiver将会通知我们。现在可以先忽略。
            }

            @Override
            public void onFailure(int reason) {
                Toast.makeText(WiFiDirectActivity.this, "Connect failed. Retry.",
                        Toast.LENGTH_SHORT).show();
            }
        });
    }

        在这个代码片段中实现的 WifiP2pManager.ActionListener 只会在初始化成功或失败时通知你。要监听连接状态的变更,需要实现 WifiP2pManager.ConnectionInfoListener 接口。其回调函数 onConnectionInfoAvailable()将会在连接状态改变时通知你。对于多个设备连接一个设备的情况(比如,多于3个玩家的游戏,或者聊天软件),其中一个设备将会被指定为“群主”。

       

@Override
    public void onConnectionInfoAvailable(final WifiP2pInfo info) {

        // InetAddress在WifiP2pInfo结构体中。
        InetAddress groupOwnerAddress = info.groupOwnerAddress.getHostAddress());

        //组群协商后,就可以确定群主。
        if (info.groupFormed && info.isGroupOwner) {
        //针对群主做某些任务。
        //一种常用的做法是,创建一个服务器线程并接收连接请求。
        } else if (info.groupFormed) {
        //其他设备都作为客户端。在这种情况下,你会希望创建一个客户端线程来连接群主。
        }
    }

        现在回到广播接收器的 onReceive() 方法中,修改监听 WIFI_P2P_CONNECTION_CHANGED_ACTION 意图(Intent)的部分。收到该意图(Intent)时,调用 requestConnectionInfo() 。这是一个异步的调用,所以结果会传给作为参数的连接信息监听器。

...
        } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {

            if (mManager == null) {
                return;
            }

            NetworkInfo networkInfo = (NetworkInfo) intent
                    .getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);

            if (networkInfo.isConnected()) {

            //我们连上了其他的设备,请求连接信息,以找到群主的IP。
                mManager.requestConnectionInfo(mChannel, connectionListener);
            }
            ...

    


Android WLAN 直连 功能又称“Wi-Fi 点对点”,它允许支持设备直接使用 WLAN 直连协议发现其他设备并与之互连,无需连接到互联网或移动网络。此功能是基于(WFA)构建的,它支持在断开网络的情况下,在可信设备和应用之间共享高吞吐量数据。 阅读详情

相关推荐

告别数据线!手把手教你用Windows 10/11的WiFi Direct直连手机传文件(附工具下载)

本文详细介绍了如何利用Windows 10/11的WiFi Direct技术实现手机与电脑的无线文件传输,无需数据线或路由器中转。通过对比不同传输方式的优劣,提供硬件兼容性检查、工具下载及分步配置指南,帮助用户快速掌握这一高效传输方案,解决大文件传输难题。

weixin_28683391的博客 967

Wi-Fi Direct:在 Android 上构建基于 P2P 技术的局域网通信

在 Android 应用中实现局域网内设备通信,可以使用 P2P(Peer-to-Peer)技术来实现。P2P 技术使得设备之间可以直接相互通信,而不必通过服务器或者其他中介设备。在 Android 中,你可以使用 Wi-Fi Direct 技术来实现 P2P 通信。当然,上述示例只是一个简单的演示,实际应用中需要处理很多细节以保证。在这个回调函数中,你需要将设备列表保存在一个 List 中。需要注意的是,传输数据之前需要确保两台设备已经成功建立连接。对象来指定要连接的设备,然后使用。

工宗浩生财指南针 1982

告别数据线:在Windows上利用WiFi Direct实现与手机的高速无线互传

本文详细介绍了在Windows上利用WiFi Direct实现与手机高速无线互传的三种方案,包括微软官方UWP应用、第三方工具Feem和命令行方法。通过对比评测和避坑指南,帮助用户摆脱数据线束缚,实现快速稳定的文件传输,特别适合户外和临时场景使用。

weixin_30480075的博客 481

Android WifiDirect

Android WifiDirect 1. 简介 WiFi直连也就是WiFi设备点对点连接(WiFi P2P),它允许具有适当硬件的Android 4.0(API级别14)或更高版本的设备通过Wi-Fi直接相互连接,而无需中间接入点。使用这些API,您可以发现并连接到其他设备(前提是每个设备支持Wi-Fi P2P),然后通过比蓝牙连接更长的距离快速连接进行通信。这对于在用户之间共享数据的应用程序很有用,例如多人游戏或照片共享应用程序。 Wi-Fi P2P API包含以下主要部分: 允许您发现,请求和连接到对

qq_38412354的博客 2074

告别数据线!用Windows自带的WiFi Direct功能,无线传文件到手机(保姆级图文教程)

本文详细介绍了如何利用Windows自带的WiFi Direct功能实现电脑与手机之间的无线文件传输,无需数据线或路由器。通过保姆级图文教程,包括设备兼容性检查、分步设置指南、三种高效传输方法及常见问题排查,帮助用户轻松掌握这一高速、安全的无线传输技术。

weixin_28730131的博客 880

Miracast投屏实战:如何用WiFi-Direct实现手机到电视的无延迟投屏(附常见问题排查)

本文详细介绍了Miracast投屏技术的实战应用,重点解析了其如何利用WiFi-Direct协议实现手机到电视的无延迟直连。文章提供了从设备发现、连接到优化的完整步骤,并针对常见的延迟、卡顿、连接失败等问题,给出了基于WiFi-Direct、RTSP等核心协议的深度排查与优化指南,帮助用户打造流畅的无线大屏体验。

y2z3a4b5c的博客 519

关于Microsoft Wi-Fi Direct Virtual Adapter虚拟网卡和安卓手机向Windows10笔记本投屏问题

说明:本人小白,头一次发博客,针对小白用户,方便理解,可能有地方叙述的不准确或者不专业,请大佬们见谅!实验环境为华为荣耀9X(EMUI 9),联想Y7000(Windows10 1909) 突然发现手机WLAN搜索到了DIRECT-NtLAPTOP,为啥? 可能有些用笔记本的小伙伴,在自己本本连接无线网状态时,发现周围的无线信号存在“DIR ECT-NtLAPTOP”,手机WLAN能搜索到,而且信...

qq_37490555的博客 5万+

Android Wifi——WLAN直连(十三)

WLAN 直连 (对等连接或P2P) 技术,通过 WLAN 进行直接互联。使用这些 API,您可以实现支持 WLAN P2P 的设备间相互发现和连接,从而获得比蓝牙连接更远距离的高速连接通信效果。对于多人游戏或照片共享等需要在用户之间共享数据的应用而言,这一技术非常有用。

小旭的专栏 1988

android手机wifi设置ipv6,更改WiFi-Direct IP范围?在Android WiFi-Direct中强制使用IPv6?...

我有两个Android KitKat手机,两个都是作为Group Owners运行WiFi-Direct组,我们称之为GO1和GO2我设法将GO1作为传统客户端连接到GO2而不破坏任何(先前设置的)wifi直接组.问题是,正如您可能知道的那样,GO IP地址在Android源代码中是硬编码的,并设置为192.168.49.1因此,我的两个设备GO1和GO2在其本地网络上都具有相同的IP地址(**)...

weixin_31061699的博客 2657

与Wi-Fi直接连接-Connecting with Wi-Fi Direct

Wi-Fi Direct™的 API 允许应用程序不通过网络或热点,直接与周围的设备进行连接。应用 程序可以迅速地查找附近的设备,交换信息。并且与蓝牙相比,Wi-Fi Direct 的通讯范围 更大。 这节课将向你介绍,如何使用 Wi-Fi Direct 查找附近的设备,并与之连接。

WiFi Direct介绍

文档从wifi联盟下载而来,主要介绍Wifi Direct技术的用途及前景,还有关键机制和重要功能。 http://www.wi-fi.org/discover-and-learn/wi-fi-direct™

安卓相机直连SDK架构设计:如何为图片直播构建可靠传输通道

图片直播技术解决方案:安卓相机直连实战 本文针对图片直播市场的技术挑战,提出了一套经过验证的安卓相机直连解决方案。核心解决三大问题: 连接稳定性:通过智能连接管理层支持Wi-Fi直连/USB/热点等多模式自动切换,实现99%以上的连接成功率; 传输可靠性:采用分块并发传输(512KB/块)和断点续传机制,使20MB RAW文件传输时间缩短至3.8秒; 系统兼容性:通过协议适配层统一不同相机厂商接口,并处理各安卓厂商的后台限制。 方案特色包括: 分层架构设计,支持实时拍摄、云端同步、现场打印全流程 日均185

2601_95741880的博客 430

XDMA 驱动安装与性能测试全流程解析

本文详细解析了XDMA驱动的完整安装与性能测试流程。从环境准备、源码获取、编译安装到驱动加载与设备验证,逐步指导用户打通FPGA加速卡与主机间的高速数据通道。重点介绍了如何通过官方测试脚本进行功能验证与带宽性能测试,帮助用户评估XDMA驱动的实际传输效能,为AI推理、高频交易等低延迟高带宽应用奠定基础。

weixin_29216049的博客 524

direct wifi 投屏_direct wifi 投屏_告别Wifi直接投AOC无线投屏显示器轻松用

显示器领域内不乏一些功能实用的创新技术,也不乏一些与传统显示器相比,显得“非同一般”的显示器。今天我们要聊的主题,就是AOC的一款“无线投屏显示器”,顾名思义,这款显示器最大的特点就是支持Android/IOS/Windows无线智能连接技术,能够帮助用户彻底摆脱连接线的束缚。告别Wifi直投 AOC无线投屏显示器轻松用AOC的无线投屏显示器支持Miracast功能,通过WiFi CERTIFIE...

weixin_32124135的博客 613

统信UOS专业版服务器无人值守安装

(2)、专业版:主要针对整机厂商、政府单位、事业单位和企业用户使用,cpu目前支持x86、arm、mips、sw64和LoogngArch架构,试用期免费获得90天的使用,随后需要单位采购授权,获得正式激活码后才可以正常使用。其中企业版代号为d,行业版为a/c,欧拉版则为e,在最近的更新中,c版已经停止更新迭代,后续行业版本将都为a版,版本代号体现在镜像名字中以及版本号上,例如1050d则表示企业版1050版本。UOS系统服务器版本分为:专业版(d版)、行业版(a版)、欧拉版(e版)

靠谱运维 2251

UniTouch:多模态触觉对齐技术如何重塑零样本跨模态应用

UniTouch模型通过创新的多模态触觉对齐技术,成功将触觉数据映射到通用的视觉-语言嵌入空间,解决了触觉模态的“孤岛困境”。该技术利用对比学习和传感器特定标记,实现了高质量的零样本学习能力,使模型无需额外训练即可完成触觉分类、描述等任务,并能驱动跨模态生成,为机器人、VR和智能制造等领域提供了强大的触觉理解新范式。

weixin_29044713的博客 409

hp打印机怎么连接电脑_如何使用手机无线连接HP打印机

首先手机预先安装WPS APP(打印WORD PDF文件需要使用此软件),然后苹果手机无需下载其他APP,安卓手机需要下载 HP SMART和惠普打印服务插件。先把需要打印的文件保存到手机里,包括图片和文档。然后打印机去除保护包装,放置好打印测试用的纸张,通电开机。大多数机型是默认热点开启的,不用设置开启热点(WIFI DIRECT),需要设置的机型像126NW、132NW,在打印机处于...

weixin_39760650的博客 4848

HDMI采集芯片 ADV7611采集PC数据调试总结

开发环境:TI DM365 平台, ADV7611采集板, CCS5.5 第一步:I2C调通 这张是 ADV7611 读写的时序图,可以看出在写和读的时候发送地址数据的时候的停止位信息是不同的,在写的时候是不需要停止位的,但是读的时候是要停止位的。如果I2C在硬件没问题的时候可以考虑是不是这方面的问题。 第二步:map 配置: 根据官方推荐配置进行配置:   0x98,

带头奋青的博客 1万+

Open Headunit快速上手:USB三步连接Android Auto,告别原厂车机限制

Open Headunit 是一款开源安卓应用,能把任意支持 USB Host 的安卓平板变成 Android Auto 车机——无需购买昂贵的原厂主机,只需一根 USB 线,3 分钟让手机界面投屏到车内屏幕。本文带你完成从安装到 USB 三步连接的完整流程,并附上常见卡点问题的快速解决办法。 [![Open Headunit把安卓平板变成Android Auto车机](https://raw.

gitblog_01150的博客 443

麒麟V10系统下CoreDump文件自动归档与快速定位指南(附coredumpctl实战)

本文详细介绍了在麒麟V10操作系统下,如何利用systemd-coredump机制和coredumpctl工具实现CoreDump文件的自动化管理与高效调试。内容涵盖从系统架构解析、自动化配置策略,到使用coredumpctl进行快速查询、过滤与深度分析的实战指南,旨在帮助运维人员和开发者快速定位系统崩溃的根本原因,提升问题排查效率。

gg901的博客 220

仿人型机械臂逆运动学避坑指南:当末端三关节平行时如何处理奇异点

本文深入探讨了6R仿人型机械臂在末三轴平行结构下的逆运动学求解策略,重点分析了运动学逆解中的奇异点问题及其处理方法。通过MATLAB实现展示了D-H参数建模、几何解析法求解流程以及奇异点规避策略,为工业机器人开发提供了实用的数值算法方案和工程优化技巧。

sss66的博客 882

wifi小车制作备忘

一、软件设计 决定刷openwrt,先在网上找教程看怎么刷 安卓编程,通讯模块。linux命令。 后来想想可以用安卓手机作为上位机,下位机用51单片机+L298N驱动芯片, 所以决定用PL2303芯片作为安卓手机usb转串口线,控制单片机, 这一步需要再安卓手机端安装PL2303驱动程序,需要找linux下的驱动做移植,但是找到一个比较好的方法就是一个开源的usb转串口源代码,项目名

black0591 1682

YOLOv11模型改进-模块-引入空间池化模块StripPooling 解决遮挡、小目标

本文介绍了一种新的空间池化策略,称为,用于场景解析。结构:包括两个平行路径,分别进行水平和垂直方向的条带池化,然后通过1D卷积层进行特征调整。:结合了条带池化和传统的空间池化,分别用于捕捉长距离和短距离的依赖关系。作用捕捉长距离依赖:通过长条形的池化窗口,有效捕捉分布离散的区域之间的关系。避免不相关信息干扰:窄条形的池化窗口有助于捕捉局部上下文,防止不相关区域干扰标签预测。提高场景解析性能:在多个基准数据集上,证明了这种方法能够显著提升场景解析的效果。

qq_64693987的博客 4204

Miracast协议栈深度解析:从WiFi-Direct握手到H.264码流的完整链路

Miracast作为Wi-Fi联盟推的开放标准,理应是安卓和Windows的"通用语",实际部署中却问题不断。运维遇到问题时,按协议栈分层排查:先看802.11 P2P是否建起来(iw/Wireshark),再看GAS服务发现是否通(抓Action帧),然后盯RTSP SETUP的wfd_video_formats协商(tcp.port==7236),最后才怀疑编码或显示问题。如果Sink的GAS响应里没宣告Wi-Fi Display服务,Windows设备管理器里会显示"此设备不支持接收投影"。

MirRuzn的博客 236

基于STM32L4XX 、HAL库的DRV8311三相无刷直流电机(BLDC)驱动应用C语言程序设计

是德州仪器(TI)推出的一款针对三相无刷直流(BLDC)电机或永磁同步电机(PMSM)的集成驱动器芯片。:集成了三个半桥MOSFET、门极驱动电路、电荷泵(支持100%占空比)、稳压器以及多种保护电路。:工作电压最高可达,持续输出电流可达,峰值电流可达。:通过引脚直接控制每个半桥的PWM和使能。这种方式需要MCU输出6路信号,控制更灵活。:通过SPI总线配置内部寄存器,仅需PWMA/B/C三路PWM信号即可控制电机。可以读取故障状态、配置参数(如死区时间、电流保护阈值等),是更常用和推荐的方式。

PP_Cottage的博客 551

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

direct wifi 投屏_告别Wifi直接投AOC无线投屏显示器轻松用

显示器领域内不乏一些功能实用的创新技术,也不乏一些与传统显示器相比,显得“非同一般”的显示器。今天我们要聊的主题,就是AOC的一款“无线投屏显示器”,顾名思义,这款显示器最大的特点就是支持Android/IOS/Windows无线智能连接技术,能够帮助用户彻底摆脱连接线的束缚。告别Wifi直投 AOC无线投屏显示器轻松用AOC的无线投屏显示器支持Miracast功能,通过WiFi CERTIFIE...

weixin_31140863的博客 1412

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: BlockingQueue 阻塞队列 -- Java 多线程
下一篇: lombok 介绍及基本使用方法
hack8
博客等级 码龄18年 109粉丝 128原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值