5package org.qtproject.qt.android;
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;
40import java.io.BufferedReader;
41import java.io.DataOutputStream;
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;
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";
66 private String m_mainLib =
null;
67 private Service m_service =
null;
68 private static String m_applicationParameters =
null;
70 public boolean loadApplication(Service service, ClassLoader classLoader, Bundle loaderParams)
73 if (!loaderParams.containsKey(NATIVE_LIBRARIES_KEY)
74 || !loaderParams.containsKey(BUNDLED_LIBRARIES_KEY)) {
82 QtNative.
setApplicationDisplayMetrics(10, 10, 0, 0, 10, 10, 120, 120, 1.0, 1.0, 60.0
f);
84 if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) {
86 Objects.requireNonNull(loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY))) {
90 Class<?> initClass = classLoader.loadClass(
className);
91 Object staticInitDataObject = initClass.newInstance();
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");
102 Method
m = initClass.getMethod(
"setContext", Context.class);
103 m.invoke(staticInitDataObject, (Context)m_service);
104 }
catch (Exception
e) {
107 }
catch (Exception
e) {
113 ArrayList<String> libraries = loaderParams.getStringArrayList(BUNDLED_LIBRARIES_KEY);
116 m_mainLib = loaderParams.getString(MAIN_LIBRARY_KEY);
120 "Droid Sans Mono;Droid Sans;Droid Sans Fallback");
125 "Roboto;Droid Sans;Droid Sans Fallback");
127 if (loaderParams.containsKey(APPLICATION_PARAMETERS_KEY))
128 m_applicationParameters = loaderParams.getString(APPLICATION_PARAMETERS_KEY);
130 m_applicationParameters =
"";
133 return m_mainLib !=
null;
143 }
catch (Exception
e) {
160 synchronized (
this) {
static String nativeLibrariesDir(Context context)
static boolean startApplication(String params, String mainLib)
static native IBinder onBind(Intent intent)
static native void terminateQt()
static void setEnvironmentVariables(String environmentVariables)
static QtThread m_qtThread
static void setService(Service qtMainService, QtServiceDelegate qtServiceDelegate)
static final String QtTAG
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)
IBinder onBind(Intent intent)
boolean loadApplication(Service service, ClassLoader classLoader, Bundle loaderParams)
boolean startApplication()
const char className[16]
[1]