无论是c4droid还是软件c4droid怎么使用,它们都是当前热门话题。如果你对它们感到好奇,那么请跟随小编的脚步,一起来揭开它们的秘密吧!
gcc plugin for c4droid怎么用
c4droid是款Android设备上的C/C++程序编译器,默认以tcc(tiny c compiler)为编译器,可以选择安装gcc插件(20mb,只有root用户可以使用),选用gcc后,可以用sdl(简单直控媒体层库,需安装sdl plugin for c4droid)和qt(nokia官方开发库,需安装sdl plugin for c4droid)。也可以开发native android app(需安装sdl plugin for c4droid),就像google ndk一样。软件支持代码高亮,编译时间随cpu主频而定,主频越高编译越快。gcc插件版本4.7.2提供了示列程序,包含sdl,android native,qt和命令行测试程序源码。最新版为3.98(2013年2月更新)。
先从市场装收费的c4droid,再装这个免费插件,装插件时记得选“Install to internal memory”,否则安装到sd卡中多半运行不了,因为多数系统的sd卡都没有可执行权限。
还有一个要注意的安装问题,就是系统不要设置成程序默认安装到SD卡,否则安装好c4droid再安装gcc插件会遇到程序id不同的问题。
装好启动c4droid,Perference中选择gcc或g++编译器(默认tcc编译器),就可以在对话框里编译c/c++程序了。
更高级的用法是直接进入终端模式运行,gcc for c4droid的数据包在/data/data/com.n0n3m4.droidc/files/gcc目录下,进入之后直接执行里面的脚本或者bin目录下的编译器。如果安装之后没有运行过,需要chmod+x设置可执行权限。
如果不想用图形方式运行,可以直接下载安装免费插件,然后按照上面的方法运行一次完成数据包(gcc套件)解压缩,之后就可以直接用命令行方式开发了。
如何使用OpenSL ES在c4droid中进行声音编程
使用opensl es的前提条件是在源代码中:
#include<SLES/OpenSLES.h>,包含 opensl es的头文件
在gcc中:
-lOpenSLES链接 opensl es的库文件
大休步骤如下:
1.创建声音引擎
2.创建声音播放器
3.设置播放缓冲
opensl es主要操作的是介面(interface),大体来说有如下几个介面:
SLObjectItf:对象介面,
SLEngineItf:引擎介面
SLPlayItf:播放介面
SLBufferQueueItf:缓冲队列介面
SLEffectSendItf:音效发送介面
SLMuteSoloItf:声道关闭/单声道介面
SLVolumeItf:声量介面
除了 slCreateEngine这一条函数是用来创建声音引擎对象介面以外,其它的所有操作都是通过介面的成员函数完成的,现在我们来研究如何初始化声音引擎
初始化声音引擎需要3个介面,我们要将它们声明为全局变量:
SLObjectItf _aud;/*声音引擎的对象介面*/
SLEngineItf _aud_eng;/*声音引擎*/
SLObjectItf _aud_mix;/*混音器对象介面*/
首先我们创建声音引擎的对象介面:
slCreateEngine(&_aud, 0, NULL, 0, NULL, NULL);
创建之后的介面并不能立即使用,我们首先要通过介面的子函数实现(Realize)它:
(*_aud)->Realize(_aud, SL_BOOLEAN_FALSE);/*通过_aud的Realize子函数实现声音引擎的对象介面*/
实现之后,我们从声音引擎的对象中抓取声音引擎,在这里我们通过介面的子函数抓取介面(GetInterface),抓取对像是 _aud,抓取类型是引擎,抓取后存放的内存位置是我们先前声明的引擎介面_aud_eng的指针位置。指令如下:
(*_aud)->GetInterface(_aud, SL_IID_ENGINE,&_aud_eng);
这样声音引擎就初始化了
第三步我们要做的是从声音引擎中创建"输出混音器"对象,这样我们才可以将声音播放出来。
注意,同声音引擎的对象一样,由于"输出混音器"是对象,我们必须创建后在实现(Realize)它。
由于"输出混音器"创建的同时需要两个音效参数,所以我们先准备好这两个参数:第一个参数类型是声音介面编号(SLInterfaceID),是一个数组,我们可以将其看成一个音效配置列表,在其中放置不同的音效编号。第二个参数是一个逻辑数组:是否强制实现声音介面编号中对应音效,如果某个音效的逻辑为真(SL_BOOLEAN_TRUE),则在无法实现该音效时视为"输出混音器"创建失败,否则将忽略该音效。因为安卓的声硬件对音效的支持不同,所以最好不要强制实现,所以我们在第二个数组中全部填写SL_BOOLEAN_FALSE。
现在我们开始创建"输出混音器",环境回响(SL_IID_ENVIRONMENTALREVERB)是比较常见的音效,我们将非强制性的使用该音效。
SLInterfaceID effect[1]={SL_IID_ENVIRONMENTALREVERB};/*环境回响音效*/
SLboolean effect_bool[1]={SL_BOOLEAN_FALSE};/*回响音效强制实现逻辑*/
(*_aud_eng)->CreateOutputMix(_aud_eng,&_aud_mix, 1, effect, effect_bool);/*从声音引擎中创建“输出混音器”*/
(*_aud_mix)->Realize(_aud_mix, SL_BOOLEAN_FALSE);/*实现刚创建的“输出混音器”*/
样一来,所有的初始化工作就全部完成了。我们获得如下完整代码:
SLObjectItf _aud;/*声音引擎对象*/
SLEngineItf _aud_eng;/*声音引擎*/
SLObjectItf _aud_mix;/*输出混音器对象*/
/* audio_init:初始化opensl es*/
int audio_init()
{
SLInterfaceID effect[1]={SL_IID_ENVIRONMENTALREVERB};/*音效*/
SLboolean effect_bool[1]={SL_BOOLEAN_FALSE};/*音效强制实现逻辑*/
slCreateEngine(&_aud, 0, NULL, 0, NULL, NULL);/*创建声音引擎对象*/
(*_aud)->Realize(_aud, SL_BOOLEAN_FALSE);/*实现声音引擎对象*/
(*_aud)->GetInterface(_aud, SL_IID_ENGINE,&_aud_eng);/*从声音引擎对象中抓取声音引擎*/
(*_aud_eng)->CreateOutputMix(_aud_eng,&_aud_mix, 1, effect, effect_bool);/*通过声音引擎创建输出混音器对象,并且非强制性的开启环境混响效果*/
(*_aud_mix)->Realize(_aud_mix, SL_BOOLEAN_FALSE);/*实现混音器对象*/
}
初始化引擎之后,我们还要创建一个播放器对象,就可以在播放器中输出声音了
播放器对象和输出混音器一样,是对象,创建后需要进行实现:
SLObjectItf _aud_plyobj;/*播放器对象*/
(*_aud_eng)->CreateAudioPlayer(_aud_eng,&_aud_plyobj,&sndsrc,&sndsnk, 3, ids, req);
/*这是创建声音播放器对象aud_plyobj的函数*/
前两个参数分别把声音引擎和播放器引擎的指针位置填上就可以了
我们真正需要填写的是后面4个参数:
sndsrc:声音数据源
sndsnk:声音输出池(data sink),也就是声音输出设备
3:功能清单数目,我们要让播放器支持3种功能
ids:功能清单,我们要让播放器支持的功能
req:功能强制实现逻辑
软件c4droid怎么使用
以C4droid自带的例子为例(如果安装的时候没有选择C4droid_example,SD卡里面就没有),文件路径为/sdcard/C4droid_examples/SDL/singlefile/demo.c
返回到代码界面。点击手机的菜单键(menu键,三横那个),然后再点击导出(英文版为Export)。第一行为文件名已经导出的路径
第二行为包名
第三行为应用程序名
第四行为图标。填写好文件名以及路径(不更改的话默认在源代码当前路径生成)
设置包名,包名格式为xxx.xxx.xxx(注:只能包含英文,不能包含中文)
填写应用程序名称,如果为中文名称会出现乱码,先填个名称,帖子再给出更改教程
然后填写图标,也可以空着,则默认使用系统给出的图标。
如果使用自定义图标,首先准备一张png格式的图标,分辨率最好在120*120以下,随便放一个目录(最好内存卡根目录吧),填写图标的绝对路径
什么是绝对路径?
比如有一张a.png的图标放在SD卡根目录,绝对路径就为/sdcard/a.png
绝对路径需要从最上层的目录开始
点击确定(英文版为Ok),就导出成功了用文件管理器找到安装包(没有更改路径的情况下就直接在源码文件找)点击安装就完成了
c4droid的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于软件c4droid怎么使用、c4droid的信息别忘了在本站进行查找哦。