Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
QtServiceDelegate.java
Go to the documentation of this file.
1// Copyright (C) 2016 BogDan Vatra <bogdan@kde.org>
2// Copyright (C) 2016 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5package org.qtproject.qt.android;
6
7import android.app.Service;
8import android.content.Context;
9import android.content.Intent;
10import android.content.pm.ActivityInfo;
11import android.content.pm.PackageManager;
12import android.content.pm.PackageManager.NameNotFoundException;
13import android.content.res.Configuration;
14import android.graphics.drawable.ColorDrawable;
15import android.net.LocalServerSocket;
16import android.net.LocalSocket;
17import android.os.Build;
18import android.os.Bundle;
19import android.os.Handler;
20import android.os.IBinder;
21import android.os.ResultReceiver;
22import android.text.method.MetaKeyKeyListener;
23import android.util.Base64;
24import android.util.DisplayMetrics;
25import android.util.Log;
26import android.util.TypedValue;
27import android.view.ContextMenu;
28import android.view.ContextMenu.ContextMenuInfo;
29import android.view.KeyCharacterMap;
30import android.view.KeyEvent;
31import android.view.Menu;
32import android.view.MenuItem;
33import android.view.Surface;
34import android.view.View;
35import android.view.ViewConfiguration;
36import android.view.ViewGroup;
37import android.view.WindowManager;
38import android.view.inputmethod.InputMethodManager;
39
40import java.io.BufferedReader;
41import java.io.DataOutputStream;
42import java.io.File;
43import java.io.FileWriter;
44import java.io.InputStreamReader;
45import java.io.IOException;
46import java.lang.reflect.Constructor;
47import java.lang.reflect.Method;
48import java.util.ArrayList;
49import java.util.HashMap;
50import java.util.Iterator;
51import java.util.Objects;
52
54{
55 private static final String NATIVE_LIBRARIES_KEY = "native.libraries";
56 private static final String BUNDLED_LIBRARIES_KEY = "bundled.libraries";
57 private static final String MAIN_LIBRARY_KEY = "main.library";
58 private static final String ENVIRONMENT_VARIABLES_KEY = "environment.variables";
59 private static final String APPLICATION_PARAMETERS_KEY = "application.parameters";
60 private static final String STATIC_INIT_CLASSES_KEY = "static.init.classes";
61 private static final String APP_DISPLAY_METRIC_SCREEN_DESKTOP_KEY = "display.screen.desktop";
62 private static final String APP_DISPLAY_METRIC_SCREEN_XDPI_KEY = "display.screen.dpi.x";
63 private static final String APP_DISPLAY_METRIC_SCREEN_YDPI_KEY = "display.screen.dpi.y";
64 private static final String APP_DISPLAY_METRIC_SCREEN_DENSITY_KEY = "display.screen.density";
65
66 private String m_mainLib = null;
67 private Service m_service = null;
68 private static String m_applicationParameters = null;
69
70 public boolean loadApplication(Service service, ClassLoader classLoader, Bundle loaderParams)
71 {
73 if (!loaderParams.containsKey(NATIVE_LIBRARIES_KEY)
74 || !loaderParams.containsKey(BUNDLED_LIBRARIES_KEY)) {
75 return false;
76 }
77
78 m_service = service;
79 QtNative.setService(m_service, this);
80 QtNative.setClassLoader(classLoader);
81
82 QtNative.setApplicationDisplayMetrics(10, 10, 0, 0, 10, 10, 120, 120, 1.0, 1.0, 60.0f);
83
84 if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) {
85 for (String className :
86 Objects.requireNonNull(loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY))) {
87 if (className.length() == 0)
88 continue;
89 try {
90 Class<?> initClass = classLoader.loadClass(className);
91 Object staticInitDataObject = initClass.newInstance(); // create an instance
92 try {
93 Method m = initClass.getMethod("setService", Service.class, Object.class);
94 m.invoke(staticInitDataObject, m_service, this);
95 } catch (Exception e) {
97 "Class " + className + " does not implement setService method");
98 }
99
100 // For modules that don't need/have setService
101 try {
102 Method m = initClass.getMethod("setContext", Context.class);
103 m.invoke(staticInitDataObject, (Context)m_service);
104 } catch (Exception e) {
105 e.printStackTrace();
106 }
107 } catch (Exception e) {
108 e.printStackTrace();
109 }
110 }
111 }
112 QtNative.loadQtLibraries(loaderParams.getStringArrayList(NATIVE_LIBRARIES_KEY));
113 ArrayList<String> libraries = loaderParams.getStringArrayList(BUNDLED_LIBRARIES_KEY);
114 String nativeLibsDir = QtNativeLibrariesDir.nativeLibrariesDir(m_service);
115 QtNative.loadBundledLibraries(libraries, nativeLibsDir);
116 m_mainLib = loaderParams.getString(MAIN_LIBRARY_KEY);
117
118 QtNative.setEnvironmentVariables(loaderParams.getString(ENVIRONMENT_VARIABLES_KEY));
119 QtNative.setEnvironmentVariable("QT_ANDROID_FONTS_MONOSPACE",
120 "Droid Sans Mono;Droid Sans;Droid Sans Fallback");
121 QtNative.setEnvironmentVariable("QT_ANDROID_FONTS_SERIF", "Droid Serif");
122 QtNative.setEnvironmentVariable("HOME", m_service.getFilesDir().getAbsolutePath());
123 QtNative.setEnvironmentVariable("TMPDIR", m_service.getCacheDir().getAbsolutePath());
124 QtNative.setEnvironmentVariable("QT_ANDROID_FONTS",
125 "Roboto;Droid Sans;Droid Sans Fallback");
126
127 if (loaderParams.containsKey(APPLICATION_PARAMETERS_KEY))
128 m_applicationParameters = loaderParams.getString(APPLICATION_PARAMETERS_KEY);
129 else
130 m_applicationParameters = "";
131
132 m_mainLib = QtNative.loadMainLibrary(m_mainLib, nativeLibsDir);
133 return m_mainLib != null;
134 }
135
136 public boolean startApplication()
137 {
138 // start application
139 try {
140 String nativeLibraryDir = QtNativeLibrariesDir.nativeLibrariesDir(m_service);
141 QtNative.startApplication(m_applicationParameters, m_mainLib);
142 return true;
143 } catch (Exception e) {
144 e.printStackTrace();
145 return false;
146 }
147 }
148
149 public void onDestroy()
150 {
153 QtNative.setService(null, null);
155 System.exit(0);
156 }
157
158 public IBinder onBind(Intent intent)
159 {
160 synchronized (this) {
161 return QtNative.onBind(intent);
162 }
163 }
164}
Definition main.cpp:8
static boolean startApplication(String params, String mainLib)
static native IBinder onBind(Intent intent)
static native void terminateQt()
static void setEnvironmentVariables(String environmentVariables)
static void setService(Service qtMainService, QtServiceDelegate qtServiceDelegate)
static String loadMainLibrary(final String mainLibrary, final String nativeLibraryDir)
static native void quitQtCoreApplication()
static void loadBundledLibraries(final ArrayList< String > libraries, final String nativeLibraryDir)
static void setEnvironmentVariable(String key, String value)
static void loadQtLibraries(final ArrayList< String > libraries)
static void setApplicationDisplayMetrics(int screenWidthPixels, int screenHeightPixels, int availableLeftPixels, int availableTopPixels, int availableWidthPixels, int availableHeightPixels, double XDpi, double YDpi, double scaledDensity, double density, float refreshRate)
static void setClassLoader(ClassLoader classLoader)
boolean loadApplication(Service service, ClassLoader classLoader, Bundle loaderParams)
double e
const GLfloat * m
GLfloat GLfloat f
const char className[16]
[1]
Definition qwizard.cpp:100