Qt for android 获取 Wifi 列表

  Qt 做 Android 开发,有时候需要网络信息,这个例子是获取手机搜索到的信号较强的 WIFI 信号的列表。过程中需要用到 JNI 的知识。另外,例子比较简单,如果有需要这个的,可以自行修改。

程序分为两个部分,一个是 JAVA 程序的编写,一个是 Qt 主程序的编写,至于对 AndroidManifest.xml 文件的修改部分我就不加缀述了。

JAVA 程序部分:

package com.wifi;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import java.util.List;
import android.os.Message;
import android.os.Handler;
import android.os.Bundle;

public class WifiInfo extends org.qtproject.qt5.android.bindings.QtActivity
{
    private static WifiInfo m_instance;
    private WifiManager wifiManager;
    List<ScanResult> listb;

    public WifiInfo(){
        m_instance = this;
    }
    public String[] callExternalCamera()
    {
        System.out.println("I an In");
        wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
        listb = wifiManager.getScanResults();
        String[] listk = new String[listb.size()];
        String res = " %";
        if(listb!=null){
            for( int i=0;i<listb.size();i++){
                ScanResult scanResult = listb.get(i);
                listk[i] = scanResult.SSID;
                System.out.println(scanResult.SSID);
                System.out.println("\n");
                res += scanResult.SSID + "%";
            }
            return listk;
        }
        return listk;
    }
}

C++ 程序部分:  
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QAndroidJniObject>
#include <QAndroidJniEnvironment>
#include <QtAndroid>
#include <QString>
#include <QList>
#include <qDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    getScanResult();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::getScanResult()
{
#ifdef Q_OS_ANDROID
    QAndroidJniObject activity = QtAndroid::androidActivity();

    QAndroidJniObject str = activity.callObjectMethod("callExternalCamera", "()[Ljava/lang/String;");

   jobjectArray objectArray = str.object<jobjectArray>();

   QAndroidJniEnvironment qjniEnv;
   const int n = qjniEnv->GetArrayLength(objectArray);
   qDebug() << "Got jobjectArray of length:" << n; // correct
   for (int i = 0; i < n; ++i) {
       qDebug() << "Iteration:" << i;
       QAndroidJniObject element = qjniEnv->GetObjectArrayElement(objectArray, i);
       qDebug() << element.toString() ;
   }
#endif
}

程序功能比较单一,程序主要的几个部分有一下几个:  1. Qt 调用 JAVA 非静态函数。  2. Qt 调用 JAVA 函数返回值为 对象数组类型的函数签名。  3. Qt 解析 jobjectarray 对象的方法。 
恭疏短引; 一言均赋, 四韵俱成。 请洒潘江, 各倾陆海云尔:
时间: 2024-08-08 13:55:50

Qt for android 获取 Wifi 列表的相关文章

Android 6.0以上获取Wifi列表问题

在已经打开 Wifi 的情况下获取 Wifi 时,wifiManager.getScanResults() 方法始终返回的是null.因为当时是在网上查询资料敲的代码,多找了几份资料后,看到代码都是一样的,反复确认自己有没有遗漏或者写错.甚至怀疑人生!索性克服心理恐惧点开源码,结果却找到了答案: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * Return the results of the latest access point scan. *

android 获取相册列表的实现(三)

该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能. 该项目最大特色: 1.获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取. 2.使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的.同时,通过引用第三方

android 获取相册列表的实现(二)

该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能. 该项目最大特色: 1.获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取. 2.使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的.同时,通过引用第三方

iOS 获取 WiFi 列表

IOS 获取 WIFi列表有2016 /11 / 10 之后就不用申请权限了  Apple 官方邮件回复: Thank you for requesting information about the Network Extension framework. Please note that as of November 10, 2016 this process is not required for developers who wish to use App Proxy, Content

android 获取相册列表的实现(四)

该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能. 该项目最大特色: 1.获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取. 2.使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的.同时,通过引用第三方

Android 获取WIFI MAC地址的方法

1. 经常用法,调用Android的API:WifiManager <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo

android获取传感器列表

本文介绍如何获取android设备所支持的传感器列表. 目前,android 4.4 (API等级19)支持以下传感器: TYPE_ACCELEROMETER 加速度传感器,单位是m/s2,测量应用于设备X.Y.Z轴上的加速度 传感器类型值(Sensor Type):1 (0x00000001) TYPE_AMBIENT_TEMPERATURE 温度传感器,单位是℃ 传感器类型值(Sensor Type): 13 (0x0000000d) TYPE_GAME_ROTATION_VECTOR 游戏

获取WIFI列表,在旧手机上运行就没有问题,在新手机上就怎么也获取不到WIFI列表,长度一直为0,还不报异常,很疑惑。

新手机获取不到WIFI列表的原因: 获取不到列表首先要考虑的是6.0动态权限的问题 解决方案: (1) 将SDK版本改为23以下,例如22,但是这样就要放弃SDK的新特性 (2) 使用动态授权,接收用户授权的信息,根据用户授权的信息作出操作

android 获取相册列表的实现(一)

该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能. 该项目最大特色: 1.获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取. 2.使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的.同时,通过引用第三方