开源项目之android-wifi-tether(网络共享软件)
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(网络共享软件)相关推荐
- GitHub 优秀的 Android 开源项目——转自多篇网络文章
GitHub 优秀的 Android 开源项目 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的Vie ...
- 使用ConnectBot开源项目在android设备上管理你的linux系统
最近,工作中有使用android通过ssh管理linux系统的需求,找到了这个ConnectBot这个开源项目https://github.com/connectbot/connectbot.http ...
- android wifi显示网络受限的问题
Android系统连接WIFI显示网络连接受限_android系统无法连接网络_阿炎-阿景的博客-CSDN博客 在android11的代码里: 这里的配置,default_captive_portab ...
- android wifi 共享网络,安卓手机怎么共享XP的网络 无线wifi共享教程【详解】
安卓手机怎么共享XP的网络? Wi-Fi是一个无线网络通信技术的品牌,由Wi-Fi联盟(Wi-Fi Alliance)所持有.目的是改善基于IEEE802.11标准的无线网络产品之间的互通性.无线网络 ...
- 【开源项目】Android 手写记事 App(半成品)
该项目已上传到 CSDN 的 Git 平台中 项目地址:https://code.csdn.net/gd920129/whiteboard GIT SSH:git@code.csdn.net:gd92 ...
- 开源项目之Android繁体中文输入法
一款功能强大的输入法,集合 "广东话.拼音.仓颉.速成"四种常用中文输入法,以及英文.数字及符号键盘,一按独立切换键即可变更.同一键盘可作中英文输入,无需切换,支持联想字功能,融合 ...
- 【开源项目】Android开发内置App自动升级
1.准备工作,首先需要在AndroidManifest.xml中的application中加入以下内容 <providerandroid:name="android.support.v ...
- GitHub开源项目:用于构建接入网络和模块化网络服务的平台
源代码:https://github.com/facebookincubator/magma 作者:Facebook Incubator Author Intro:We work hard to co ...
- 【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】
package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util ...
- 最火的Android开源项目整理
一.代码库 1.from 代码家 整理比较好的源码连接 *********************************************************************** ...
最新文章
- 科学家发现跨越生命的重要门槛或许没那么难
- 聊聊 HTTP 常见的请求方式
- Do not wait until the conditions are perfect to begin. Beginning makes the conditions perfect(转)...
- java sendmessage函数_vc中SendMessage自定义消息函数用法实例
- 华为nova 5z即将亮相:麒麟810+3200万人像超级夜景
- 各种水龙头拆卸图解_扭力扳手使用方法图解与注意事项、原理、种类
- spring3 运行起来(即做个demo)所需要的jar包
- 百姓基因:关于历史和名人形象的亲子DNA测试
- ECC椭圆曲线加密的特点以及在有限域(Fp)的三点共线问题
- 【干货】旺季营销婚纱摄影行业这么做广告,转化效果能提高50%!
- 手风琴控件android,ExpandableListView实现手风琴效果
- vue开发企业微信应用-使用微信开发者工具
- ubuntu 16.04 gtx1060 显卡安装
- 【论文笔记】LSNet: Extremely Light-Weight Siamese Network For Change Detection in Remote Sensing Image
- 波特率、数据传输速率和带宽的关系(转)
- SWPU新生赛2021 Crypto部分WriteUp
- C++三只小猪称体重案例
- 育儿-《养育女孩》书中的精髓:父母如何理解女孩的每个成长阶段,更好地培养女孩?
- Complex复数类
- Excel批量替换,多个excel文件批量查找和替换的绿色工具,Excel多个Sheet批量替换