Qt开发android应用,从Qt端调用android原生接口获取手机热点开关状态,首先来看一下封装好的android接口类wifiHostBiz.java

(以下代码来自网络)

package com.lyy.test;import android.content.Context;import android.net.wifi.ScanResult;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.net.wifi.WifiManager.WifiLock;import android.util.Log;import java.lang.reflect.Method;/** * WIFI热点业务类 * 获取热点状态,设置热点开关 * */public class WifiHostBiz {        private final String TAG = "WifiHostBiz";        private WifiManager wifiManager;        private String WIFI_HOST_SSID = "AndroidAP";        private String WIFI_HOST_PRESHARED_KEY = "12345678";// 密码必须大于8位数        public WifiHostBiz(Context context) {                super();                //获取wifi管理服务                wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);        }        /**判断热点开启状态*/        public boolean isWifiApEnabled() {                return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED;        }        private WIFI_AP_STATE getWifiApState(){                int tmp;                try {                        Method method = wifiManager.getClass().getMethod("getWifiApState");                        tmp = ((Integer) method.invoke(wifiManager));                        // Fix for Android 4                        if (tmp > 10) {                                tmp = tmp - 10;                        }                        return WIFI_AP_STATE.class.getEnumConstants()[tmp];                } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                        return WIFI_AP_STATE.WIFI_AP_STATE_FAILED;                }        }        public enum WIFI_AP_STATE {                WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING,  WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED        }        /**         * wifi热点开关         * @param enabledtrue:打开 false:关闭         * @returntrue:成功 false:失败         */        public boolean setWifiApEnabled(boolean enabled) {                System.out.println(TAG + ":开启热点");                if (enabled) { // disable WiFi in any case                        //wifi和热点不能同时打开,所以打开热点的时候需要关闭wifi                        wifiManager.setWifiEnabled(false);                        System.out.println(TAG + ":关闭wifi");                }else{                        wifiManager.setWifiEnabled(true);                }                try {                        //热点的配置类                        WifiConfiguration apConfig = new WifiConfiguration();                        //配置热点的名称(可以在名字后面加点随机数什么的)                        apConfig.SSID = WIFI_HOST_SSID;                        //配置热点的密码                        apConfig.preSharedKey = WIFI_HOST_PRESHARED_KEY;                        //安全:WPA2_PSK                        apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);                        //通过反射调用设置热点                        Method method = wifiManager.getClass().getMethod(                                        "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);                        //返回热点打开状态                        return (Boolean) method.invoke(wifiManager, apConfig, enabled);                } catch (Exception e) {                        return false;                }        }}

首先,如果是一个新创建的Qt工程,需要创建一个AndroidManifest.xml文件,创建过程不再赘述,然后创建一个Java的类,继承于

public class MainActivity extends org.qtproject.qt5.android.bindings.QtActivity

先定义一个wifiHostBiz的对象

public WifiHostBiz wifiHostBiz;
然后在onCreate中初始化该对象

wifiHostBiz = new WifiHostBiz(this);

接下来定义一个公有的静态函数

/**  *获取热点状态  */public static boolean isWifiApEnabled(){     return m_instance.wifiHostBiz.isWifiApEnabled();}


在C++中的调用方法如下:

bool AndroidInterface::getWifiApStatus(){    bool ret = false;    ret = QAndroidJniObject::callStaticMethod("com/lyy/test/MainActivity",                                                        "isWifiApEnabled",                                                        "()Z");    return ret;}



更多相关文章

  1. ListView点击效果设置
  2. 通过WifiManager,DhcpInfo获取android IP地址及网关等信息(两种
  3. android wifi状态机原理
  4. Android设备信息获取
  5. Android(安卓)如何让EditText不自动获取焦点
  6. android databinding的使用技巧
  7. Android(安卓)技术要点
  8. ListView点击效果设置
  9. Android(安卓)技术要点

随机推荐

  1. Android学习札记20:ScaleGestureDetector
  2. Android中的骨架加载预览(Skeleton),Recycle
  3. java.lang.Class Cast Exception: androi
  4. AndroidStudio常见问题
  5. 优化 Android(安卓)Studio 启动、编译、
  6. Android(安卓)Studio AIDL实现
  7. 有空待研究的几篇不错的surfaceflinger文
  8. android:configChanges="keyboardHidden|
  9. Android学习笔记(三)UI
  10. Mac版的Android(安卓)Eclipse识别手机问