v0.1
|
@ -0,0 +1,62 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Window 2.1
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import "./theme"
|
||||
|
||||
Page {
|
||||
objectName: "ComponentPage";
|
||||
|
||||
property var pages: [
|
||||
{
|
||||
name: "Image Picker",
|
||||
demo: "imagePicker/ImagePickerDemo.qml",
|
||||
description: "Pick photo via Java language binding"
|
||||
},{
|
||||
name: "Toast",
|
||||
demo: "toast/ToastDemo.qml",
|
||||
description: "Toast Demonstration"
|
||||
},{
|
||||
name: "Notification",
|
||||
demo: "notification/NotificationDemo.qml",
|
||||
description: "Demonstrate how to use SystemDispatcher to send notification"
|
||||
},{
|
||||
name: "Information",
|
||||
demo: "info/InfoDemo.qml",
|
||||
description: "Android System Information"
|
||||
},{
|
||||
name: "Status Bar",
|
||||
demo: "statusbar/StatusBarDemo.qml",
|
||||
description: "Config Status Bar"
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
actionBar: ActionBar {
|
||||
id : actionBar
|
||||
iconSource: A.drawable("ic_menu",Constants.black87)
|
||||
title: "AndroidNative Component List"
|
||||
showIcon: false
|
||||
actionButtonEnabled: false
|
||||
}
|
||||
|
||||
VisualDataModel {
|
||||
id: visualDataModel
|
||||
delegate: ListItem {
|
||||
title: modelData.name
|
||||
subtitle: modelData.description
|
||||
onClicked: {
|
||||
present(Qt.resolvedUrl(modelData.demo));
|
||||
}
|
||||
}
|
||||
|
||||
model: pages;
|
||||
}
|
||||
|
||||
ListView {
|
||||
anchors.fill: parent
|
||||
|
||||
model : visualDataModel
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
AndroidNative Example Program
|
||||
=====================
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
* Qt Android SDK >= 5.6
|
||||
* Android SDK
|
||||
|
||||
Check this article for how to setup Qt and Android SDK:
|
||||
|
||||
[Getting Started with Qt for Android](http://qt-project.org/doc/qt-5/androidgs.html)
|
||||
|
||||
Build Instruction
|
||||
-----------------
|
||||
|
||||
1. Run `qpm install` to get required packages
|
||||
1. Open androidnativeexample.pro by Qt Creator
|
||||
1. Press the "Projects" tab. Make sure the "Android for xxx" kit has been selected
|
||||
1. Plug a Android device to your computer
|
||||
1. Press "Build" -> "Run"
|
||||
1. The program will be deployed to your device. It is so easy!
|
||||
|
||||

|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<manifest package="androidnative.example" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true"
|
||||
android:name="org.qtproject.qt5.android.bindings.QtApplication"
|
||||
android:theme="@style/AppTheme"
|
||||
android:label="Android Native Example" android:icon="@drawable/icon">
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation"
|
||||
android:name="androidnative.example.ExampleActivity"
|
||||
android:label="Android Native Example"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme"
|
||||
android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
<meta-data android:name="android.app.lib_name" android:value="androidnativeexample"/>
|
||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
||||
<!-- Deploy Qt libs as part of package -->
|
||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
|
||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
||||
<!-- Run with local libs -->
|
||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
|
||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
||||
<meta-data android:name="android.app.load_local_libs" android:value="plugins/platforms/android/libqtforandroid.so:lib/libQt5QuickParticles.so"/>
|
||||
<meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidAccessibility.jar:jar/QtAndroid-bundled.jar:jar/QtAndroidAccessibility-bundled.jar"/>
|
||||
<meta-data android:name="android.app.static_init_classes" android:value=""/>
|
||||
<!-- Messages maps -->
|
||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
||||
<!-- Messages maps -->
|
||||
|
||||
<!-- Splash screen -->
|
||||
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
|
||||
<!-- Splash screen -->
|
||||
</activity>
|
||||
</application>
|
||||
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="21"/>
|
||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||
|
||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
||||
Remove the comment if you do not require these default permissions. -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
|
||||
|
||||
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
|
||||
Remove the comment if you do not require these default features. -->
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
|
||||
|
||||
</manifest>
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
// Obtain androidPackageSourceDir
|
||||
// androidPackageSourceDir is the absolute path of the folder containing build.gradle and AndroidManifests.xml
|
||||
// This code also works with androiddeployqt.
|
||||
|
||||
import groovy.json.JsonSlurper
|
||||
|
||||
String getAndroidPackageSourceDir() {
|
||||
String res = System.getProperty("user.dir");
|
||||
|
||||
FileTree tree = fileTree(dir: res + "/..").include("android*deployment-settings.json");
|
||||
|
||||
if (tree.getFiles().size() > 0) {
|
||||
def inputFile = tree.getFiles().toArray()[0];
|
||||
def InputJSON = new JsonSlurper().parseText(inputFile.text);
|
||||
res = InputJSON["android-package-source-directory"]
|
||||
} else {
|
||||
println("android*deployment-settings.json not found. Set androidPackageSourceDir to user.dir");
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
String setAndroidNativePath(String path) {
|
||||
String androidPackageSourceDir = getAndroidPackageSourceDir();
|
||||
String androidNativePath = androidPackageSourceDir + path + "/java/src";
|
||||
LinkedHashSet hash = android.sourceSets.main.java.srcDirs;
|
||||
hash.add(androidNativePath);
|
||||
android.sourceSets.main.java.srcDirs = hash;
|
||||
}
|
||||
|
||||
ext {
|
||||
setAndroidNativePath = this.&setAndroidNativePath;
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:1.3.0'
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
dependencies {
|
||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||
}
|
||||
|
||||
android {
|
||||
/*******************************************************
|
||||
* The following variables:
|
||||
* - androidBuildToolsVersion,
|
||||
* - androidCompileSdkVersion
|
||||
* - qt5AndroidDir - holds the path to qt android files
|
||||
* needed to build any Qt application
|
||||
* on Android.
|
||||
*
|
||||
* are defined in gradle.properties file. This file is
|
||||
* updated by QtCreator and androiddeployqt tools.
|
||||
* Changing them manually might break the compilation!
|
||||
*******************************************************/
|
||||
|
||||
compileSdkVersion androidCompileSdkVersion.toInteger()
|
||||
|
||||
buildToolsVersion androidBuildToolsVersion
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
|
||||
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
|
||||
res.srcDirs = [qt5AndroidDir + '/res', 'res']
|
||||
resources.srcDirs = ['src']
|
||||
renderscript.srcDirs = ['src']
|
||||
assets.srcDirs = ['assets']
|
||||
jniLibs.srcDirs = ['libs']
|
||||
}
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
}
|
||||
|
||||
apply from: "androidnative.gradle"
|
||||
setAndroidNativePath("/../../..");
|
|
@ -0,0 +1,9 @@
|
|||
## This file is automatically generated by QtCreator.
|
||||
#
|
||||
# This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
|
||||
androidBuildToolsVersion=25.0.3
|
||||
androidCompileSdkVersion=25
|
||||
buildDir=.build
|
||||
qt5AndroidDir=/home/pankraz/Qt/5.9.1/android_armv7/src/android/java
|
|
@ -0,0 +1,9 @@
|
|||
## This file is automatically generated by QtCreator.
|
||||
#
|
||||
# This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
|
||||
androidBuildToolsVersion=25.0.3
|
||||
androidCompileSdkVersion=25
|
||||
buildDir=.build
|
||||
qt5AndroidDir=/home/pankraz/Qt/5.9.1/android_armv7/src/android/java
|
|
@ -0,0 +1,6 @@
|
|||
#Thu Feb 16 01:04:18 HKT 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip
|
160
source-android/androidnative.pri/examples/androidnativeexample/android-sources/gradlew
vendored
Executable file
|
@ -0,0 +1,160 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
90
source-android/androidnative.pri/examples/androidnativeexample/android-sources/gradlew.bat
vendored
Normal file
|
@ -0,0 +1,90 @@
|
|||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
|
@ -0,0 +1,6 @@
|
|||
## This file is automatically generated by QtCreator.
|
||||
#
|
||||
# This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
|
||||
sdk.dir=/home/pankraz/android-sdk_alt
|
|
@ -0,0 +1,6 @@
|
|||
## This file is automatically generated by QtCreator.
|
||||
#
|
||||
# This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
|
||||
sdk.dir=/home/pankraz/android-sdk_alt
|
After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle" >
|
||||
<solid android:color="#FFFFFFFF"/>
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/icon"
|
||||
android:gravity="center" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
|
||||
<item name="android:windowBackground">@drawable/splash</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<array name="qt_sources">
|
||||
<item>https://download.qt-project.org/ministro/android/qt5/qt-5.4</item>
|
||||
</array>
|
||||
|
||||
<!-- The following is handled automatically by the deployment tool. It should
|
||||
not be edited manually. -->
|
||||
|
||||
<array name="bundled_libs">
|
||||
<!-- %%INSERT_EXTRA_LIBS%% -->
|
||||
</array>
|
||||
|
||||
<array name="qt_libs">
|
||||
<!-- %%INSERT_QT_LIBS%% -->
|
||||
</array>
|
||||
|
||||
<array name="bundled_in_lib">
|
||||
<!-- %%INSERT_BUNDLED_IN_LIB%% -->
|
||||
</array>
|
||||
<array name="bundled_in_assets">
|
||||
<!-- %%INSERT_BUNDLED_IN_ASSETS%% -->
|
||||
</array>
|
||||
|
||||
</resources>
|
|
@ -0,0 +1,16 @@
|
|||
package androidnative.example;
|
||||
|
||||
import androidnative.AndroidNativeActivity;
|
||||
|
||||
/**
|
||||
* Created by benlau on 8/3/2017.
|
||||
*/
|
||||
|
||||
public class ExampleActivity extends AndroidNativeActivity {
|
||||
public ExampleActivity() {
|
||||
super();
|
||||
|
||||
QT_ANDROID_THEMES = new String[] {""};
|
||||
QT_ANDROID_DEFAULT_THEME = "";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
package androidnative.example;
|
||||
import androidnative.SystemDispatcher;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.util.Log;
|
||||
import android.os.Handler;
|
||||
import android.app.Activity;
|
||||
import android.view.View;
|
||||
import android.content.Context;
|
||||
import java.util.Map;
|
||||
import org.qtproject.qt5.android.QtNative;
|
||||
|
||||
public class ExampleService {
|
||||
|
||||
static {
|
||||
|
||||
SystemDispatcher.addListener(new SystemDispatcher.Listener() {
|
||||
|
||||
NotificationManager m_notificationManager;
|
||||
Notification.Builder m_builder;
|
||||
|
||||
private void notificationManagerNotify(Map data) {
|
||||
|
||||
final Activity activity = QtNative.activity();
|
||||
final Map messageData = data;
|
||||
|
||||
Runnable runnable = new Runnable () {
|
||||
public void run() {
|
||||
try {
|
||||
String title = (String) messageData.get("title");
|
||||
|
||||
String message = (String) messageData.get("message");
|
||||
|
||||
if (m_notificationManager == null) {
|
||||
m_notificationManager = (NotificationManager) activity.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
m_builder = new Notification.Builder(activity);
|
||||
|
||||
// Small Icon is a must to make notification works.
|
||||
// And that is why you need to inherit QtActivity
|
||||
m_builder.setSmallIcon(R.drawable.icon);
|
||||
}
|
||||
|
||||
m_builder.setContentTitle(title);
|
||||
m_builder.setContentText(message);
|
||||
m_notificationManager.notify(1, m_builder.build());
|
||||
|
||||
// Test function. Remove it later.
|
||||
SystemDispatcher.dispatch("Notifier.notifyFinished");
|
||||
} catch (Exception e) {
|
||||
Log.d("",e.getMessage());
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
activity.runOnUiThread(runnable);
|
||||
}
|
||||
|
||||
private void hapticFeedbackPerform(Map data) {
|
||||
|
||||
final Activity activity = QtNative.activity();
|
||||
final Map messageData = data;
|
||||
Runnable runnable = new Runnable () {
|
||||
public void run() {
|
||||
int feedbackConstant = (Integer) messageData.get("feedbackConstant");
|
||||
int flags = (Integer) messageData.get("flags");
|
||||
|
||||
Log.d("",String.format("hapticFeedbackPerform(%d,%d)",feedbackConstant,flags));
|
||||
|
||||
View rootView = activity.getWindow().getDecorView().getRootView();
|
||||
rootView.performHapticFeedback(feedbackConstant, flags);
|
||||
|
||||
// Test function. Remove it later.
|
||||
SystemDispatcher.dispatch("hapticFeedbackPerformFinished");
|
||||
};
|
||||
};
|
||||
activity.runOnUiThread(runnable);
|
||||
}
|
||||
|
||||
public void onDispatched(String name , Map data) {
|
||||
|
||||
if (name.equals("Notifier.notify")) {
|
||||
notificationManagerNotify(data);
|
||||
return;
|
||||
} else if (name.equals("hapticFeedbackPerform")) {
|
||||
hapticFeedbackPerform(data);
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
TEMPLATE = app
|
||||
|
||||
QT += qml quick
|
||||
|
||||
SOURCES += main.cpp \
|
||||
debugwrapper.cpp
|
||||
|
||||
RESOURCES += qml.qrc
|
||||
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH += ../..
|
||||
|
||||
android {
|
||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
|
||||
}
|
||||
|
||||
# include(vendor/vendor.pri)
|
||||
# Default rules for deployment.
|
||||
include(deployment.pri)
|
||||
include(../../androidnative.pri)
|
||||
include(../../../../../../quickandroid/quickandroid.pri)
|
||||
|
||||
DISTFILES += \
|
||||
android-sources/AndroidManifest.xml \
|
||||
android-sources/src/quickandroid/example/ExampleService.java \
|
||||
README.md \
|
||||
android-sources/gradle/wrapper/gradle-wrapper.jar \
|
||||
android-sources/gradlew \
|
||||
android-sources/res/values/libs.xml \
|
||||
android-sources/build.gradle \
|
||||
android-sources/gradle/wrapper/gradle-wrapper.properties \
|
||||
android-sources/gradlew.bat \
|
||||
android-sources/settings.gradle \
|
||||
android-sources/src/androidnative/example/ExampleService.java
|
||||
|
||||
HEADERS += \
|
||||
../../README.md \
|
||||
debugwrapper.h
|
|
@ -0,0 +1,392 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.4.0, 2017-10-23T22:04:08. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{8825bc46-5cad-4a59-be78-bf9eeaa7217a}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap"/>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Android</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{8e3757e7-5698-4d0f-9f13-55359b1a832e}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/pankraz/build/debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
||||
<value type="QString">-w</value>
|
||||
<value type="QString">-r</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Anwendungsdaten kopieren</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
||||
<value type="QString" key="BuildTargetSdk">android-25</value>
|
||||
<value type="QString" key="KeystoreLocation"></value>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android-APK erstellen</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
||||
<value type="int" key="Qt4ProjectManager.AndroidDeployQtStep.DeployQtAction">2</value>
|
||||
<value type="bool" key="UseGradle">true</value>
|
||||
<value type="bool" key="VerboseOutput">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
||||
<value type="QString">-w</value>
|
||||
<value type="QString">-r</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/pankraz/ownCloud/clientsync/Friendiqa/v0.005/source-android/androidnative.pri/examples/build-androidnativeexample-Android-Release</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
||||
<value type="QString">-w</value>
|
||||
<value type="QString">-r</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Anwendungsdaten kopieren</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
||||
<value type="QString" key="BuildTargetSdk">android-25</value>
|
||||
<value type="QString" key="KeystoreLocation"></value>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android-APK erstellen</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
||||
<value type="int" key="Qt4ProjectManager.AndroidDeployQtStep.DeployQtAction">2</value>
|
||||
<value type="bool" key="UseGradle">true</value>
|
||||
<value type="bool" key="VerboseOutput">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
||||
<value type="QString">-w</value>
|
||||
<value type="QString">-r</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/pankraz/ownCloud/clientsync/Friendiqa/v0.005/source-android/androidnative.pri/examples/build-androidnativeexample-Android-Profile</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
||||
<value type="QString">-w</value>
|
||||
<value type="QString">-r</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Anwendungsdaten kopieren</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
||||
<value type="QString" key="BuildTargetSdk">android-25</value>
|
||||
<value type="QString" key="KeystoreLocation"></value>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android-APK erstellen</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
||||
<value type="int" key="Qt4ProjectManager.AndroidDeployQtStep.DeployQtAction">2</value>
|
||||
<value type="bool" key="UseGradle">true</value>
|
||||
<value type="bool" key="VerboseOutput">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
||||
<value type="QString">-w</value>
|
||||
<value type="QString">-r</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment auf Android-Gerät</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidDeployQtStep</value>
|
||||
<value type="bool" key="UninstallPreviousPackage">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment auf Android-Gerät</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment auf Android-Gerät</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidDeployConfiguration2</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings">
|
||||
<value type="QString" key="AndroidDeviceSerialNumber">CB5A22HSB9</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="Android.AmStartArgsKey"/>
|
||||
<valuelist type="QVariantList" key="Android.PostFinishShellCmdListKey"/>
|
||||
<valuelist type="QVariantList" key="Android.PreStartShellCmdListKey"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">androidnativeexample</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidRunConfiguration:/home/pankraz/ownCloud/clientsync/Friendiqa/v0.005/source-android/androidnative.pri/examples/androidnativeexample/androidnativeexample.pro</value>
|
||||
<value type="QString" key="QMakeProjectManager.QmakeAndroidRunConfiguration.ProFile">androidnativeexample.pro</value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">18</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">18</value>
|
||||
</data>
|
||||
</qtcreator>
|
|
@ -0,0 +1,17 @@
|
|||
#include "debugwrapper.h"
|
||||
#include "AndroidNative/debug.h"
|
||||
|
||||
DebugWrapper::DebugWrapper(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
long DebugWrapper::getNativeHeapSize() const
|
||||
{
|
||||
return AndroidNative::Debug::getNativeHeapSize();
|
||||
}
|
||||
|
||||
long DebugWrapper::getNativeHeapAllocatedSize() const
|
||||
{
|
||||
return AndroidNative::Debug::getNativeHeapAllocatedSize();
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
#ifndef DEBUGWRAPPER_H
|
||||
#define DEBUGWRAPPER_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class DebugWrapper : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DebugWrapper(QObject *parent = 0);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
long getNativeHeapSize() const;
|
||||
|
||||
long getNativeHeapAllocatedSize() const;
|
||||
};
|
||||
|
||||
#endif // DEBUGWRAPPER_H
|
|
@ -0,0 +1,27 @@
|
|||
android-no-sdk {
|
||||
target.path = /data/user/qt
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:android {
|
||||
x86 {
|
||||
target.path = /libs/x86
|
||||
} else: armeabi-v7a {
|
||||
target.path = /libs/armeabi-v7a
|
||||
} else {
|
||||
target.path = /libs/armeabi
|
||||
}
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:unix {
|
||||
isEmpty(target.path) {
|
||||
qnx {
|
||||
target.path = /tmp/$${TARGET}/bin
|
||||
} else {
|
||||
target.path = /opt/$${TARGET}/bin
|
||||
}
|
||||
export(target.path)
|
||||
}
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
export(INSTALLS)
|
|
@ -0,0 +1,38 @@
|
|||
import QtQuick 2.0
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import "../theme"
|
||||
|
||||
Page {
|
||||
actionBar: ActionBar {
|
||||
id: actionBar
|
||||
upEnabled: true
|
||||
title: qsTr("Dialog Demo")
|
||||
showTitle: true
|
||||
|
||||
onActionButtonClicked: back();
|
||||
z: 10
|
||||
|
||||
}
|
||||
|
||||
Button {
|
||||
id: label
|
||||
text : "Press to launch dialog"
|
||||
anchors.centerIn: parent
|
||||
onClicked: {
|
||||
dialog.open();
|
||||
}
|
||||
}
|
||||
|
||||
Dialog {
|
||||
id: dialog
|
||||
anchors.centerIn: parent
|
||||
title: "Dialog"
|
||||
Text {
|
||||
text: "Demo"
|
||||
}
|
||||
z: 20
|
||||
|
||||
acceptButtonText: "OK"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
import QtQuick 2.0
|
||||
import QuickAndroid 0.1
|
||||
import AndroidNative 1.0 as AN
|
||||
import "../theme"
|
||||
|
||||
Page {
|
||||
id: demo
|
||||
actionBar: ActionBar {
|
||||
title: "Image Picker Demo"
|
||||
onActionButtonClicked: back();
|
||||
}
|
||||
|
||||
AN.ImagePicker {
|
||||
id: imagePicker;
|
||||
multiple : true
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: Constants.black100
|
||||
|
||||
Image {
|
||||
id: image
|
||||
anchors.fill: parent
|
||||
source: imagePicker.imageUrl
|
||||
fillMode: Image.PreserveAspectFit
|
||||
visible: imagePicker.imageUrls.length <= 1
|
||||
}
|
||||
|
||||
Grid {
|
||||
columns: 3
|
||||
spacing: 0
|
||||
visible: !image.visible
|
||||
|
||||
Repeater {
|
||||
model: imagePicker.imageUrls
|
||||
delegate: Image {
|
||||
width: demo.width / 3
|
||||
height: width / 4 * 3
|
||||
source: modelData
|
||||
asynchronous: true
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 16 * A.dp
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: 32 * A.dp
|
||||
|
||||
spacing: 16 * A.dp
|
||||
|
||||
FloatingActionButton {
|
||||
iconSource: A.drawable("ic_camera",Constants.black87);
|
||||
size: Constants.small
|
||||
backgroundColor: Constants.white100
|
||||
onClicked: {
|
||||
imagePicker.takePhoto();
|
||||
}
|
||||
}
|
||||
|
||||
FloatingActionButton {
|
||||
iconSource: A.drawable("ic_image",Constants.black87);
|
||||
size: Constants.small
|
||||
backgroundColor: Constants.white100
|
||||
onClicked: {
|
||||
imagePicker.pickImage();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
import QtQuick 2.0
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import "../theme"
|
||||
|
||||
Page {
|
||||
id: page
|
||||
actionBar: ActionBar {
|
||||
id: actionBar
|
||||
upEnabled: true
|
||||
title: qsTr("Information")
|
||||
showTitle: true
|
||||
|
||||
onActionButtonClicked: back();
|
||||
z: 10
|
||||
}
|
||||
|
||||
VisualItemModel {
|
||||
id: itemModel
|
||||
|
||||
ListItem {
|
||||
title: "Environment.DIRECTORY_DCIM"
|
||||
subtitle: Environment.DIRECTORY_DCIM
|
||||
interactive: false
|
||||
width: page.width
|
||||
}
|
||||
|
||||
ListItem {
|
||||
title: "Debug.getNativeHeapSize"
|
||||
subtitle: (Debug.getNativeHeapSize() / 1024 / 1024).toFixed(2) + "MB";
|
||||
interactive: false
|
||||
width: page.width
|
||||
}
|
||||
|
||||
ListItem {
|
||||
title: "Debug.getNativeHeapAllocatedSize"
|
||||
subtitle: (Debug.getNativeHeapAllocatedSize() / 1024 / 1024).toFixed(2) + "MB";
|
||||
interactive: false
|
||||
width: page.width
|
||||
}
|
||||
|
||||
ListItem {
|
||||
title: "QThread.idealThreadCount"
|
||||
subtitle: Misc.idealThreadCount;
|
||||
interactive: false
|
||||
width: page.width
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ListView {
|
||||
anchors.fill: parent
|
||||
model: itemModel
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
#include <QtCore>
|
||||
#include <QGuiApplication>
|
||||
#include <QQmlApplicationEngine>
|
||||
#include <QQuickView>
|
||||
#include <QQmlContext>
|
||||
#include <QSettings>
|
||||
//#include "qadrawableprovider.h"
|
||||
#include "AndroidNative/systemdispatcher.h"
|
||||
#include "AndroidNative/environment.h"
|
||||
#include "AndroidNative/debug.h"
|
||||
#include "AndroidNative/mediascannerconnection.h"
|
||||
#include "debugwrapper.h"
|
||||
|
||||
using namespace AndroidNative;
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
#include <QtAndroidExtras/QAndroidJniObject>
|
||||
#include <QtAndroidExtras/QAndroidJniEnvironment>
|
||||
|
||||
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) {
|
||||
Q_UNUSED(vm);
|
||||
qDebug("NativeInterface::JNI_OnLoad()");
|
||||
|
||||
// It must call this function within JNI_OnLoad to enable System Dispatcher
|
||||
SystemDispatcher::registerNatives();
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
#endif
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
#endif
|
||||
|
||||
QGuiApplication app(argc, argv);
|
||||
app.setApplicationName("Android Native Example");
|
||||
app.setOrganizationDomain("com.github.benlau.androidnative");
|
||||
|
||||
QSettings settings;
|
||||
|
||||
settings.setValue("firstTimeLoading", false);
|
||||
settings.sync();
|
||||
|
||||
QVariantMap env;
|
||||
env["DIRECTORY_DCIM"] = Environment::getExternalStoragePublicDirectory(Environment::DIRECTORY_DCIM);
|
||||
|
||||
QVariantMap misc;
|
||||
misc["idealThreadCount"] = QThread::idealThreadCount();
|
||||
|
||||
MediaScannerConnection::scanFile("");
|
||||
|
||||
SystemDispatcher::instance()->loadClass("androidnative.example.ExampleService");
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
|
||||
/* QuickAndroid Initialization */
|
||||
engine.addImportPath("qrc:///"); // Add QuickAndroid into the import path
|
||||
engine.rootContext()->setContextProperty("Environment", env);
|
||||
engine.rootContext()->setContextProperty("Misc", misc);
|
||||
engine.rootContext()->setContextProperty("Debug", new DebugWrapper(&engine));
|
||||
|
||||
/* End of QuickAndroid Initialization */
|
||||
|
||||
// Extra features:
|
||||
//QADrawableProvider* provider = new QADrawableProvider();
|
||||
//provider->setBasePath("qrc://res");
|
||||
//engine.addImageProvider("drawable",provider);
|
||||
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
|
||||
|
||||
return app.exec();
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Window 2.2
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import "./theme"
|
||||
|
||||
Window {
|
||||
id: window;
|
||||
width: 480
|
||||
height: 640
|
||||
|
||||
color: "#FFFFFF"
|
||||
|
||||
visible: false;
|
||||
|
||||
/* Fast Splash Screen Setup Instruction
|
||||
|
||||
1. Create a custom theme (apptheme.qml) and set windowBackground to @drawable/splash.xml (Your splash screen drawable)
|
||||
|
||||
2. Within AndroidManifest.xml, set android.app.splash_screen_drawable to @drawable/splash.xml
|
||||
|
||||
<!-- Splash screen -->
|
||||
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
|
||||
<!-- Splash screen -->
|
||||
|
||||
That will show a splash screen while Qt is loading. However, screen flicker will happen when your Window
|
||||
item is shown. To prevent screen flicker completely, you could setup your main.qml accoroding to step 3.
|
||||
|
||||
3. In your main.qml (the one with Window component)
|
||||
|
||||
3.1. Set Window.color to a color which is similar to splash screen / Theme.windowBackground
|
||||
|
||||
3.2. Set visible of Window to false until your content is loaded. (Keep Android splash screen while loading)
|
||||
|
||||
3.3. Use an asynchronous Loader for your content. Set opacity to 0.
|
||||
|
||||
3.4. Once everything is ready, set Window.visible to true and perform a fade-in animation on Loader
|
||||
|
||||
*/
|
||||
|
||||
Loader {
|
||||
id: loader
|
||||
parent: null
|
||||
width: window.width
|
||||
height: window.height
|
||||
asynchronous: true
|
||||
opacity: 0
|
||||
focus: true;
|
||||
|
||||
sourceComponent: PageStack {
|
||||
id: stack
|
||||
objectName: "PageStack";
|
||||
initialPage: Components {
|
||||
|
||||
onPresented: {
|
||||
window.visible = true;
|
||||
A.setTimeout(function() {
|
||||
loader.parent = window.contentItem;
|
||||
loader.opacity = 1;
|
||||
}, 34);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: 200
|
||||
easing.type: Easing.OutQuad;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
ThemeManager.currentTheme = AppTheme
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Window 2.1
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import AndroidNative 1.0 as AN
|
||||
import "../theme"
|
||||
|
||||
Page {
|
||||
|
||||
actionBar: ActionBar {
|
||||
id : actionBar
|
||||
title: "Notification"
|
||||
z: 10
|
||||
upEnabled: true
|
||||
onActionButtonClicked: back();
|
||||
}
|
||||
|
||||
Button {
|
||||
id: label
|
||||
text : "Press to send notification"
|
||||
anchors.centerIn: parent
|
||||
onClicked: {
|
||||
AN.SystemDispatcher.dispatch("Notifier.notify",{
|
||||
title: "Quick Android Example",
|
||||
message: "Hello!"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>main.qml</file>
|
||||
<file>res/drawable-hdpi/icon.png</file>
|
||||
<file>Components.qml</file>
|
||||
<file>res/drawable-xxhdpi/ic_menu.png</file>
|
||||
<file>dialog/DialogDemo.qml</file>
|
||||
<file>notification/NotificationDemo.qml</file>
|
||||
<file>theme/AppTheme.qml</file>
|
||||
<file>theme/qmldir</file>
|
||||
<file>res/drawable-hdpi/ic_android_black_48dp.png</file>
|
||||
<file>res/drawable-xxhdpi/ic_android_black_48dp.png</file>
|
||||
<file>res/drawable-mdpi/ic_android_black_48dp.png</file>
|
||||
<file>res/drawable-xhdpi/ic_android_black_48dp.png</file>
|
||||
<file>res/drawable-xxxhdpi/ic_android_black_48dp.png</file>
|
||||
<file>res/drawable-hdpi/ic_done_black_24dp.png</file>
|
||||
<file>res/drawable-mdpi/ic_done_black_24dp.png</file>
|
||||
<file>res/drawable-xhdpi/ic_done_black_24dp.png</file>
|
||||
<file>res/drawable-xxhdpi/ic_done_black_24dp.png</file>
|
||||
<file>res/drawable-xxxhdpi/ic_done_black_24dp.png</file>
|
||||
<file>theme/ActionBarBackground.qml</file>
|
||||
<file>res/drawable-xxhdpi/ic_keyboard_backspace.png</file>
|
||||
<file>res/drawable-xxhdpi/ic_arrow_back.png</file>
|
||||
<file>res/drawable-xxhdpi/ic_image.png</file>
|
||||
<file>res/drawable-xxhdpi/ic_camera.png</file>
|
||||
<file>imagePicker/ImagePickerDemo.qml</file>
|
||||
<file>info/InfoDemo.qml</file>
|
||||
<file>toast/ToastDemo.qml</file>
|
||||
<file>statusbar/StatusBarDemo.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"name": "",
|
||||
"description": "",
|
||||
"dependencies": [
|
||||
"com.github.benlau.quickandroid@0.1.7"
|
||||
],
|
||||
"license": "NONE",
|
||||
"pri_filename": "",
|
||||
"webpage": ""
|
||||
}
|
After Width: | Height: | Size: 519 B |
After Width: | Height: | Size: 177 B |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 130 B |
After Width: | Height: | Size: 641 B |
After Width: | Height: | Size: 188 B |
After Width: | Height: | Size: 975 B |
After Width: | Height: | Size: 287 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 227 B |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 267 B |
After Width: | Height: | Size: 127 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 277 B |
|
@ -0,0 +1,47 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Window 2.1
|
||||
import QtQuick.Controls 2.1 as QQC2
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import AndroidNative 1.0 as AN
|
||||
import "../theme"
|
||||
|
||||
Page {
|
||||
|
||||
actionBar: ActionBar {
|
||||
id : actionBar
|
||||
title: "Status Bar"
|
||||
z: 10
|
||||
upEnabled: true
|
||||
onActionButtonClicked: back();
|
||||
}
|
||||
|
||||
Column {
|
||||
anchors.centerIn: parent
|
||||
|
||||
QQC2.Switch {
|
||||
text: "Translucent Status Bar"
|
||||
checked: false
|
||||
|
||||
onCheckedChanged: {
|
||||
AN.SystemDispatcher.dispatch("androidnative.Util.setTranslucentStatusBar", {value: checked});
|
||||
}
|
||||
}
|
||||
|
||||
QQC2.Switch {
|
||||
text: "Status Bar Visible"
|
||||
checked: true
|
||||
|
||||
onCheckedChanged: {
|
||||
AN.SystemDispatcher.dispatch("androidnative.Util.setFullScreen", {value: checked});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
AN.SystemDispatcher.loadClass("androidnative.Util");
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import QtQuick 2.0
|
||||
import QuickAndroid 0.1
|
||||
|
||||
Item {
|
||||
|
||||
MaterialShadow {
|
||||
asynchronous: true
|
||||
anchors.fill: parent
|
||||
depth: 1
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "#cddc39" // Lime 500
|
||||
anchors.fill: parent
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
import QtQuick 2.0
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
pragma Singleton
|
||||
|
||||
Theme {
|
||||
mediumText.textSize: 18 * A.dp
|
||||
smallText.textSize : 14 * A.dp
|
||||
|
||||
colorPrimary: "#cddc39" // Lime 500
|
||||
textColorPrimary: Constants.black87
|
||||
windowBackground: "#eeeeee";
|
||||
|
||||
// The default icon of ActionBar is a "back" image
|
||||
actionBar.iconSource: A.drawable("ic_arrow_back",Constants.black87)
|
||||
|
||||
// Background with shadow
|
||||
actionBar.background: ActionBarBackground {
|
||||
}
|
||||
|
||||
// actionBar.title.textSize is not allowed in QML. You should declare your own TextMaterial and assign directly.
|
||||
// or modify text , smallText , mediumText and largetText
|
||||
actionBar.title : customTextMaterial1;
|
||||
actionBar.iconSourceSize: Qt.size(24 * A.dp , 24 * A.dp)
|
||||
|
||||
// Custom Style object.
|
||||
TextMaterial {
|
||||
id : customTextMaterial1
|
||||
textSize: 18 * A.dp
|
||||
textColor : Constants.black87
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
module theme
|
||||
singleton AppTheme 0.1 AppTheme.qml
|
|
@ -0,0 +1,33 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Window 2.1
|
||||
import QuickAndroid 0.1
|
||||
import QuickAndroid.Styles 0.1
|
||||
import AndroidNative 1.0 as AN
|
||||
import "../theme"
|
||||
|
||||
Page {
|
||||
|
||||
actionBar: ActionBar {
|
||||
id : actionBar
|
||||
title: "Toast"
|
||||
z: 10
|
||||
upEnabled: true
|
||||
onActionButtonClicked: back();
|
||||
}
|
||||
|
||||
AN.Toast {
|
||||
id: toast
|
||||
text: "Toast"
|
||||
longDuration: true
|
||||
}
|
||||
|
||||
Button {
|
||||
id: label
|
||||
text : "Press to show toast"
|
||||
anchors.centerIn: parent
|
||||
onClicked: {
|
||||
toast.show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|