和字网首页(Home) | 论坛首页(Forum)
Welcome Guest! To enable all features please 登录 or 注册.

Notification

Icon
Error

Guilin Ouyang
#1 发表时间 : 2013年6月2日 6:56:58(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年06月01日

今天开始着手做Android安卓系统上HeBook1《和码中文》第一册软件。

在苹果iOS上,这款软件已于2011年8月发布。AppStore上的HeBook1《和码中文》第一册软件

希望能在两个月内完成。

Edited by user 2013年6月2日 6:59:01(UTC)  | Reason: Not specified

Guilin Ouyang
#2 发表时间 : 2013年6月18日 22:42:35(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年06月18日

《和码中文》教程软件,课程目录与内容,应该采用Master-Detail的结构,iOS与Android都有,要用好这一结构,得学习相关的资料,做些练习。

http://developer.android...omponents/fragments.html

http://developer.android.../fragments/creating.html

Edited by user 2013年6月18日 23:07:18(UTC)  | Reason: Not specified

Guilin Ouyang
#3 发表时间 : 2013年9月22日 22:48:59(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013-09-23

从2003年09月23日开始做和码到今天,10年整。

采用Android 新的UI设计技术Navigation Drawer重做HeBook1.

参考资料:
Android Navigation Drawer
Creating Navigation Drawer



HeBook1 Navigation Drawer

Edited by user 2013年12月3日 0:15:11(UTC)  | Reason: Not specified

Guilin Ouyang
#4 发表时间 : 2013年9月30日 5:33:14(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年09月30日

在Lesson_Detail页,单字用GridView显示,词组因为有不同的长度,应采用Flowlayout,参考以下网页:

1、Flowlayout Sample
2、Flowlayout with adapter

CiZu FloyLayout

接下来是把声音与图片加入到软件中。

《和码中文》第一册HeBook1有一千多个字形图片,7百多个语言文件,这些都在做苹果软件时完成了。文件都采用中文字命名,如:

字形图片:412533和-1.png
单字字音:请.mp3
词组语音:谢谢.mp3

但安卓系统的asset的文件只能用ASCII给文件命名,不允许用Unicode,或中文字命名。所以这些文件都要重新命名,还要让软件能找到所要的文件。

字形图片:412533-He2-1.png
单字字音:522332-qin3.mp3
词组语音:25322532-xie4xie4.mp3

更新数据库与Sqlite文件,在词组条目中加上一个PinYinString Field,以方便程序找到词组对应的语音文件。

星期六在做个程序自动给数据库表:HeChinese_CiZu加个PinYinString Column时,遇到了一个很难找到的错误:

Sql statement: select number, RTrim(LTrim(CiZu)) ,zishu, m1,m2,m3,m4, PinYinString from HeChinese_CiZu where selected = 1;

在Sql Server Management Studio中可以运行,但在

SqlConnection cnn = new SqlConnection("Server=(Local)\\SqlExpress; Trusted_Connection=true; database=<name>");
SqlCommand cmdSelect = cnn.CreateCommand();
cmdSelect.CommandText = "select number, RTrim(LTrim(CiZu)) ,zishu, m1,m2,m3,m4, PinYinString from HeChinese_CiZu where selected = 1";
就有问题,将句中RTrim(LTrim(CiZu)),改为CiZu,就行。

这浪费了我好几个小时,记在这里,以便以后不出这样的错。

还要做个程序自动修改语音与图片的文件名。

Edited by user 2013年9月30日 6:01:34(UTC)  | Reason: Not specified

Guilin Ouyang
#5 发表时间 : 2013年10月2日 7:25:05(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月02日

给中文名的图片与声音文件重新命名的辅助程序已完成。

处理的图片文件:1088个
处理的声音文件:612个

HeBook1.sqlite3重新做了,因为HeChinese_CiZu表加了Columns: m1,m2,m3,m4,PinYinString.

Sqlite3数据库,有个Bug:
如果这个数据库的第一个记录的第一个字是中文,那么这个第一个记录就读不出来。

这是我之前就发现的问题,这次又是这样,也许要把这个问题向Sqlite报告。

Guilin Ouyang
#6 发表时间 : 2013年10月8日 23:52:44(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月08日

课文主页的图片与语音功能基本完成。

做了一个ViewPager的页面,用于特别内容的显示。

ViewPager Sample

Lesson Detail
Guilin Ouyang
#7 发表时间 : 2013年10月19日 14:48:25(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月19日

Navigation Drawer 和 ViewPage 是安卓系统软件最新的两个UI界面要素,现在很多的软件都采用了。

《和码中文》教程也很适合采用这两个UI界面要素,现在基本做到了。

接下来是做具体的页面。

以下是书写练习的页面,采用了HeCharacter《汉字字形知识与技术》软件中的WritingView, 还参考的以下网帖:
Gesture issue with ViewPager Fragment

Writing Practice
[/size]

Edited by user 2013年10月20日 20:23:57(UTC)  | Reason: Not specified

Guilin Ouyang
#8 发表时间 : 2013年10月20日 20:25:05(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月20日

基本完成了字词输入练习模块,采用文章对照练习的方式。

1、采用已安装的和码输入法;
2、Created a Custom EditText view, 设置成Untouchable;
3、截住输入进来的字词,进行对比与操作;
4、CustomEditText class有个CallBack Function, 能让主页更换编码的图片,播放声音,显示编码。

参考了以下帖子:
1、InputConnection Class
2、InputConnection Wrapper
3、Create Custom EditText View and InputConnectionWrapper


Typing Practice

Edited by user 2013年10月22日 2:15:43(UTC)  | Reason: Not specified

Guilin Ouyang
#9 发表时间 : 2013年10月22日 2:18:04(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月21日

更多二字词组,多字词组,认读练习。

more phrases Practice
Guilin Ouyang
#10 发表时间 : 2013年10月27日 1:21:09(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月26日

完成测试模式:有听写与翻译练习

Testing
[/size]

Edited by user 2013年10月27日 1:22:19(UTC)  | Reason: Not specified

Guilin Ouyang
#11 发表时间 : 2013年10月27日 23:28:01(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年10月27日

完成查找模块:查找单字或词组,在25课中那些课中出现过。显示编码与英语解释,点击可听读音。

Search

Edited by user 2013年11月4日 2:59:34(UTC)  | Reason: Not specified

Guilin Ouyang
#12 发表时间 : 2013年11月4日 3:01:00(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年11月03日

1、词组在Page上显示,不采用FlowLayout(Code太复杂),而用pragmatically add TextView to LinearLayout;
2、添加了录音与播放功能,学习者可以试听自己的发声;
3、添加了计时功能,记录每课,用户一共花了多长时间;
4、解决了连续播放的问题;
5、修改课程Study页面。

Lesson Study

Edited by user 2013年11月4日 3:09:49(UTC)  | Reason: Not specified

Guilin Ouyang
#13 发表时间 : 2013年11月6日 8:19:40(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年11月05日

加入HeBookUserData数据库,LessonRecord Table,以记录用户使用软件的时间,以及测试结果。

学习资料:

Android: Saving Data in SQL Database

Android SQLite Database Tutorial

Android SQLite Database with Multiple Tables
Guilin Ouyang
#14 发表时间 : 2013年11月10日 15:06:51(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年11月10日

又开小差了,我工作的合同要到期了,又开始找工作了,找工作有挑战又有机遇,是个提高自己的艰难的过程。

有个大公司选我去面试,但之前要求完成一个小的Project,Project有几点要求,做做也很有意思:

1、Marster-Detial Structure,但不能用Storyboard,只能从empty project template做起;
2、要求从http://placehold.it/下载图片,要求用Asynchronous方法;
3、要支持iOS 5.0 以上的iPhone/iPad,要支持Rotation;
4、要使图片占满除Status Bar, navigation Bar之外的空间;并正确显示ImageView的宽度与高度。

我昨天基本做好这个Project,今天又在模拟器上测试了不同iOS版本的不同的设备。

主要参考资料:

1、Asynchronous NSURLRequest:
1)、Asynchronous loading image
2)、Asynchronous NSURLRequest

2. Master-Detail project without storyboard
1)、Master-Detail without storyboard
2)、Sample Project

3、Get screen width and height with orientation

self.view.frame 更好,不同的orientation,width and heigh会相应改变。

对于iOS7,self.view.frame,包括了Status Bar, 和 NavigationBar, 而之前的iOS版本都没有包括。

一个我不理解的问题:

[self.urlImageView startLoading:[NSString stringWithFormat:@"http://placehold.it/%dx%d&text=%@(%dx%d)",
screenWidth,screenHeight,dayName,screenWidth,screenHeight]];

这句不能运行,但如在这句之前加: CGRect screenRect = self.view.frame; 就可以了。不知道是什么原因。

Edited by user 2013年11月10日 15:21:02(UTC)  | Reason: Not specified

Guilin Ouyang
#15 发表时间 : 2013年11月18日 1:11:58(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年11月17日

在Google Play上加HeBook(《和码中文》第一册)Project,添加3个In App Products:
hebook1.lesson_6to10,
hebook1.lesson_11to15,
hebook1.lesson_16to25

在Project中加人In App Purchase的功能。

Created HeBook1 keyStore.

主要参考资料:

Selling In-app Products

TrivialDrive Sample Project for In-App Purchase



2013年12月02日,当我要发布这个软件时,(用eclipse, project Export...),使用之前生成的keyStore HeBook1,我发现第二个密码记不到了啊,试了很多次都不对,浪费了两三个小时,很烦燥。

如果再生成一个新的Google Android application KeyStore, 但不能使用前次在Google Play上加的HeBook1 Application,只能重新Create application.

更烦闷的是,前次在Googel Play上建的HeBook1 application,uploaded的APK的Package name使用了net.HeZi.Android.HeBook1,也不能再在第二个Application中使用了,这就意谓着,我要更改我Android HeBook1 project的Package Name,这让我很恼火。

幸运的事,我试了一下删除在Google Play上的之前生成的HeBook1 application, 再做了一个新的HeBook1,当上upload HeBook1.apk(net.HeZi.Android.HeBook1)时,通过了。这才心里舒坦些。能通过的原因是,原来的HeBook1 application还是Draft status,没有发布。结果说明,只要软件没有发布,那么删除后,其package name还是可以再用的。

这次教训是,Create android application KeyStore时,一定要写下password, 与KeyStore 文件一起保存好。一旦这个KeyStore File or Password 丢失,现有的Google Play上的Application 就不能再更新了,同时PackageName 不能再使用了。

Edited by user 2013年12月16日 1:18:43(UTC)  | Reason: Not specified

Guilin Ouyang
#16 发表时间 : 2013年11月23日 23:37:51(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年11月23日

每篇课文有6个页面做学习与练习,Study, Writing, Typing, more Phrases, Testing, search.

为避免重复的Code, 页面的Class分为三层:

1、Lesson_Base_Fragment;
2、Lesson_StudyBase_Fragment;
3、Lesson_StudyMain_Fragment, Lesson_Writing_Fragment, 等;

软件开始是学习Navigation Drawer 例子做的,每点击一个Drawer item, 都生成一个新的Fragment, 代替旧的Fragment, 放在主页上。
之后我又把ViewPager放入到主页的Fragment中,ViewPager的Adapter包含了上面说的6个课文学习与练习的页面。

后来认识到可以直接把ViewPager做主页的内容,这样就少了一层Fragment的包裹。这样每次点击Drawer item时,就生成一个新的ViewPager's adapter,这个adapter含6个页面。

6个课文学习练习的页面,都共用课文内容,因此就做了个LessonContentSingleton为6个页面(Fragment)共用。Singleton中保留了一个与Database的只读Connection, 也保留了danZiCursor, ciZuCursor,因为软件运行过程中,要读取数据库的数据,保持这个Connection,也许软件会快些。一般来说Database Connection用完后,要立即Close,第三方的SQLite Wraper都是这样做的。

有了,LessonContentSingleton后,每次点击Drawer item时(选不同的课),就可以更新Singleton的内容。是否可以不每次都生成一个新的ViewPager's adapter, 而只要更新其内的6个页面,就行呢?但这个方案不成,软件会Crash。

最后是,每次点击Drawer item时(选课),更新Singleton的内容,并且生成一个新的ViewPager's adapter给主页的ViewPager。

Quote:

LessonContentSingleton lcs = LessonContentSingleton.getInstance();

lcs.setupContext(this);
lcs.populateContent(bookNum, lessonNum);

studyMain_Fragment = Lesson_StudyMain_Fragment.create();
studyWriting_Fragment = Lesson_StudyWriting_Fragment.create();
typing_Fragment = Lesson_Typing_Fragment.create();
studyMorePhrase_Fragment = Lesson_StudyMorePhrase_Fragment.create();
testing_Fragment = Lesson_Testing_Fragment.create();
bookSearch_Fragment = Book_Search_Fragment.create();

fragmentList.add(studyMain_Fragment);
fragmentList.add(studyWriting_Fragment);
fragmentList.add(typing_Fragment);
fragmentList.add(studyMorePhrase_Fragment);
fragmentList.add(testing_Fragment);
fragmentList.add(bookSearch_Fragment);

.........
每次点击Drawer item(选课)时:

lcs.populateContent(bookNum, lessonNum);
LessonViewPagerAdapter mPagerAdapter = new LessonViewPagerAdapter(getFragmentManager());
mViewPager.setAdapter(mPagerAdapter);
......

private class LessonViewPagerAdapter extends FragmentStatePagerAdapter {
public LessonViewPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}

@Override
public int getCount() {
return 6;//fragmentList.size();
}
}

新的Adapter,并没有生成新的(6个)Fragment, 只是使用保存在fragmentList中的Fragments, 软件能很好地运行。



由于Typing, and Testing Fragment中使用的EditText Control, 更新现有的EditText中的文字有些困难。因此在更换课程时,Typing_Fragment, Testing_Fragment要生成新的Instance, 而不能只靠更新原来的Instance的内容。
因此以下Statement,在程序中做了修改。

public Fragment getItem(int position) {
return fragmentList.get(position);
}

Edited by user 2013年12月16日 1:27:40(UTC)  | Reason: Not specified

Guilin Ouyang
#17 发表时间 : 2013年11月30日 21:26:48(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年11月30日

上一个星期,为软件添加了,每课的说明,系列软件的链接。

又添加了一个模块:“学习报告单”,报告单记录学生从开始时间,到报告时间,学习了次数,写字练习笔画数,听音次数,输入单字个数,测试成绩,等。

报告单,可以用于学生交课后作业,也可以用于学员检测学习情况,做记录,留存,也可把图片传送到社交网上去。

软件进入了最后的测试与发布阶段。

Study report

Report Card

Edited by user 2013年12月3日 0:13:43(UTC)  | Reason: Not specified

Guilin Ouyang
#18 发表时间 : 2013年12月2日 23:20:51(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2013年12月02日

《和码中文》第一册,安卓系统软件,刚刚在Google Play上发布了,地址是:
Google Play HeBook1 download page

在和字网上的下载地址是:

http://hezi.net/forum/?g=posts&t=67


这是《和码汉字字形技术》在安卓系统上的第三个软件。

自6月1日开始,至今天共有6个月2天。其间换了工作单位,又有一些事情,用于这个软件的时间大概是3个月的业余时间。在后面的一个半月的时间里,每晚都有4~5个小时,用在这个软件上。

软件用到Navigation drawer, ViewPager, Fragment, EditText等内容。在4英寸,5英寸,7英寸,10英寸上的设备与模拟器上进行了测试。

接下来我要离开安卓系统上的编程,做微软系统上的编程了。

自古以来,有很多汉字教学入门教程,如:三字经,百家姓,增广贤文,也有新编写的常用三百字,等等。

《和码中文》第一册,分25课,每个10至12个字,大致依常用的顺序编排成一些朗朗上口的名字,如:

第1课:一二三四五,我你他她们
第2课:上中下前后,早午晚今明
第3课:请问谁来帮,谢您有爱心
...
第9课:东西南北家国,左思右想象回
第10课:春夏秋冬花鸟,也是喜欢再见
第11课:男女姓名叫,日月星晨期
第12课:认假丑真美,懂好坏对错
...
第16课:吃喝茶面饭,味香酸辣甜
第17课:猪牛鱼肉蛋,蔬菜水果瓜
...
第19课:口耳眼鼻脸笑,手脚肚皮身忙
第20课:累困感冒病痛,休息药店医院
第21课:钱银做买卖,书本和衣鞋
第22课:量大小多少,算个件斤元
...

《和码中文》软件,提供这个常用字词的,听说读写,输入,测试,记录等功能,给汉字学习者带来方便。

Book Menu

Study

Typing Practice

Testing

Search

report

Report card

Edited by user 2013年12月3日 1:11:24(UTC)  | Reason: Not specified

Guilin Ouyang
#19 发表时间 : 2014年5月19日 20:02:52(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2014-05-10

安卓系统《和码中文》第一册软件更新至和码字形技术5.0版。界面也有些更新。

可以用上帖的链接在Google Play或本网站下载。

Guilin Ouyang
#20 发表时间 : 2015年10月12日 20:02:46(UTC)
Guilin Ouyang

等级: Administration

组: Administrators
注册时间: 2012/2/4(UTC)
帖子数量: 233

2015年10月12日

更新花了5个整天的时间全面更新了安卓系统《和码中文》第一册软件:

1、用Android Studio 1.4, 重建Project;
2、更新内容至和码5.1版;
3、增加字词编码练习页;
4、提高了软件的结构与软件质量。

又一次把安卓系统熟悉起来。

软件可以从以下网页下载:

点击下载:《汉字字形知识与技术》软件

Google Play 上《和码中文》第一册软件

Edited by user 2015年10月12日 21:20:17(UTC)  | Reason: Not specified

论坛跳转  
不可以 发表新话题.
不可以 回复话题.
不可以 删除自己的发言.
不可以 编辑自己的发言.
可以 发表投票.
不可以 投票.