Qt for Android调用Android接口将程序移到后台/前台运行
生活随笔
收集整理的這篇文章主要介紹了
Qt for Android调用Android接口将程序移到后台/前台运行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在用Qt開發android應用的時候碰到這樣的需求,點擊某按鈕后將程序最小化,也就是說將其移到后臺運行,程序本身沒有退出,這相當于點擊了Home鍵。而當程序收到某個廣播后又將后臺運行的程序打開顯示到最前端,原理很簡單,同樣還是先通過android接口實現相應功能,然后在C++端調用。
首先,如果是一個新創建的Qt工程,需要創建一個AndroidManifest.xml文件,創建過程不再贅述,然后創建一個Java的類,繼承于
public class MainActivity extends org.qtproject.qt5.android.bindings.QtActivity
定義一個公有的靜態函數
最小化,將程序移到后臺:
public static void mini() {m_instance.moveTaskToBack(true); }其中m_instance是本窗口對象this
將軟件移到前臺
public static void moveTaskToFrount(){if(!m_instance.isForeground(m_instance.getPackageName())){ActivityManager am = (ActivityManager)m_instance.getSystemService(Context.ACTIVITY_SERVICE);am.moveTaskToFront(m_instance.getTaskId(),0);}} private boolean isForeground(String packageName){ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();if (appProcesses == null)return false;for (RunningAppProcessInfo appProcess : appProcesses) {// The name of the process that this object is associated with.if (appProcess.processName.equals(packageName)&& appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {return true;}}return false;} 需要導入包
import android.app.ActivityManager; import android.app.ActivityManager.RunningAppProcessInfo; import android.app.ActivityManager.RunningAppProcessInfo;
然后看C++ 調用
void AndroidInterface::showMini() {QAndroidJniObject::callStaticMethod<void>("com/lyy/test/MainActivity","mini","()V"); } void AndroidInterface::moveToFront() {QAndroidJniObject::callStaticMethod<void>("com/lyy/test/MainActivity","moveTaskToFrount","()V"); }
總結
以上是生活随笔為你收集整理的Qt for Android调用Android接口将程序移到后台/前台运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt for Android调用andr
- 下一篇: Qt for Android获取手机热点