开源项目之android-wifi-tether(网络共享软件)
2012-09-26 21:28
603 查看
android-wifi-tether是简单实用的网络共享软件(通过WIFI共享)。
项目如图:
效果如图:
该项目总共18个目标文件!~
jni就两个文件,有两个接口函数!实现如下:
代码分析如下:
AccessControlActivity类:获得控制权限。
LogActivity类:日子界面。
MainActivity类:程序主界面,用户登陆时会进行设置判断!~如下:
当检测失败时,就会弹出一个对话框!~~
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里面的方法!
其它的就不介绍了!~~~
学习的目标是成熟!~~~~~
项目如图:
效果如图:
该项目总共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-Check if (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里面的方法!
其它的就不介绍了!~~~
学习的目标是成熟!~~~~~
相关文章推荐
- GitHub 优秀的 Android 开源项目-参考自网络
- android 网络访问-图片处理优秀开源项目
- 使用Facebook开源项目Stetho 在Chrome上调试Android网络、数据库
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目 http://www.devtf.cn
- 项目回顾之一:PlanBetter时间管理软件(基于Android平台)【已开源】
- android开源项目SmartImageView设置网络图片url时抛出java.io.FileNotFoundException
- 利用android-async-http开源项目实现网络代码查看器
- 手机共享电脑Wifi软件网络抓包
- Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
- 转:Android开源项目推荐之「网络请求哪家强」 Android开源项目推荐之「网络请求哪家强」
- Android开源项目推荐之「网络请求哪家强」
- Android核心基础-7.Android 网络通信-2.使用开源项目AsyncHttpClient
- Android开源项目发现--- 工具类网络相关篇(持续更新)
- Android开源项目发现--- 工具类网络相关篇(持续更新)
- ANDROID开源项目推荐之「网络请求哪家强」
- Android 网络流量监听开源项目-ConnectionClass源码分析
- Android开源项目推荐之「网络请求哪家强」
- Android开源项目推荐之「网络请求哪家强」
- Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库
- GitHub 优秀的 Android 开源项目第二篇——转自多篇网络文章