Commit 0dd519e804b52ec43175f73f297c5f7239dfe323
0 parents
starting
Showing
28 changed files
with
719 additions
and
0 deletions
.gitignore
0 → 100644
android/AndroidManifest.xml
0 → 100644
| 1 | +++ a/android/AndroidManifest.xml | |
| 1 | +<?xml version="1.0"?> | |
| 2 | +<manifest package="org.qtproject.example" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="0.1" android:versionCode="1" android:installLocation="auto"> | |
| 3 | + <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:icon="@drawable/icon"> | |
| 4 | + <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> | |
| 5 | + <intent-filter> | |
| 6 | + <action android:name="android.intent.action.MAIN"/> | |
| 7 | + <category android:name="android.intent.category.LAUNCHER"/> | |
| 8 | + </intent-filter> | |
| 9 | + <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> | |
| 10 | + <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> | |
| 11 | + <meta-data android:name="android.app.repository" android:value="default"/> | |
| 12 | + <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> | |
| 13 | + <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> | |
| 14 | + <!-- Deploy Qt libs as part of package --> | |
| 15 | + <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> | |
| 16 | + <meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/> | |
| 17 | + <meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/> | |
| 18 | + <!-- Run with local libs --> | |
| 19 | + <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> | |
| 20 | + <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> | |
| 21 | + <meta-data android:name="android.app.load_local_libs" android:value="-- %%INSERT_LOCAL_LIBS%% --"/> | |
| 22 | + <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> | |
| 23 | + <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> | |
| 24 | + <!-- Messages maps --> | |
| 25 | + <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> | |
| 26 | + <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> | |
| 27 | + <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> | |
| 28 | + <!-- Messages maps --> | |
| 29 | + | |
| 30 | + <!-- Splash screen --> | |
| 31 | + <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/> | |
| 32 | + <!-- Splash screen --> | |
| 33 | + | |
| 34 | + <!-- Background running --> | |
| 35 | + <!-- Warning: changing this value to true may cause unexpected crashes if the | |
| 36 | + application still try to draw after | |
| 37 | + "applicationStateChanged(Qt::ApplicationSuspended)" | |
| 38 | + signal is sent! --> | |
| 39 | + <meta-data android:name="android.app.background_running" android:value="false"/> | |
| 40 | + <!-- Background running --> | |
| 41 | + </activity> | |
| 42 | + </application> | |
| 43 | + <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14"/> | |
| 44 | + <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> | |
| 45 | + | |
| 46 | + <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. | |
| 47 | + Remove the comment if you do not require these default permissions. --> | |
| 48 | + <!-- %%INSERT_PERMISSIONS --> | |
| 49 | + | |
| 50 | + <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. | |
| 51 | + Remove the comment if you do not require these default features. --> | |
| 52 | + <!-- %%INSERT_FEATURES --> | |
| 53 | + | |
| 54 | +</manifest> | ... | ... |
android/build.gradle
0 → 100644
| 1 | +++ a/android/build.gradle | |
| 1 | +buildscript { | |
| 2 | + repositories { | |
| 3 | + jcenter() | |
| 4 | + } | |
| 5 | + | |
| 6 | + dependencies { | |
| 7 | + classpath 'com.android.tools.build:gradle:1.0.0' | |
| 8 | + } | |
| 9 | +} | |
| 10 | + | |
| 11 | +allprojects { | |
| 12 | + repositories { | |
| 13 | + jcenter() | |
| 14 | + } | |
| 15 | +} | |
| 16 | + | |
| 17 | +apply plugin: 'com.android.application' | |
| 18 | + | |
| 19 | +dependencies { | |
| 20 | + compile fileTree(dir: 'libs', include: ['*.jar']) | |
| 21 | +} | |
| 22 | + | |
| 23 | +android { | |
| 24 | + /******************************************************* | |
| 25 | + * The following variables: | |
| 26 | + * - androidBuildToolsVersion, | |
| 27 | + * - androidCompileSdkVersion | |
| 28 | + * - qt5AndroidDir - holds the path to qt android files | |
| 29 | + * needed to build any Qt application | |
| 30 | + * on Android. | |
| 31 | + * | |
| 32 | + * are defined in gradle.properties file. This file is | |
| 33 | + * updated by QtCreator and androiddeployqt tools. | |
| 34 | + * Changing them manually might break the compilation! | |
| 35 | + *******************************************************/ | |
| 36 | + | |
| 37 | + compileSdkVersion androidCompileSdkVersion.toInteger() | |
| 38 | + | |
| 39 | + buildToolsVersion androidBuildToolsVersion | |
| 40 | + | |
| 41 | + sourceSets { | |
| 42 | + main { | |
| 43 | + manifest.srcFile 'AndroidManifest.xml' | |
| 44 | + java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java'] | |
| 45 | + aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl'] | |
| 46 | + res.srcDirs = [qt5AndroidDir + '/res', 'res'] | |
| 47 | + resources.srcDirs = ['src'] | |
| 48 | + renderscript.srcDirs = ['src'] | |
| 49 | + assets.srcDirs = ['assets'] | |
| 50 | + jniLibs.srcDirs = ['libs'] | |
| 51 | + } | |
| 52 | + } | |
| 53 | + | |
| 54 | + lintOptions { | |
| 55 | + abortOnError false | |
| 56 | + } | |
| 57 | +} | ... | ... |
android/gradle/wrapper/gradle-wrapper.jar
0 → 100644
No preview for this file type
android/gradle/wrapper/gradle-wrapper.properties
0 → 100644
| 1 | +++ a/android/gradle/wrapper/gradle-wrapper.properties | |
| 1 | +#Wed Apr 10 15:27:10 PDT 2013 | |
| 2 | +distributionBase=GRADLE_USER_HOME | |
| 3 | +distributionPath=wrapper/dists | |
| 4 | +zipStoreBase=GRADLE_USER_HOME | |
| 5 | +zipStorePath=wrapper/dists | |
| 6 | +distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip | ... | ... |
android/gradlew
0 → 100755
| 1 | +++ a/android/gradlew | |
| 1 | +#!/usr/bin/env bash | |
| 2 | + | |
| 3 | +############################################################################## | |
| 4 | +## | |
| 5 | +## Gradle start up script for UN*X | |
| 6 | +## | |
| 7 | +############################################################################## | |
| 8 | + | |
| 9 | +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |
| 10 | +DEFAULT_JVM_OPTS="" | |
| 11 | + | |
| 12 | +APP_NAME="Gradle" | |
| 13 | +APP_BASE_NAME=`basename "$0"` | |
| 14 | + | |
| 15 | +# Use the maximum available, or set MAX_FD != -1 to use that value. | |
| 16 | +MAX_FD="maximum" | |
| 17 | + | |
| 18 | +warn ( ) { | |
| 19 | + echo "$*" | |
| 20 | +} | |
| 21 | + | |
| 22 | +die ( ) { | |
| 23 | + echo | |
| 24 | + echo "$*" | |
| 25 | + echo | |
| 26 | + exit 1 | |
| 27 | +} | |
| 28 | + | |
| 29 | +# OS specific support (must be 'true' or 'false'). | |
| 30 | +cygwin=false | |
| 31 | +msys=false | |
| 32 | +darwin=false | |
| 33 | +case "`uname`" in | |
| 34 | + CYGWIN* ) | |
| 35 | + cygwin=true | |
| 36 | + ;; | |
| 37 | + Darwin* ) | |
| 38 | + darwin=true | |
| 39 | + ;; | |
| 40 | + MINGW* ) | |
| 41 | + msys=true | |
| 42 | + ;; | |
| 43 | +esac | |
| 44 | + | |
| 45 | +# For Cygwin, ensure paths are in UNIX format before anything is touched. | |
| 46 | +if $cygwin ; then | |
| 47 | + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | |
| 48 | +fi | |
| 49 | + | |
| 50 | +# Attempt to set APP_HOME | |
| 51 | +# Resolve links: $0 may be a link | |
| 52 | +PRG="$0" | |
| 53 | +# Need this for relative symlinks. | |
| 54 | +while [ -h "$PRG" ] ; do | |
| 55 | + ls=`ls -ld "$PRG"` | |
| 56 | + link=`expr "$ls" : '.*-> \(.*\)$'` | |
| 57 | + if expr "$link" : '/.*' > /dev/null; then | |
| 58 | + PRG="$link" | |
| 59 | + else | |
| 60 | + PRG=`dirname "$PRG"`"/$link" | |
| 61 | + fi | |
| 62 | +done | |
| 63 | +SAVED="`pwd`" | |
| 64 | +cd "`dirname \"$PRG\"`/" >&- | |
| 65 | +APP_HOME="`pwd -P`" | |
| 66 | +cd "$SAVED" >&- | |
| 67 | + | |
| 68 | +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | |
| 69 | + | |
| 70 | +# Determine the Java command to use to start the JVM. | |
| 71 | +if [ -n "$JAVA_HOME" ] ; then | |
| 72 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | |
| 73 | + # IBM's JDK on AIX uses strange locations for the executables | |
| 74 | + JAVACMD="$JAVA_HOME/jre/sh/java" | |
| 75 | + else | |
| 76 | + JAVACMD="$JAVA_HOME/bin/java" | |
| 77 | + fi | |
| 78 | + if [ ! -x "$JAVACMD" ] ; then | |
| 79 | + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | |
| 80 | + | |
| 81 | +Please set the JAVA_HOME variable in your environment to match the | |
| 82 | +location of your Java installation." | |
| 83 | + fi | |
| 84 | +else | |
| 85 | + JAVACMD="java" | |
| 86 | + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |
| 87 | + | |
| 88 | +Please set the JAVA_HOME variable in your environment to match the | |
| 89 | +location of your Java installation." | |
| 90 | +fi | |
| 91 | + | |
| 92 | +# Increase the maximum file descriptors if we can. | |
| 93 | +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then | |
| 94 | + MAX_FD_LIMIT=`ulimit -H -n` | |
| 95 | + if [ $? -eq 0 ] ; then | |
| 96 | + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | |
| 97 | + MAX_FD="$MAX_FD_LIMIT" | |
| 98 | + fi | |
| 99 | + ulimit -n $MAX_FD | |
| 100 | + if [ $? -ne 0 ] ; then | |
| 101 | + warn "Could not set maximum file descriptor limit: $MAX_FD" | |
| 102 | + fi | |
| 103 | + else | |
| 104 | + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | |
| 105 | + fi | |
| 106 | +fi | |
| 107 | + | |
| 108 | +# For Darwin, add options to specify how the application appears in the dock | |
| 109 | +if $darwin; then | |
| 110 | + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | |
| 111 | +fi | |
| 112 | + | |
| 113 | +# For Cygwin, switch paths to Windows format before running java | |
| 114 | +if $cygwin ; then | |
| 115 | + APP_HOME=`cygpath --path --mixed "$APP_HOME"` | |
| 116 | + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | |
| 117 | + | |
| 118 | + # We build the pattern for arguments to be converted via cygpath | |
| 119 | + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | |
| 120 | + SEP="" | |
| 121 | + for dir in $ROOTDIRSRAW ; do | |
| 122 | + ROOTDIRS="$ROOTDIRS$SEP$dir" | |
| 123 | + SEP="|" | |
| 124 | + done | |
| 125 | + OURCYGPATTERN="(^($ROOTDIRS))" | |
| 126 | + # Add a user-defined pattern to the cygpath arguments | |
| 127 | + if [ "$GRADLE_CYGPATTERN" != "" ] ; then | |
| 128 | + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | |
| 129 | + fi | |
| 130 | + # Now convert the arguments - kludge to limit ourselves to /bin/sh | |
| 131 | + i=0 | |
| 132 | + for arg in "$@" ; do | |
| 133 | + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | |
| 134 | + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | |
| 135 | + | |
| 136 | + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | |
| 137 | + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | |
| 138 | + else | |
| 139 | + eval `echo args$i`="\"$arg\"" | |
| 140 | + fi | |
| 141 | + i=$((i+1)) | |
| 142 | + done | |
| 143 | + case $i in | |
| 144 | + (0) set -- ;; | |
| 145 | + (1) set -- "$args0" ;; | |
| 146 | + (2) set -- "$args0" "$args1" ;; | |
| 147 | + (3) set -- "$args0" "$args1" "$args2" ;; | |
| 148 | + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | |
| 149 | + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | |
| 150 | + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | |
| 151 | + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | |
| 152 | + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | |
| 153 | + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | |
| 154 | + esac | |
| 155 | +fi | |
| 156 | + | |
| 157 | +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules | |
| 158 | +function splitJvmOpts() { | |
| 159 | + JVM_OPTS=("$@") | |
| 160 | +} | |
| 161 | +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS | |
| 162 | +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" | |
| 163 | + | |
| 164 | +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" | ... | ... |
android/gradlew.bat
0 → 100644
| 1 | +++ a/android/gradlew.bat | |
| 1 | +@if "%DEBUG%" == "" @echo off | |
| 2 | +@rem ########################################################################## | |
| 3 | +@rem | |
| 4 | +@rem Gradle startup script for Windows | |
| 5 | +@rem | |
| 6 | +@rem ########################################################################## | |
| 7 | + | |
| 8 | +@rem Set local scope for the variables with windows NT shell | |
| 9 | +if "%OS%"=="Windows_NT" setlocal | |
| 10 | + | |
| 11 | +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |
| 12 | +set DEFAULT_JVM_OPTS= | |
| 13 | + | |
| 14 | +set DIRNAME=%~dp0 | |
| 15 | +if "%DIRNAME%" == "" set DIRNAME=. | |
| 16 | +set APP_BASE_NAME=%~n0 | |
| 17 | +set APP_HOME=%DIRNAME% | |
| 18 | + | |
| 19 | +@rem Find java.exe | |
| 20 | +if defined JAVA_HOME goto findJavaFromJavaHome | |
| 21 | + | |
| 22 | +set JAVA_EXE=java.exe | |
| 23 | +%JAVA_EXE% -version >NUL 2>&1 | |
| 24 | +if "%ERRORLEVEL%" == "0" goto init | |
| 25 | + | |
| 26 | +echo. | |
| 27 | +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |
| 28 | +echo. | |
| 29 | +echo Please set the JAVA_HOME variable in your environment to match the | |
| 30 | +echo location of your Java installation. | |
| 31 | + | |
| 32 | +goto fail | |
| 33 | + | |
| 34 | +:findJavaFromJavaHome | |
| 35 | +set JAVA_HOME=%JAVA_HOME:"=% | |
| 36 | +set JAVA_EXE=%JAVA_HOME%/bin/java.exe | |
| 37 | + | |
| 38 | +if exist "%JAVA_EXE%" goto init | |
| 39 | + | |
| 40 | +echo. | |
| 41 | +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | |
| 42 | +echo. | |
| 43 | +echo Please set the JAVA_HOME variable in your environment to match the | |
| 44 | +echo location of your Java installation. | |
| 45 | + | |
| 46 | +goto fail | |
| 47 | + | |
| 48 | +:init | |
| 49 | +@rem Get command-line arguments, handling Windowz variants | |
| 50 | + | |
| 51 | +if not "%OS%" == "Windows_NT" goto win9xME_args | |
| 52 | +if "%@eval[2+2]" == "4" goto 4NT_args | |
| 53 | + | |
| 54 | +:win9xME_args | |
| 55 | +@rem Slurp the command line arguments. | |
| 56 | +set CMD_LINE_ARGS= | |
| 57 | +set _SKIP=2 | |
| 58 | + | |
| 59 | +:win9xME_args_slurp | |
| 60 | +if "x%~1" == "x" goto execute | |
| 61 | + | |
| 62 | +set CMD_LINE_ARGS=%* | |
| 63 | +goto execute | |
| 64 | + | |
| 65 | +:4NT_args | |
| 66 | +@rem Get arguments from the 4NT Shell from JP Software | |
| 67 | +set CMD_LINE_ARGS=%$ | |
| 68 | + | |
| 69 | +:execute | |
| 70 | +@rem Setup the command line | |
| 71 | + | |
| 72 | +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | |
| 73 | + | |
| 74 | +@rem Execute Gradle | |
| 75 | +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | |
| 76 | + | |
| 77 | +:end | |
| 78 | +@rem End local scope for the variables with windows NT shell | |
| 79 | +if "%ERRORLEVEL%"=="0" goto mainEnd | |
| 80 | + | |
| 81 | +:fail | |
| 82 | +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | |
| 83 | +rem the _cmd.exe /c_ return code! | |
| 84 | +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | |
| 85 | +exit /b 1 | |
| 86 | + | |
| 87 | +:mainEnd | |
| 88 | +if "%OS%"=="Windows_NT" endlocal | |
| 89 | + | |
| 90 | +:omega | ... | ... |
android/res/drawable-hdpi/icon.png
0 → 100644
16.8 KB
android/res/drawable-hdpi/splash.png
0 → 100644
16.8 KB
android/res/drawable-ldpi/icon.png
0 → 100644
16.8 KB
android/res/drawable-ldpi/splash.png
0 → 100644
16.8 KB
android/res/drawable-mdpi/icon.png
0 → 100644
16.8 KB
android/res/drawable-mdpi/splash.png
0 → 100644
16.8 KB
android/res/values/libs.xml
0 → 100644
| 1 | +++ a/android/res/values/libs.xml | |
| 1 | +<?xml version='1.0' encoding='utf-8'?> | |
| 2 | +<resources> | |
| 3 | + <array name="qt_sources"> | |
| 4 | + <item>https://download.qt-project.org/ministro/android/qt5/qt-5.4</item> | |
| 5 | + </array> | |
| 6 | + | |
| 7 | + <!-- The following is handled automatically by the deployment tool. It should | |
| 8 | + not be edited manually. --> | |
| 9 | + | |
| 10 | + <array name="bundled_libs"> | |
| 11 | + <!-- %%INSERT_EXTRA_LIBS%% --> | |
| 12 | + </array> | |
| 13 | + | |
| 14 | + <array name="qt_libs"> | |
| 15 | + <!-- %%INSERT_QT_LIBS%% --> | |
| 16 | + </array> | |
| 17 | + | |
| 18 | + <array name="bundled_in_lib"> | |
| 19 | + <!-- %%INSERT_BUNDLED_IN_LIB%% --> | |
| 20 | + </array> | |
| 21 | + <array name="bundled_in_assets"> | |
| 22 | + <!-- %%INSERT_BUNDLED_IN_ASSETS%% --> | |
| 23 | + </array> | |
| 24 | + | |
| 25 | +</resources> | ... | ... |
camerasurface.cpp
0 → 100644
| 1 | +++ a/camerasurface.cpp | |
| 1 | +#include "camerasurface.h" | |
| 2 | + | |
| 3 | +QList<QVideoFrame::PixelFormat> CameraSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const | |
| 4 | +{ | |
| 5 | + return QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_RGB32; | |
| 6 | +} | |
| 7 | + | |
| 8 | +bool CameraSurface::present(const QVideoFrame &frame) | |
| 9 | +{ | |
| 10 | + if (frame.isValid()) { | |
| 11 | + QVideoFrame cloneFrame(frame); | |
| 12 | + cloneFrame.map(QAbstractVideoBuffer::ReadOnly); | |
| 13 | + | |
| 14 | + QByteArray ba; | |
| 15 | + ba.append( (char*)cloneFrame.bits(), cloneFrame.bytesPerLine() * cloneFrame.height() ); | |
| 16 | + | |
| 17 | + emit novoFrame( ba, cloneFrame.width(), cloneFrame.height() ); | |
| 18 | + | |
| 19 | + cloneFrame.unmap(); | |
| 20 | + return true; | |
| 21 | + } | |
| 22 | + return false; | |
| 23 | +} | ... | ... |
camerasurface.h
0 → 100644
| 1 | +++ a/camerasurface.h | |
| 1 | +#ifndef CAMERASURFACE_H | |
| 2 | +#define CAMERASURFACE_H | |
| 3 | + | |
| 4 | +#include <QAbstractVideoSurface> | |
| 5 | + | |
| 6 | +class CameraSurface : public QAbstractVideoSurface | |
| 7 | +{ | |
| 8 | + Q_OBJECT | |
| 9 | + public: | |
| 10 | + explicit CameraSurface(QObject *parent = 0) : QAbstractVideoSurface(parent){} | |
| 11 | + //~CameraSurface(); | |
| 12 | + QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const; | |
| 13 | + bool present(const QVideoFrame &frame); | |
| 14 | + | |
| 15 | + signals: | |
| 16 | + void novoFrame(QByteArray &buf, int w, int h); | |
| 17 | +}; | |
| 18 | + | |
| 19 | +#endif // CAMERASURFACE_H | ... | ... |
camerawindow.cpp
0 → 100644
| 1 | +++ a/camerawindow.cpp | |
| 1 | +#include "camerawindow.h" | |
| 2 | +#include "ui_camerawindow.h" | |
| 3 | + | |
| 4 | +CameraWindow::CameraWindow(QWidget *parent) : | |
| 5 | + QMainWindow(parent), | |
| 6 | + ui(new Ui::CameraWindow), | |
| 7 | + hasResolution(false) | |
| 8 | +{ | |
| 9 | + ui->setupUi(this); | |
| 10 | + | |
| 11 | + cameraSurface = new CameraSurface(); | |
| 12 | + camera = new QCamera(); | |
| 13 | + capture = new QCameraImageCapture( camera ); | |
| 14 | + camera->setViewfinder(cameraSurface); | |
| 15 | + camera->setCaptureMode(QCamera::CaptureStillImage); | |
| 16 | + camera->start(); | |
| 17 | + | |
| 18 | + zxing = new QZXing( QZXing::DecoderFormat_QR_CODE, this ); | |
| 19 | + //connect(zxing, SIGNAL(tagFound(QString)), this, SLOT(show_result(QString))); | |
| 20 | + | |
| 21 | + connect(cameraSurface, SIGNAL(novoFrame(QByteArray&,int,int)), this, SLOT(frameHandler(QByteArray&,int,int))); | |
| 22 | +} | |
| 23 | + | |
| 24 | +CameraWindow::~CameraWindow() | |
| 25 | +{ | |
| 26 | + delete ui; | |
| 27 | + delete cameraSurface; | |
| 28 | + delete camera; | |
| 29 | + delete capture; | |
| 30 | + delete viewfinder; | |
| 31 | + delete zxing; | |
| 32 | + delete img; | |
| 33 | + delete buffer; | |
| 34 | +} | |
| 35 | + | |
| 36 | +void CameraWindow::frameHandler(QByteArray &buff, int w, int h) | |
| 37 | +{ | |
| 38 | + if (!hasResolution) { | |
| 39 | + img = new QImage( w, h, QImage::Format_RGB32 ); | |
| 40 | + hasResolution = true; | |
| 41 | + } | |
| 42 | + | |
| 43 | + u_int32_t* data = (u_int32_t*)buff.data(); | |
| 44 | + for(int y = 0; y < h; ++y) { | |
| 45 | + QRgb* scan = (QRgb*)img->scanLine(y); | |
| 46 | + | |
| 47 | + for(int x = 0; x < w; ++x) { | |
| 48 | + scan[x] = data[y * w + x]; | |
| 49 | + } | |
| 50 | + } | |
| 51 | + | |
| 52 | + zxing->decodeImage( *img, w, h, true ); | |
| 53 | + | |
| 54 | + QImage imgTmp = img->scaled(w*.30, h*.30); | |
| 55 | + //ui->label->setPixmap(QPixmap::fromImage(imgTmp)); | |
| 56 | + buff.clear(); | |
| 57 | +} | ... | ... |
camerawindow.h
0 → 100644
| 1 | +++ a/camerawindow.h | |
| 1 | +#ifndef CAMERAWINDOW_H | |
| 2 | +#define CAMERAWINDOW_H | |
| 3 | + | |
| 4 | +#include <QMainWindow> | |
| 5 | +#include <QCamera> | |
| 6 | +#include <QCameraImageCapture> | |
| 7 | +#include <QCameraViewfinder> | |
| 8 | +#include <QZXing.h> | |
| 9 | +#include "camerasurface.h" | |
| 10 | + | |
| 11 | +namespace Ui { | |
| 12 | +class CameraWindow; | |
| 13 | +} | |
| 14 | + | |
| 15 | +class CameraWindow : public QMainWindow | |
| 16 | +{ | |
| 17 | + Q_OBJECT | |
| 18 | + private: | |
| 19 | + Ui::CameraWindow *ui; | |
| 20 | + QCamera * camera; | |
| 21 | + QCameraImageCapture * capture; | |
| 22 | + QCameraViewfinder *viewfinder; | |
| 23 | + CameraSurface *cameraSurface; | |
| 24 | + QZXing *zxing; | |
| 25 | + QImage *img; | |
| 26 | + u_int8_t * buffer; | |
| 27 | + bool hasResolution; | |
| 28 | + | |
| 29 | + public: | |
| 30 | + explicit CameraWindow(QWidget *parent = 0); | |
| 31 | + ~CameraWindow(); | |
| 32 | + | |
| 33 | + public slots: | |
| 34 | + void frameHandler(QByteArray&,int,int); | |
| 35 | +}; | |
| 36 | + | |
| 37 | +#endif // CAMERAWINDOW_H | ... | ... |
camerawindow.ui
0 → 100644
| 1 | +++ a/camerawindow.ui | |
| 1 | +<ui version="4.0"> | |
| 2 | + <author/> | |
| 3 | + <comment/> | |
| 4 | + <exportmacro/> | |
| 5 | + <class>CameraWindow</class> | |
| 6 | + <widget class="QMainWindow" name="CameraWindow"> | |
| 7 | + <property name="geometry"> | |
| 8 | + <rect> | |
| 9 | + <x>0</x> | |
| 10 | + <y>0</y> | |
| 11 | + <width>800</width> | |
| 12 | + <height>600</height> | |
| 13 | + </rect> | |
| 14 | + </property> | |
| 15 | + <property name="windowTitle"> | |
| 16 | + <string>MainWindow</string> | |
| 17 | + </property> | |
| 18 | + <widget class="QMenuBar" name="menubar"/> | |
| 19 | + <widget class="QWidget" name="centralwidget"/> | |
| 20 | + <widget class="QStatusBar" name="statusbar"/> | |
| 21 | + </widget> | |
| 22 | + <pixmapfunction/> | |
| 23 | + <connections/> | |
| 24 | +</ui> | ... | ... |
funifier.pro
0 → 100644
| 1 | +++ a/funifier.pro | |
| 1 | +#------------------------------------------------- | |
| 2 | +# | |
| 3 | +# Project created by QtCreator 2015-06-23T12:39:33 | |
| 4 | +# | |
| 5 | +#------------------------------------------------- | |
| 6 | + | |
| 7 | +QT += core gui multimedia multimediawidgets | |
| 8 | + | |
| 9 | +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets | |
| 10 | + | |
| 11 | +TARGET = funifier | |
| 12 | +TEMPLATE = app | |
| 13 | + | |
| 14 | +include(../QZXing/QZXing.pri) | |
| 15 | + | |
| 16 | +SOURCES += main.cpp\ | |
| 17 | + mainwindow.cpp \ | |
| 18 | + camerasurface.cpp \ | |
| 19 | + camerawindow.cpp | |
| 20 | + | |
| 21 | +HEADERS += mainwindow.h \ | |
| 22 | + camerasurface.h \ | |
| 23 | + camerawindow.h | |
| 24 | + | |
| 25 | +FORMS += mainwindow.ui \ | |
| 26 | + camerawindow.ui | |
| 27 | + | |
| 28 | +CONFIG += mobility | |
| 29 | +MOBILITY = | |
| 30 | + | |
| 31 | +DISTFILES += \ | |
| 32 | + android/AndroidManifest.xml \ | |
| 33 | + android/gradle/wrapper/gradle-wrapper.jar \ | |
| 34 | + android/gradlew \ | |
| 35 | + android/res/values/libs.xml \ | |
| 36 | + android/build.gradle \ | |
| 37 | + android/gradle/wrapper/gradle-wrapper.properties \ | |
| 38 | + android/gradlew.bat | |
| 39 | + | |
| 40 | +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android | |
| 41 | + | ... | ... |
images/funifier-logo.png
0 → 100644
16.8 KB
images/theme/develop/pencil.png
0 → 100644
8.68 KB
images/theme/develop/plus.png
0 → 100644
54.7 KB
images/Índice.jpeg
0 → 100644
5.64 KB
main.cpp
0 → 100644
mainwindow.cpp
0 → 100644
| 1 | +++ a/mainwindow.cpp | |
| 1 | +#include "mainwindow.h" | |
| 2 | +#include "ui_mainwindow.h" | |
| 3 | + | |
| 4 | +MainWindow::MainWindow(QWidget *parent) : | |
| 5 | + QMainWindow(parent), | |
| 6 | + ui(new Ui::MainWindow) | |
| 7 | +{ | |
| 8 | + ui->setupUi(this); | |
| 9 | + | |
| 10 | + connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(addGame())); | |
| 11 | +} | |
| 12 | + | |
| 13 | +MainWindow::~MainWindow() | |
| 14 | +{ | |
| 15 | + delete ui; | |
| 16 | + delete cameraWindow; | |
| 17 | +} | |
| 18 | + | |
| 19 | +void MainWindow::addGame() | |
| 20 | +{ | |
| 21 | + CameraWindow * cameraWindow = new CameraWindow(); | |
| 22 | + cameraWindow->show(); | |
| 23 | + //hide(); | |
| 24 | +} | ... | ... |
mainwindow.h
0 → 100644
| 1 | +++ a/mainwindow.h | |
| 1 | +#ifndef MAINWINDOW_H | |
| 2 | +#define MAINWINDOW_H | |
| 3 | + | |
| 4 | +#include <QMainWindow> | |
| 5 | +#include "camerawindow.h" | |
| 6 | + | |
| 7 | +namespace Ui { | |
| 8 | + class MainWindow; | |
| 9 | +} | |
| 10 | + | |
| 11 | +class MainWindow : public QMainWindow | |
| 12 | +{ | |
| 13 | + Q_OBJECT | |
| 14 | + private: | |
| 15 | + Ui::MainWindow *ui; | |
| 16 | + CameraWindow *cameraWindow; | |
| 17 | + public: | |
| 18 | + explicit MainWindow(QWidget *parent = 0); | |
| 19 | + ~MainWindow(); | |
| 20 | + public slots: | |
| 21 | + void addGame(); | |
| 22 | +}; | |
| 23 | + | |
| 24 | +#endif // MAINWINDOW_H | ... | ... |
mainwindow.ui
0 → 100644
| 1 | +++ a/mainwindow.ui | |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<ui version="4.0"> | |
| 3 | + <class>MainWindow</class> | |
| 4 | + <widget class="QMainWindow" name="MainWindow"> | |
| 5 | + <property name="geometry"> | |
| 6 | + <rect> | |
| 7 | + <x>0</x> | |
| 8 | + <y>0</y> | |
| 9 | + <width>313</width> | |
| 10 | + <height>365</height> | |
| 11 | + </rect> | |
| 12 | + </property> | |
| 13 | + <property name="windowTitle"> | |
| 14 | + <string>Funifier</string> | |
| 15 | + </property> | |
| 16 | + <widget class="QWidget" name="centralWidget"> | |
| 17 | + <layout class="QGridLayout" name="gridLayout_2"> | |
| 18 | + <item row="0" column="0"> | |
| 19 | + <layout class="QGridLayout" name="gridLayout"> | |
| 20 | + <item row="0" column="1"> | |
| 21 | + <spacer name="verticalSpacer"> | |
| 22 | + <property name="orientation"> | |
| 23 | + <enum>Qt::Vertical</enum> | |
| 24 | + </property> | |
| 25 | + <property name="sizeHint" stdset="0"> | |
| 26 | + <size> | |
| 27 | + <width>20</width> | |
| 28 | + <height>40</height> | |
| 29 | + </size> | |
| 30 | + </property> | |
| 31 | + </spacer> | |
| 32 | + </item> | |
| 33 | + <item row="2" column="2"> | |
| 34 | + <widget class="QPushButton" name="pushButton"> | |
| 35 | + <property name="text"> | |
| 36 | + <string>Add</string> | |
| 37 | + </property> | |
| 38 | + </widget> | |
| 39 | + </item> | |
| 40 | + <item row="2" column="1"> | |
| 41 | + <spacer name="horizontalSpacer"> | |
| 42 | + <property name="orientation"> | |
| 43 | + <enum>Qt::Horizontal</enum> | |
| 44 | + </property> | |
| 45 | + <property name="sizeHint" stdset="0"> | |
| 46 | + <size> | |
| 47 | + <width>40</width> | |
| 48 | + <height>20</height> | |
| 49 | + </size> | |
| 50 | + </property> | |
| 51 | + </spacer> | |
| 52 | + </item> | |
| 53 | + </layout> | |
| 54 | + </item> | |
| 55 | + </layout> | |
| 56 | + </widget> | |
| 57 | + </widget> | |
| 58 | + <layoutdefault spacing="6" margin="11"/> | |
| 59 | + <resources/> | |
| 60 | + <connections/> | |
| 61 | +</ui> | ... | ... |