Qt for Android获取手机热点开关状态
生活随笔
收集整理的這篇文章主要介紹了
Qt for Android获取手机热点开关状态
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Qt開(kāi)發(fā)android應(yīng)用,從Qt端調(diào)用android原生接口獲取手機(jī)熱點(diǎn)開(kāi)關(guān)狀態(tài),首先來(lái)看一下封裝好的android接口類(lèi)wifiHostBiz.java
(以下代碼來(lái)自網(wǎng)絡(luò))
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熱點(diǎn)業(yè)務(wù)類(lèi)* 獲取熱點(diǎn)狀態(tài),設(shè)置熱點(diǎn)開(kāi)關(guān)**/ 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位數(shù)public WifiHostBiz(Context context) {super();//獲取wifi管理服務(wù)wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);}/**判斷熱點(diǎn)開(kāi)啟狀態(tài)*/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 4if (tmp > 10) {tmp = tmp - 10;}return WIFI_AP_STATE.class.getEnumConstants()[tmp];} catch (Exception e) {// TODO Auto-generated catch blocke.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熱點(diǎn)開(kāi)關(guān)* @param enabled true:打開(kāi) false:關(guān)閉* @return true:成功 false:失敗*/public boolean setWifiApEnabled(boolean enabled) {System.out.println(TAG + ":開(kāi)啟熱點(diǎn)");if (enabled) { // disable WiFi in any case//wifi和熱點(diǎn)不能同時(shí)打開(kāi),所以打開(kāi)熱點(diǎn)的時(shí)候需要關(guān)閉wifiwifiManager.setWifiEnabled(false);System.out.println(TAG + ":關(guān)閉wifi");}else{wifiManager.setWifiEnabled(true);}try {//熱點(diǎn)的配置類(lèi)WifiConfiguration apConfig = new WifiConfiguration();//配置熱點(diǎn)的名稱(chēng)(可以在名字后面加點(diǎn)隨機(jī)數(shù)什么的)apConfig.SSID = WIFI_HOST_SSID;//配置熱點(diǎn)的密碼apConfig.preSharedKey = WIFI_HOST_PRESHARED_KEY;//安全:WPA2_PSKapConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);//通過(guò)反射調(diào)用設(shè)置熱點(diǎn)Method method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);//返回?zé)狳c(diǎn)打開(kāi)狀態(tài)return (Boolean) method.invoke(wifiManager, apConfig, enabled);} catch (Exception e) {return false;}} } 首先,如果是一個(gè)新創(chuàng)建的Qt工程,需要?jiǎng)?chuàng)建一個(gè)AndroidManifest.xml文件,創(chuàng)建過(guò)程不再贅述,然后創(chuàng)建一個(gè)Java的類(lèi),繼承于
public class MainActivity extends org.qtproject.qt5.android.bindings.QtActivity
先定義一個(gè)wifiHostBiz的對(duì)象
public WifiHostBiz wifiHostBiz; 然后在onCreate中初始化該對(duì)象 wifiHostBiz = new WifiHostBiz(this); 接下來(lái)定義一個(gè)公有的靜態(tài)函數(shù)/***獲取熱點(diǎn)狀態(tài)*/ public static boolean isWifiApEnabled(){return m_instance.wifiHostBiz.isWifiApEnabled(); }
bool AndroidInterface::getWifiApStatus() {bool ret = false;ret = QAndroidJniObject::callStaticMethod<jboolean>("com/lyy/test/MainActivity","isWifiApEnabled","()Z");return ret; }
總結(jié)
以上是生活随笔為你收集整理的Qt for Android获取手机热点开关状态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt for Android调用Andr
- 下一篇: Qt QML页面翻转控件封装