首页 > 其他分享 >Android 9.0 修改WLAN热点名称为MAC地址后四位

Android 9.0 修改WLAN热点名称为MAC地址后四位

时间:2024-10-25 11:48:14浏览次数:8  
标签:WLAN MAC mh length result ADDRESS Android mMac

这个需求主要是读取mac地址,mac地址一般是用写号工具写入到NVRAM,所以需要从NVRAM读取准确的地址。

  • 导入nvram操作用到的库:

frameworks/opt/net/wifi/service/Android.mk

LOCAL_STATIC_JAVA_LIBRARIES := \
  vendor.mediatek.hardware.nvram-V1.0-java
  • 读取wifi mac地址并设置热点名称和密码:

frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiApConfigStore.java

//mh.add
import vendor.mediatek.hardware.nvram.V1_0.INvram;
import android.os.RemoteException;
//mh.end

private WifiConfiguration getDefaultApConfiguration() {
    WifiConfiguration config = new WifiConfiguration();
    config.apBand = WifiConfiguration.AP_BAND_2GHZ;
   //mh.@{
    /*config.SSID = mContext.getResources().getString(
            R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid();*/
    String mMac = getMacAddress();
    mMac = mMac.replace(":", "");
    mMac = mMac.substring(mMac.length() - 4, mMac.length());
    config.SSID = "CloboticsAP_" + mMac;
    //mh.@}
    config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
    String randomUUID = UUID.randomUUID().toString();
    //first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
    config.preSharedKey = "Cbs_123456";/*randomUUID.substring(0, 8) + randomUUID.substring(9, 13);*///mh.modify
    return config;
}

//mh.add
private static final String DEFAULT_MAC_ADDRESS = "01:02:03:04:05:06";
private static final String MAC_ADDRESS_FILENAME = "/mnt/vendor/nvdata/APCFG/APRDEB/WIFI";
private static final int MAC_ADDRESS_OFFSET = 4;
private static final int MAC_ADDRESS_DIGITS = 6;
//读取mac地址的方法
public String getMacAddress() {
    String result = DEFAULT_MAC_ADDRESS;
    StringBuffer nvramBuf = new StringBuffer();
    try {
        int i = 0;
        String buff = null;
        INvram agent = INvram.getService();
        if (agent != null) {
            buff = agent.readFileByName(MAC_ADDRESS_FILENAME, MAC_ADDRESS_OFFSET + MAC_ADDRESS_DIGITS);
            // Log.i(TAG, "Raw data:" + encryptMessage(buff));
            if (buff.length() >= 2 * (MAC_ADDRESS_OFFSET + MAC_ADDRESS_DIGITS)) {
                // Remove the \0 special character.
                int macLen = buff.length() - 1;
                for (i = MAC_ADDRESS_OFFSET * 2; i < macLen; i += 2) {
                    if ((i + 2) < macLen) {
                        nvramBuf.append(buff.substring(i, i + 2));
                        nvramBuf.append(":");
                    } else {
                        nvramBuf.append(buff.substring(i));
                    }
                }
                result = nvramBuf.toString();
            } else {
                Log.e(TAG, "Fail to read mac address");
            }
        } else {
            Log.e(TAG, "Nvram is null");
        }
    } catch (RemoteException e) {
        e.printStackTrace();
    }
    if (result.length() > DEFAULT_MAC_ADDRESS.length()) {
        // remove extra characters if length longer than expected
        result = result.substring(0, DEFAULT_MAC_ADDRESS.length());
    } else if (result.length() < DEFAULT_MAC_ADDRESS.length()) {
        // set to default if length shorted than expected
        result = DEFAULT_MAC_ADDRESS;
    }
    //Log.d(TAG, "result: " + encryptMessage(result));
    return result;
}
//mh.add end

标签:WLAN,MAC,mh,length,result,ADDRESS,Android,mMac
From: https://blog.csdn.net/yesdehua/article/details/143229426

相关文章

  • macOS 13 Ventura (苹果最新系统)v13.7正式版
    Apple今日发布了macOS的下一个版本,称为macOSVentura,它具有多项新功能,包括StageManager、ContinuityCamera、新的安全更新等。完整的兼容性列表如下:iMac(2017年及更高版本)iMacProMacBookair(2018年及更新机型)MacBookPro(2017年及更新机型)MacPro(2019年及更新机......
  • 在 Mac 上有什么好的打开 .sqlite 或者 .db 数据库文件的软件
    在Mac上好的打开.sqlite或者.db数据库文件的软件有:1.DBBrowserforSQLite;2.SQLiteStudio;3.Base;4.PawSQLitePawset;5.NavicatforSQLite;6.DBeaver。DBBrowserforSQLite是一款免费、开源的SQLite数据库浏览器,适用于Mac、Windows和Linux系统。在Mac上打开.sql......
  • mac scrcpy 报错 does not exist or is not a regular file,ERROR: Server connection
    scrcpymac与极空间冲突问题:➜~scrcpyscrcpy2.7<https://github.com/Genymobile/scrcpy>INFO:ADBdevicefound:INFO:-->(usb)8AJY0LU0QdevicePixel_3_XLstat:NosuchfileordirectoryERROR:'/Applications/极空间.ap......
  • Android OpenGL光照效果
    在计算机图形学领域,光照仿真是一个重要的研究领域,它对游戏画面的提升、电影和电视节目中的电脑生成图像(CGI)等方面产生了显著影响。通过使用不同的光照算法,我们可以改变场景的外观,例如模拟从白天到夜晚的过渡,或者在山体上产生山峰、峡谷和裂隙的效果。即使是二维场景,也可以通......
  • Android 13.0 系统framework修改低电量关机值为2%
    1.前言在13.0的系统rom产品定制化开发中,在系统关于低电量关机的值,每个平台都不同,根据实际开发底层硬件的要求看实际情况来调整这个值,所以需要分析相关的电量变化执行的代码流程,来实现这个功能,接下来看具体怎么实现2.系统framework修改低电量关机值为2%的核心类frameworks\b......
  • Android 10.0 截屏流程
    通常未通过特殊定制的Android系统,截屏都是经过同时按住音量下键和电源键来截屏。本篇文章就只讨论使用这些特殊按键来进行截屏。这里我们就要明白事件是在哪里进行分发拦截的。通过源码的分析,我们发现是在PhoneWindowManager.java中。PhoneWindowManager#interceptKeyB......
  • 【AI+手机】如何利用GPT实现Android软件自动化交互?全面解读MetaGPT Android助手实现原
    大家好,我是同学小张,+v:jasper_8017一起交流,持续学习AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,订阅我的大模型专栏,共同学习和进步。前段时间,AI+手机的组合挺火的。想象一下,你想给某个人发短信,只需要对手机说一句:给xxx发个短信问好。AI自动识别意图,自动给你打开......
  • android开发flutter项目每次运行都很慢的解决方法
    android开发flutter项目每次运行都很慢的解决方法1.修改依赖库访问源为国内阿里云镜像构建慢的原因一般都是卡在远程依赖地址访问的速度问题,比如国外镜像的访问,那就改为国内的,比如阿里云的看看能不能解决问题//阿里云地址配置说明:https://developer.aliyun.com/mvn/guide//......
  • 谷歌地图 | 与 Android 版导航 SDK 集成的最佳实践
    谷歌最近宣布了导航SDK,它可以让您将熟悉的Google地图逐向导航体验无缝集成到您的Android和iOS应用程序中。这篇博文概述了一些最佳实践,您可以使用这些实践为您的Android应用程序使用导航SDK构建流畅、一致且可靠的导航体验。 与导航地图交互与NavigationSDK集......
  • Cinemachine系列——CinemachineSmoothPath&Body Tracked Dolly
    今天来看下我感觉比较有意思的功能,将摄像机像电影一样固定在一条轨道上进行拍摄。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本号)/CinemachineExampleScenes/Scenes/TrackedDo......