android-wifi-tether是简单实用的网络共享软件(通过WIFI共享)。

项目如图:

效果如图:

该项目总共18个目标文件!~

jni就两个文件,有两个接口函数!实现如下:

JNIEXPORT jstring JNICALL Java_com_googlecode_android_wifi_tether_system_NativeTask_getProp(JNIEnv *env, jclass class, jstring name)
{const char *nameString;nameString = (*env)->GetStringUTFChars(env, name, 0);char value[PROPERTY_VALUE_MAX];char *default_value;jstring jstrOutput;default_value = "undefined";property_get(nameString, value, default_value);jstrOutput = (*env)->NewStringUTF(env, value);(*env)->ReleaseStringUTFChars(env, name, nameString);  return jstrOutput;
}JNIEXPORT jint JNICALL Java_com_googlecode_android_wifi_tether_system_NativeTask_runCommand(JNIEnv *env, jclass class, jstring command)
{const char *commandString;commandString = (*env)->GetStringUTFChars(env, command, 0);int exitcode = system(commandString); (*env)->ReleaseStringUTFChars(env, command, commandString);  return (jint)exitcode;
}int property_get(const char *key, char *value, const char *default_value)
{int len;len = __system_property_get(key, value);if(len > 0) {return len;}if(default_value) {len = strlen(default_value);memcpy(value, default_value, len + 1);}return len;
}

代码分析如下:

AccessControlActivity类:获得控制权限。

LogActivity类:日子界面。

MainActivity类:程序主界面,用户登陆时会进行设置判断!~如下:

     // Startup-Checkif (application.startupCheckPerformed == false){application.startupCheckPerformed = true;// Check if required kernel-features are enabled//检查所需的核心功能被启用if (!application.coretask.isNetfilterSupported()){if (application.settings.getBoolean("warning_nonetfilter_displayed", false) == false){openNoNetfilterDialog();application.preferenceEditor.putBoolean("warning_nonetfilter_displayed", true);application.preferenceEditor.commit();}} else{// Check if access-control-feature is supported by kernel//检查内核的访问控制功能的支持if (!application.coretask.isAccessControlSupported()){if (application.settings.getBoolean("warning_noaccesscontrol_displayed", false) == false){openNoAccessControlDialog();application.preferenceEditor.putBoolean("warning_noaccesscontrol_displayed", true);application.preferenceEditor.commit();}application.accessControlSupported = false;application.whitelist.remove();}}// Check root-permission, files//是否拥有权限if (!application.coretask.hasRootPermission())openNotRootDialog();

当检测失败时,就会弹出一个对话框!~~

SetupActivity类:初始化的界面类,主要是设置信息!

TetherApplication类:全局应用,初始化文件信息、文件操作、动态用户数据、mac操纵、更新配置信息、判断设备是否支持、电源操作、下载以及更新程序等等。

TetherService类:后台服务类!

TetherServiceReceiver类:服务操作广播 负责服务的开启与停止。

TetherWidget类继承AppWidgetProvider类更:新状态以及刷新界面!AppWidgetProvider :继承自 BroadcastRecevier , 在AppWidget 应用 update、enable、disable 和 delete 时接收通知。其中,onUpdate、onReceive 是最常用到的方法,它们接收更新通知。

WifiStateChangeReceiver类:wifi改变的广播!

Configuration类://配置信息,针对设备的检测,其中有TI-ADHOC、ZTE BLADE、功能谷歌、HTC Rezound、Bravo - HTC Desire (GSM)、Bravoc - HTC Desire (CDMA)、HTC Amaze、Motorola DroidX (CDMA)、Droid2 (CDMA)、Motorola Targa、Samsung Generic、Samsung Galaxy Nexus、Netd Wlan1、Samsung Galaxy S、Samsung Galaxy S2 SoftAP、LG Optimus S、LG OMAP3 WiLink6、 LG OMAP4 WiLink7,当上述设备有出错时则触发hasKernelFeature(String feature)。

CoreTask类:把信息写入到文件以及从文件读取信息!~

NativeTask类:本地任务 主要是调用jni里面的方法!

其它的就不介绍了!~~~

学习的目标是成熟!~~~~~

开源项目之android-wifi-tether(网络共享软件)相关推荐

  1. GitHub 优秀的 Android 开源项目——转自多篇网络文章

    GitHub 优秀的 Android 开源项目 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的Vie ...

  2. 使用ConnectBot开源项目在android设备上管理你的linux系统

    最近,工作中有使用android通过ssh管理linux系统的需求,找到了这个ConnectBot这个开源项目https://github.com/connectbot/connectbot.http ...

  3. android wifi显示网络受限的问题

    Android系统连接WIFI显示网络连接受限_android系统无法连接网络_阿炎-阿景的博客-CSDN博客 在android11的代码里: 这里的配置,default_captive_portab ...

  4. android wifi 共享网络,安卓手机怎么共享XP的网络 无线wifi共享教程【详解】

    安卓手机怎么共享XP的网络? Wi-Fi是一个无线网络通信技术的品牌,由Wi-Fi联盟(Wi-Fi Alliance)所持有.目的是改善基于IEEE802.11标准的无线网络产品之间的互通性.无线网络 ...

  5. 【开源项目】Android 手写记事 App(半成品)

    该项目已上传到 CSDN 的 Git 平台中 项目地址:https://code.csdn.net/gd920129/whiteboard GIT SSH:git@code.csdn.net:gd92 ...

  6. 开源项目之Android繁体中文输入法

    一款功能强大的输入法,集合 "广东话.拼音.仓颉.速成"四种常用中文输入法,以及英文.数字及符号键盘,一按独立切换键即可变更.同一键盘可作中英文输入,无需切换,支持联想字功能,融合 ...

  7. 【开源项目】Android开发内置App自动升级

    1.准备工作,首先需要在AndroidManifest.xml中的application中加入以下内容 <providerandroid:name="android.support.v ...

  8. GitHub开源项目:用于构建接入网络和模块化网络服务的平台

    源代码:https://github.com/facebookincubator/magma 作者:Facebook Incubator Author Intro:We work hard to co ...

  9. 【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】

    package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util ...

  10. 最火的Android开源项目整理

    一.代码库 1.from  代码家 整理比较好的源码连接 *********************************************************************** ...

最新文章

  1. 科学家发现跨越生命的重要门槛或许没那么难
  2. 聊聊 HTTP 常见的请求方式
  3. Do not wait until the conditions are perfect to begin. Beginning makes the conditions perfect(转)...
  4. java sendmessage函数_vc中SendMessage自定义消息函数用法实例
  5. 华为nova 5z即将亮相:麒麟810+3200万人像超级夜景
  6. 各种水龙头拆卸图解_扭力扳手使用方法图解与注意事项、原理、种类
  7. spring3 运行起来(即做个demo)所需要的jar包
  8. 百姓基因:关于历史和名人形象的亲子DNA测试
  9. ECC椭圆曲线加密的特点以及在有限域(Fp)的三点共线问题
  10. 【干货】旺季营销婚纱摄影行业这么做广告,转化效果能提高50%!
  11. 手风琴控件android,ExpandableListView实现手风琴效果
  12. vue开发企业微信应用-使用微信开发者工具
  13. ubuntu 16.04 gtx1060 显卡安装
  14. 【论文笔记】LSNet: Extremely Light-Weight Siamese Network For Change Detection in Remote Sensing Image
  15. 波特率、数据传输速率和带宽的关系(转)
  16. SWPU新生赛2021 Crypto部分WriteUp
  17. C++三只小猪称体重案例
  18. 育儿-《养育女孩》书中的精髓:父母如何理解女孩的每个成长阶段,更好地培养女孩?
  19. Complex复数类
  20. Excel批量替换,多个excel文件批量查找和替换的绿色工具,Excel多个Sheet批量替换

热门文章

  1. 【解决】Unet训练自己的数据集,预测结果全黑
  2. 怎样制作EDIUS中视频边缘模糊特效
  3. 自学JavaScript Day03——数据类型
  4. 加薪其实也不难:加薪五步曲
  5. 逐次超松弛迭代法 ( SOR ) 的C++实现
  6. Windows7下使用Fixedsys和Tahoma字体
  7. 注册一个公众号多少钱_我们来算算运营一个微信公众号到底要多少钱?
  8. 目前主流的服务器有哪些?软件和硬件?
  9. 用keytool创建Keystore和Trustsotre文件
  10. HTML5:Flash2x介绍、安装教程