android 增加wifi-p2p api 第三版
来源:互联网 发布:淘宝查号是什么意思 编辑:程序博客网 时间:2024/04/25 18:30
前提条件:
必须驱动和wpa_supplicant都必须支持p2p命令。
部分驱动本身支持p2p,但是可能不完善,p2p命令被屏蔽掉了,这时候需修改wpa_supplicant中读取驱动capa标志位,欺骗wpa_supplicant实现p2p的支持。
Android的修改:
1,增加自定义api
cp WifiNative.java WifiP2p.java
音调hide注释
修改WifiNative--->WifiP2p
注释掉蓝牙相关函数。
cp android_net_wifi_Wifi.cpp android_net_wifi_WifiP2p.cpp
#define WIFI_PKG_NAME "android/net/wifi/WifiP2p"
int register_android_net_wifi_P2p(JNIEnv* env)
修改文件:
frameworks/base/core/jni/AndroidRuntime.cpp
REG_JNI(register_android_net_wifi_WifiP2p),
extern int register_android_net_wifi_WifiP2p(JNIEnv* env);
frameworks/base/core/jni/Android.mk
android_net_wifi_WifiP2p.cpp \
重启。。
NIHelp ( 2569): RegisterNatives failed for 'android/net/wifi/WifiP2p'
E/AndroidRuntime( 2569): Unable to register all android natives
I/ServiceManager( 1119): service 'media.audio_flinger' died
I/ServiceManager( 1119): service 'media.player' died
I/ServiceManager( 1119): service 'media.camera' died
I/ServiceManager( 1119): service 'media.audio_policy' died
I/Netd ( 2571): Netd 1.0 starting
I/ ( 2570): ServiceManager: 0xad50
E/AudioHardwareALSA( 2570): ALSALib: external/alsa-lib/src/control/control.c:902:(snd_ctl_open_noupdatt
W/AudioHardwareALSA( 2570): Unable to attach mixer to device AndroidOut: No such file or directory
E/AudioHardwareALSA( 2570): ALSALib: external/alsa-lib/src/control/control.c:902:(snd_ctl_open_noupdatn
W/AudioHardwareALSA( 2570): Unable to attach mixer to device AndroidIn: No such file or directory
I/CameraService( 2570): CameraService started (pid=2570)
D/AudioHardwareALSA( 2570): openOutputStream called for devices: 0x00000002
D/ALSAModule( 2570): open called for devices 00000002 in mode 0...
I/ALSAModule( 2570): Initialized ALSA PLAYBACK device AndroidPlayback_Speaker_normal
I/AudioFlinger( 2570): AudioFlinger's thread 0x2ee78 ready to run
D/ALSAModule( 2570): route called for devices 00000002 in mode 0...
原因:是蓝牙的几个函数原因。在这几个改动文件删除掉即可。
2,加入:传入命令功能:
文件: frameworks/base/wifi/java/android/net/wifi/WifiP2p.javapublic native static String sendP2pCommand(String p2pCommand);
文件:frameworks/base/core/jni/android_net_wifi_WifiP2p.cpp
//*************************leo for p2p commands*******************************
static jstring android_net_wifi_sendP2pCommand(JNIEnv* env,
jobject clazz,
jstring p2pCommand)
{
char cmdstr[256];
jboolean isCopy;
const char *nameStr = env->GetStringUTFChars(p2pCommand, &isCopy);
if (nameStr == NULL)
return env->NewStringUTF(NULL);
int cmdTooLong = snprintf(cmdstr, sizeof(cmdstr), "%s",nameStr) >= (int)sizeof(cmdstr);
env->ReleaseStringUTFChars(p2pCommand, nameStr);
return cmdTooLong ? env->NewStringUTF(NULL) : doStringCommand(env, cmdstr);
}
//*************************leo for p2p commands*******************************
注册接口::
{ "sendP2pCommand", "(Ljava/lang/String;)Ljava/lang/String;",
(void*) android_net_wifi_sendP2pCommand },
跟新API
make update-api
发现链接失败:
追查原因:链接wpa_supplicant客户端创建两个soket后,attch返回-2失败,
修改客户端soket文件权限:
external/ath_supplicant-0.8.x/src/common/wpa_ctrl.c
//chmod(ctrl->local.sun_path, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
chmod(ctrl->local.sun_path, 0777);
依然:添加wpa_ctrl.c打印信息:
ath_supplicant-0.8.x/wpa_supplicant/Android.mk
LOCAL_SRC_FILES = $(MY_SUPPLICANT)/src/utils/wpa_debug.c $(MY_SUPPLICANT)/src/common/wpa_ctrl.c $(MY_SUPPLICANT)/src/utils/os_$(CONFIG_OS).c
- android 增加wifi-p2p api 第三版
- android.net.wifi.p2p package API
- android wifi p2p 通信
- Android中的WiFi P2P
- Android WiFi P2P
- android.net.wifi.p2p说明
- Wifi P2P 翻译自developer.android.com——API Guides
- wifi.p2p
- Android中的WiFi P2P(二)
- android 5.1 wifi direct / wifi P2P 扫描过程
- Android wifi探究三:Wifi P2P 连接附近设备
- Android wifi探究四:Wifi P2P framework层源码分析
- WIFI Direct/WIFI P2P
- Android NFC P2P学习1 - API层
- Android 增加第三方APK
- Android 增加第三方库
- wifi direct/p2p流程分析 基于android 5.1
- 基于Android WiFi直连的P2P聊天程序
- oracle表空间
- 隐藏QT窗口边框 并且在隐藏后实现窗口拖拽 同时实现透明度
- 线性拟合(最小二乘法)
- 《大话处理器》连载——微架构(21) 指令并行的“绿营”和“蓝营”
- 使用正则表达式验证字符串格式之Pattern&Matcher
- android 增加wifi-p2p api 第三版
- Android应用程序签名详解
- 菜鸟笔记3——Android Camera程序扩充(1) SurfaceHolder问题
- VIM命令一览: VIM学习札记
- Oracle 11G在用EXP 导出时,空表不能导出解决
- yum -y install mysql mysql-server
- 关于ksoap连接webService的问题
- MySQL - 用户及权限管理
- 马云创造阿里巴巴帝国秘诀