Archive for the ‘Android’ tag
Windows平台下Qt5.1 for Android的安卓开发环境
前段时间Qt5.1正式版发布,支持Android和IOS的开发,强大的可移植性和跨平台特性非常的吸引人,并且使用C++。由于之前做过Qt在嵌入式平台的应用,所以顺便试试新版本的Qt如何,再看看Qt5.1 for Android是否足够优秀呢,环境搭建如下,可能会有疏漏之处。
整个配置过程可以参考官方Wiki。
首先是各种软件的下载,先不管目前对开发有没有用吧,整上再说,包括Perl、Mingw等等。
Perl
MSYS
MinGW
Ant
JDK
NDK
SDK
Qt5.1 for Android
有些版本可能会有更新,根据自己的情况下载需要的版本。我最终下载的文件名如下(文件顺序与上对应):
strawberry-perl-5.16.3.1-32bit.msi
msys+7za+wget+svn+git+mercurial+cvs-rev13.7z
x32-4.8.1-release-win32-dwarf-rev3.7z
apache-ant-1.9.2-bin.zip
jdk-7u25-windows-i586.exe
android-ndk-r9-windows-x86.zip
adt-bundle-windows-x86-20130729.zip
qt-windows-opensource-5.1.0-android-x86-win32-offline.exe
各个文件解压或则安装,现在需要设置一下环境变量。我先说一下我的文件路径如下(路径顺序与上对应):
C:\strawberry
C:\mingw-builds\msys
C:\mingw-builds\mingw32
C:\apache-ant-1.9.2
C:\Program Files\Java\jdk1.7.0_25
C:\android-ndk-r9
C:\adt-bundle-windows-x86-20130729
C:\Qt\Qt5.1.0
现在来设置环境变量,所有操作全部在环境变量中的系统变量里面。
增加变量名JAVA_HOME,变量值C:\Program Files\Java\jdk1.7.0_25
增加变量名CLASSPATH,变量值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar
修改变量名Path,增加变量值C:\strawberry\perl\bin;%JAVA_HOME%\bin;C:\mingw-builds\mingw32\bin;C:\adt-bundle-windows-x86-20130729\sdk\platform-tools;C:\adt-bundle-windows-x86-20130729\sdk\tools;C:\android-ndk-r9;
这样环境变量也就设置完了,测试下是否可用,CMD下分别输入以下命令是否发生错误:
java -version
javac -version
gcc -v
emulator -version
adb -version
mingw32-make -version
然后是Qt的设置如下图:
至于SDK Manager的相关内容在这不多说了,至此你可以开始C++开发Android应用了!
————————
2013.8.15
经过目前测试NDK暂时无法使用r9版本(当然,不排除是我的环境问题),会出现Qt无法自动找到构建工具的情况,虽然可以编译也可以在模拟器上运行,但是无法生成APK。如下图:
主要原因如上图,路径不正确,正确路径应该是”\prebuilt\winodws\bin”。
不论是添加“ANDROID_NDK_HOST=windows”环境变量,还是手动添加构建套件Kit都无法解决问题。前者将如下一张图中ANDROID_NDK_HOST的值变为空值,手动修改无效;后者会导致Qt版本和编译器出错。
使用android-ndk-r8e-windows-x86.zip则正常,暂且不知道原因,但是应该和NDK的环境变量有关,一切参考官方WIKI为准。至于官方文档提到的
Add some environment variables:
set “ANDROID_NDK_PLATFORM=android-9”
set “ANDROID_TARGET_ARCH=armeabi-v7a”
set “ANDROID_BUILD_TOOLS_REVISION=17.0.0”
set “ANDROID_NDK_HOST=windows-x86_64”
or
set “ANDROID_NDK_HOST=windows”
.. depending on which NDK you downloaded.
可以尝试不添加,我使用android-ndk-r8e-windows-x86.zip这个NDK并且设置好NDK路径以后,Qt自动添加变量,但不会在系统环境变量中修改。如下图:
可以生成APK,可以安装运行,如下图:
利用Tasker通话录音
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 配置文件: 开始通话录音 (2) 事件: 电话被挂机 进入: 马上 (3) 配置文件: 结束通话录音 (4) 事件: 电话空闲 进入: 马上 (5) Task: 马上 (3) A1: 录制声音 [ 文件:RECORD/temp.3gp 源:默认 最大尺寸:0 Codec:AMR Narrowband Format:3GPP ] Task: 马上 (5) A1: 停止录制声音 A2: 等待 [ MS:0 秒:5 分:0 小时:0 天:0 ] A3: 复制文件 [ 来自:RECORD/temp.3gp 发往:RECORD/%CONUM_%DATE_%TIME.3gp 使用Root:关 ] A4: 删除文件 [ 文件:RECORD/temp.3gp 粉碎级别:0 使用Root:关 ] |
本来应该是录音的时候文件名就已经是%CONUM_%DATE_%TIME.3gp这个形式了,但是%CONUM这个参数必须
通话结束之后才能获取到,而且还需要Delay一段时间,所以就有了A2这个步骤。A4步骤是为了防止“未接来电”
导致的不必要录音。
2013.2.25更新
由于%CONUM这个参数只是outgoing时的对方号码,没有incoming时的号码,这样就导致录音文件的命名
有些混乱。通过分别录制outgoing与incoming后,再分别重命名录音文件来达到目的,缺点是暂时没能解决不必
要的未接来电录音。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 配置文件: 开始打电话录音 (3) 事件: 电话被挂机 State: Call [ Type:Outgoing 数字:* ] 进入: 马上 (4) 配置文件: 结束通话录音 (5) 事件: 电话空闲 进入: 马上 (6) 退出: 马上 (17) 配置文件: 开始接电话录音 (7) 事件: 电话振铃 [ 来电者:* ] State: Call [ Type:Incoming 数字:* ] 进入: 马上 (20) Task: 马上 (4) A1: 录制声音 [ 文件:RECORD/temp_out.mp4 源:默认 最大尺寸:0 Codec:AMR Narrowband Format:MP4 ] Task: 马上 (6) A1: 停止录制声音 A2: 等待 [ MS:0 秒:10 分:0 小时:0 天:0 ] A3: 复制文件 [ 来自:RECORD/temp_out.mp4 发往:RECORD/%CONUM_%DATE_%TIME_%CODUR_%OUT.mp4 使用Root:关 ] A4: 删除文件 [ 文件:RECORD/temp_out.mp4 粉碎级别:0 使用Root:关 ] Task: 马上 (17) A1: 复制文件 [ 来自:RECORD/temp_in.mp4 发往:RECORD/%CNUM_%DATE_%TIME_%CODUR_%IN.mp4 使用Root:关 ] A2: 删除文件 [ 文件:RECORD/temp_in.mp4 粉碎级别:0 使用Root:关 ] Task: 马上 (20) A1: 录制声音 [ 文件:RECORD/temp_in.mp4 源:默认 最大尺寸:0 Codec:AMR Narrowband Format:MP4 ] |