【问题标题】:How to get Wifi RSSI level with NDK JNI in Android如何在 Android 中使用 NDK JNI 获得 Wifi RSSI 级别
【发布时间】:2017-06-12 14:58:44
【问题描述】:

是否有人有示例或可以展示如何在 Android 中使用 NDK JNI 获得 Wifi RSSI 级别? 我必须比较 java 代码和 JNI 的 rssi 级别。

提前致谢!

更新

我现在可以从 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感兴趣

【问题讨论】:

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


    【解决方案1】:

    方法的输入是发送给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

    【讨论】:

    • 我试过 res = android_net_wifi_getRssiHelper("SIGNAL_POLL");我收到此错误:无法解析方法 'android_net_wifi_getRssiHelper(java.lang.String)'
    • 那是您应该在 c 中使用的本机方法。您在寻找 java api 吗?
    • 不抱歉。你说的对。等我回家后我会试试的。到目前为止,谢谢!
    • 我觉得我得学一点c++。我想我需要几天时间。例如,在我将您的部分代码放入我的 c++ 类之后,我不知道 atm 如何获取我的 java 代码。我收到此错误自动取款机。 : 无法解析对应的JNI函数Java_com_beispiel_wlanorhan_WifiConnections_rssiFromJNI less... (Strg+F1) 报告Java中的native方法声明在项目中没有找到对应的JNI函数。
    • @Okey 从技术上讲,你也可以使用反射来调用 WiFiNative.java 方法,而不是使用原生代码。
    猜你喜欢
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多