每日口语是我在android平台上开发的第一款算得上是产品的产品,陆陆续续做了两个月,今天终于制作完成,已经上传到了各大国内第三方市场(新版的可能要审核两三天)。
点我去下载
到应用市场,搜每日口语,图标有白云蓝天绿草的那个就是我的了。
虽说是第一款应用,但还是花了很大的心思,从素材的整理,到编程,到设计,每一步都花了很多的心思,最后的产品应该算是基本满意吧。
下面是一个开发的日记,算是一个纪念。
今天在eclipse新建了每日口语的项目。
国庆期间一定完成。
已经完成的工作:
icon设计,界面设计
剩余工作:
DB设计,语句整理
title栏,按钮栏,记事本
10.4
Db设计完成,基本布局完成,自定义title完成
数据库调试还是很麻烦。
还差:圆角图片,数据库调用,刷新按钮,记事本,语音识别
晚上
调试好数据库,语句和单词都能正常显示
继续要做的是:音频关联,语音识别,记事本,界面美化。
嘴巴好的已经差不多,但不能吃远的东西,如:包子,梨。
10.5
上午
修正了一下数据库,找了一下图片,且已经关联好。
嘴巴裂开了,艹
晚上
关联好了音频
识别校正:
1.ok;2.willing heart 无法识别; 3.ok,数据库有错误,漏掉了time4.ok;5ok6,ok;7,缩写 Iam 8ok 9无法识别 10.ok
10.10
今日完成:
1.图片显示;2.文字大小调整;3.描边效果;4记事本添加手势。
待完成:按钮安排,按钮美化
周末搞定第一个版本。
10.17
整理好初级口语15句,图片修改好。
创建了新的数据库。
单词插入t_words;
insert into t_words values('care for','关心')
insert into t_words values('can't','不能 ; 不得不 ; 禁不住 ; 不克不及');
insert into t_words values('win-win','双赢');
insert into t_words values('underestimate','vt. 低估;看轻');
修改
update t_words set chinese='关心,喜欢' where english='care for'
资源文件must contain only [a-z0-9_.]
完成choose页面的动画和逻辑。
晚上把主界面的按钮还有title修改一下 就 可以搞定了
晚上完成 主界面美化(还存在一些像素级的bug),无崩溃bug
对笔记本进行了修改。
选择页面和主界面都添加了menu,可以进入笔记本或是退出。
还需要修改的。
1)完全摒弃menu键2)notebook 添加listView的longclick事件3)初始化notebook的时候可能会崩溃
10.28
存在的bug:
1)主界面退出错误 2)notebook可以重复添加
10.31
1)修改了一下notebook界面
2)修改notebook重复删除及初始化bug
3)修改退出按键
4)兼容480*320设备
5)兼容480*800设备
6)修改滑动切换句子方向
7)修改notebook删除方式
8)完善google voice下载
需要继续完善的地方(从豌豆荚网站)
1)初次启动帮助;2)滑动删除记录;3)完善资源;4)添加反馈(音效,计分)
11.2
1)添加音效
2)主界面左右滑动
3)修改读音正确,提示颜色bug
4)添加“下一句“滑动动画,上一句还没添加
还需要做的:
1)初次启动帮助;2)完善资源;3)添加分享至人人。4)添加友盟统计
11.4
修改choose页的图片。
修改数据库的步骤
1)整理好素材(图片+音频)
2)编写xml
3)运行sentencedb创建数据库
4)用adb整合dictionary
5)更新项目数据库,图片,音频
6)调试前要删除sdcard中每日口语中的旧版本数据库
dictionanry中须添加单词:
rabbit
导入了所有资源,初级口语类资源调试完成,
商务和生活待导入数据库。
1)初次启动帮助;2)3)添加分享至人人。4)添加友盟统计
5)ppt,视频
基本整合完所有资料,扩充t_words
友盟key:50969fea5270157f2100012b
整合资源成功
每日口语是一款致力于英语口语学习的App。
它包含了初级口语、名言佳句、、和商务口语三个板块。无论你是英语刚起步的初学者、还是在职场打拼的白领人士,都可以在这里找到适合自己的实用句子。
软件自带记事本,遇到喜欢的句子可以随时记录。每一句都有纯正美式英语发音,还有相应的情景图片让你记忆更加深刻。
语音矫正功能更是能够让你真正的说出一口流利的英语,从今天起,甩掉你的Chinglish!
1)修改选择界面的图标2)初次运行提示,删除旧数据库3)友盟统计
已在下面的市场中提交应用:
1)豌豆荚 3)应用汇 4)机锋市场
身份待验证:
1)按卓市场2)小米
410324198112080050
机峰:emptyShen
做得非常用心~支持一下
混淆还是有一些问题,
umeng的sdk和文档太烂,艹
数据统计美版发实现了
今天完成umeng的sns功能的集成,能够分享到人人,新浪微波,腾讯微波。
还需在titlebar添加一个分享按钮。
修改了splash界面,显示版本号v1.1。
然后发布到googleplay
还有更新各个渠道
11.20下午
应用汇ok androidMarket:ok 小米:ok gfan:ok 安智:ok
googlePlay未发布成功。
完善文档之后此项目完结。
2012.11.20 晚
String str = "1234567"; if(str.indexOf("23") != -1) { System.out.println("包含该字符串"); }
生产者消费者是数学中的一个经典的问题,也是编程中的一个经典问题。
本示例采用信号量来解决这个问题,其实,最终也就是进程之间同步的问题。
生产者源代码如下:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ipc.h> #include <sys/stat.h> #include <sys/sem.h> int sem_id; void init() { key_t key; int ret; unsigned short sem_array[2]; //0代表生产者,1代表消费者 union semun { int val; struct semid_ds *buf; unsigned short *array; }arg; key=ftok(".",'s'); sem_id=semget(key,2,0777|IPC_CREAT); sem_array[0]=0; sem_array[1]=100; arg.array=sem_array; ret=semctl(sem_id,0,SETALL,arg); if(ret==-1) { perror("semctl"); exit(1); } printf("productor init is %d\n",semctl(sem_id,0,GETVAL)); printf("consumer init is %d\n",semctl(sem_id,1,GETVAL)); } void del() { semctl(sem_id,IPC_RMID,0); } int main() { struct sembuf sops[2]; int retv; sops[0].sem_num = 0; sops[0].sem_op = 1; sops[0].sem_flg = 0; sops[1].sem_num = 1; sops[1].sem_op = -1; sops[1].sem_flg = 0; init(); printf("this is productor\n"); while(1) { printf("\n\nbefore produce\n"); printf("productor number is %d\n",semctl(sem_id,0,GETVAL)); printf("space number is %d\n",semctl(sem_id,1,GETVAL)); retv=semop(sem_id,&sops[1],1); //if(retv==-1) printf("no work semo on sops[0] retv%d\n",retv); printf("now producting....\n"); retv=semop(sem_id,&sops[0],1); //if(retv==-1) printf("no work semo on sops[0] retv=%d\n",retv); printf("\nafter produce\n"); printf("productor number is %d\n",semctl(sem_id,0,GETVAL)); printf("space number is %d\n",semctl(sem_id,1,GETVAL)); sleep(1); } del(); return 0; }
消费者源代码如下:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ipc.h> #include <sys/stat.h> #include <sys/sem.h> int sem_id; void init() { key_t key; key=ftok(".",'s'); sem_id=semget(key,2,0777|IPC_CREAT); } int main() { struct sembuf sops[2]; sops[0].sem_num = 0; sops[0].sem_op = -1; sops[0].sem_flg = 0; sops[1].sem_num = 1; sops[1].sem_op = 1; sops[1].sem_flg = 0; init(); printf("this is customer\n"); while(1) { printf("\n\nbefore consumer\n"); printf("productor number is %d\n",semctl(sem_id,0,GETVAL)); printf("space number is %d\n",semctl(sem_id,1,GETVAL)); semop(sem_id,&sops[0],1); printf("now consuming....\n"); semop(sem_id,&sops[1],1); printf("\nafter consume\n"); printf("productor number is %d\n",semctl(sem_id,0,GETVAL)); printf("space number is %d\n",semctl(sem_id,1,GETVAL)); sleep(3); } return 0; }