如何在Android中使用NDK JNI获得Wifi RSSI级别

时间:2017-06-12 14:58:45

标签: android c++ android-ndk wifi rssi

有人有一个例子或者可以展示如何在Android中使用NDK JNI获得Wifi RSSI级别吗? 我必须比较java代码与JNI的rssi级别。

提前致谢!

更新

我现在能够从cpp文件中获取一个String。

文件: 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     package 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感兴趣

1 个答案:

答案 0 :(得分: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