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. GIT - 拉取其他仓库的某个分支的代码
  2. 基于springboot实现高校学生健康档案管理系统
  3. Dcoker(系列) docker-redis警告处理
  4. Sql 2008 安装遇到的问题
  5. 【开发工具】学习记录 初学MATLAB
  6. 分享Ubuntu 16.04 几个国内更新源
  7. 【转】C++ vector的reserve和resize详解
  8. 滴滴 KDD CUP 2020 赛题详解
  9. ADO.NET 4.5中的异步与流特性
  10. 深入理解5种IO模型
  11. Java第二次作业程序设计作业
  12. [转]MySQL和SQLServer的比较
  13. 基于java小区物业管理系统(含源文件)
  14. 服务器主板支持什么cpu,怎么看主板支持什么CPU(主板和cpu兼容搭配知识)
  15. 软件相貌测试准确吗,测另一半的相貌超准软件 提前了解对象的外貌
  16. PHP编写两个数的最小公倍数,两个数的最小公倍数怎么求
  17. 提升bitcomet下载速度的方法
  18. 京东自营客服考试答案
  19. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码
  20. 数据库:ER图↔关系模式

热门文章

  1. NPDP门径管理流程Stage-Gate之Gate(关口)
  2. Qt之打开IOS相册图片和保存图片到相册
  3. 智慧交通day03-车道线检测实现04:车道线提取原理+代码实现+效果图
  4. android改变图标颜色
  5. 基于51单片机的简易太阳能追踪系统
  6. 群晖nas和文件服务器的区别,nas云服务器的区别(群晖nas搭建云服务器)
  7. sublime如何格式化代码
  8. Unity 显示AI导航路线
  9. C/C++编程:拷贝构造函数的构建操作
  10. VC C运行时库(CRTL)的几个版本及选用