2017-06-12 86 views
0

是否有人有示例或可以顯示它如何在Android中使用NDK JNI獲取Wifi RSSI級別? 我必須比較java代碼vs JNI的rssi級別。如何在Android中使用NDK JNI獲取Wifi RSSI級別

在此先感謝!

UPDATE

我現在能夠得到從CPP文件中的字符串。

文件: com_example_cvlab_ndktest_NativeClass.cpp

#include <com_example_cvlab_ndktest_NativeClass.h> 

JNIEXPORT jstring JNICALL 
Java_com_example_cvlab_ndktest_NativeClass_getMessageFromJNI 
    (JNIEnv *env, jclass obj){ 
    return env->NewStringUTF("This is a message from JNI"); 
    } 

com_example_cvlab_ndktest_NativeClass.h:

/* DO NOT EDIT THIS FILE - it is machine generated */ 
#include <jni.h> 
/* Header for class com_example_cvlab_ndktest_NativeClass */ 

#ifndef _Included_com_example_cvlab_ndktest_NativeClass 
#define _Included_com_example_cvlab_ndktest_NativeClass 
#ifdef __cplusplus 
extern "C" { 
#endif 
/* 
* Class:  com_example_cvlab_ndktest_NativeClass 
* Method: getMessageFromJNI 
* Signature:()Ljava/lang/String; 
*/ 
JNIEXPORT jstring JNICALL 
Java_com_example_cvlab_ndktest_NativeClass_getMessageFromJNI 
    (JNIEnv *, jclass); 

#ifdef __cplusplus 
} 
#endif 
#endif 

NativeClass.java 包com.example.cvlab.ndktest;

/** 
* Created by zafaco on 14.06.2017. 
*/ 

public class NativeClass { 
    public native static String getMessageFromJNI(); 


} 

Android.mk:

LOCAL_PATH := $(call my-dir) 

    include $(CLEAR_VARS) 

    LOCAL_SRC_FILES := com_example_cvlab_ndktest_NativeClass.cpp 

    LOCAL_LDLIBS += -llog 
    LOCAL_MODULE := MyLibs 


    include $(BUILD_SHARED_LIBRARY) 

Application.mk:

APP_STL := gnustl_static 
    APP_CPPFLAGS := -frtti -fexceptions 
    APP_ABI := armeabi-v7a 
    APP_PLATFORM := android-16 

這工作對我很好。 那麼現在我怎麼可以調用其他庫文件的方法? 例如我發現Link1Link2 和我對RSSI

回答

0

該方法的輸入是要發送到WiFi驅動程序的命令。嘗試:

res = android_net_wifi_getRssiHelper("SIGNAL_POLL"); 

,並得到了命令和響應更多的控制,你可以通過手動發送命令:

doCommand(const char *cmd, char *replybuf, int replybuflen); 

其中cmd是你的命令。

對於可能的命令的列表,你可以用看:

https://android.googlesource.com/platform/frameworks/base/+/0e2d281/wifi/java/android/net/wifi/WifiNative.java

+0

我試圖解析度= android_net_wifi_getRssiHelper( 「SIGNAL_POLL」);我得到這個錯誤:無法解析方法'android_net_wifi_getRssiHelper(java.lang.String)' –

+0

這是一個本地方法,你應該在c中使用。你在找java api嗎? – SoroushA

+0

沒有抱歉。你是對的。當我再回到家時,我會嘗試它。謝謝你到目前爲止! –