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. android studio ndk 编译自定义MK文件
  2. Activity去除标题栏和状态栏
  3. Android 自定义标题栏(title栏)
  4. 自定义Android 标题栏TitleBar布局
  5. Android EditText样式自定义
  6. Android 4.0后,自定义Title报错 You cannot combine custom title
  7. android点击状态分析
  8. Android 设置默认锁屏壁纸接口
  9. Android 自定义渐变背景

随机推荐

  1. android的logcat详细用法
  2. Android进程与内存及内存泄露
  3. Android开发实例详解之IMF(Android(安卓)S
  4. android:layout_weight让layout自动调整
  5. Android(安卓)UI组件
  6. Android(安卓)安全机制
  7. 跟我学android应用开发 之 第一个Android
  8. Android应用的跨语言调用小结
  9. Android(安卓)ADB工具使用
  10. Android(安卓)基础总结:(七)BroadcastReceiv