android wifi开源项目,开源项目之android-wifi-tether(网络共享软件)

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

项目如图:

0818b9ca8b590ca3270a3433284dd417.png

效果如图:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

该项目总共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里面的方法!

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值