Categories
提笔就老

2011.1.2 随记

昨天的事。

柏成到深圳一个月了,昨天我才有时间去坂田走走。先去逛一下华为单身公寓,美曰其名“百草园”,外号“里欧外非”——里面很漂亮,欧洲式的建筑风格,而百草园外面的情景,就像是非洲一样,天壤之别。在里面打了一个小时的桌球,然后看他的闺室,在马蹄山后面的禾坪村,住10楼,没有电梯。进去后,家徒四壁,只有一张床,一个热水壶,没有其他家具。跟我刚在新屋村住下来一样,床还是房东阿婆给我的。刚到深圳找工作时,在国贸见了漂飘学姐,她说:”在深圳,不需要太多的东西,一张床就够了。累了就睡,睡后继续上班工作“。

中午突然收到谢星的短信,说到我住的地方碰头,开始是说晚上,只好放他鸽子了。德哥1号晚通宵,到下午了才醒来,跟我们去打一个小时的斯诺克,他有事,晚饭就我跟柏成去吃烤鱼。聊了很多事,感叹社会的黑暗,做技术的艰辛,生活的无奈,也在探讨未来之路。最近去华为的还有沈晓奇,李伟,他们那天都没空。华平去年十月份也跑到华为了,怎么大学同学都一窝尔的跑进去,有如当年奔向延安的进步青年一样。吃完饭又继续在路边打两个小时的桌球,很便宜,一小时4块钱,很适合像我这样打球靠狗屎运的新手练习。一下子玩到10点,334晚上最后一趟车是10点,还好可以坐317到梅林关。快到梅林关,有一个站是滢水山庄,很熟悉,突然想起findya师兄,好人啊,曾经到他住过的书香门第蹭住两个星期。07年末那里附近还是很荒凉,现在都是一排排整齐的楼了。到梅林关才发现没公车回来, 打的走南坪快线直接就到桃源村了,原来可以这么快!

Categories
tools

Bluehost安装svn

环境:

Bluehost: 64位主机,可以通过 uname -a 命令查询,含有 x86_64 的就是64位系统了。
svn: 目前最新稳定版本1.6.15。

Bluehost用户目录下有个.local 目录,显然是为用户装自己的软件而提供的,那么以后我们要装的软件,都应该放在 $HOME/.local 目录下(来源:http://helpdesk.bluehost.com/index.php/kb/article/000530)。

整个过程如下:

mkdir ~/src
cd ~/src

wget http://subversion.tigris.org/downloads/subversion-1.6.15.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.gz

tar xvf subversion-deps-1.6.15.tar.gz
cd subversion-1.6.15
cd apr
./configure -prefix=$HOME/.local
make; make install

cd ..
cd apr-util/
./configure -prefix=$HOME/.local --with-apr=$HOME./local
make; make install

cd ..
cd neon/
./configure -enable-shared -prefix=$HOME/.local
make; make install
cd ..
rm subversion-1.6.15 -rf


tar xvf subversion-1.6.15.tar.gz 
cd subversion-1.6.15
wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
tar xvf sqlite-amalgamation-3.6.13.tar.gz 
mkdir sqlite-amalgamation
cp sqlite-3.6.13/sqlite3.c sqlite-amalgamation

./configure --prefix=$HOME/.local --without-berkeley-db --with-zlib=/usr/ --with-ssl LDFLAGS="-L/lib64"
make; make install 

后面报错:

cp .libs/mod_dav_svn.soT /usr/lib64/httpd/modules/mod_dav_svn.so
cp: cannot create regular file `/usr/lib64/httpd/modules/mod_dav_svn.so’: Read-only file system

没关系,我只是用来做svn client就行了。

最后,
vi ~/.bashrc
export PATH=$HOME/.local/bin:$PATH

Categories
Android CDMA

Android SMS 写入UIM卡

Smart Phone跟Featrue Phone不一样,短信不会放在ICC卡上,毕竟卡的存储空间是有限的。最近一网友很纠结,老在问我如何把短信写到UIM卡上?有没有办法写个通用的程序?这个主要决定于手机厂家没有实现相应的接口函数。

Android 提供把短信写入ICC卡的接口为:

frameworks/base/telephony/java/android/telephony/SmsManager.java copyMessageToIcc

如果是CDMA的话,调用过程如下:
frameworks/base/telephony/java/com/android/internal/telephony/cdma/RuimSmsInterfaceManager.java 里的函数 copyMessageToIccEf 调用

frameworks/base/telephony/java/com/android/internal/telephony/RIL.java 里的 writeSmsToRuim ,这个要发出

一个 RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 请求号,RILD接收请求,传给 libril,再给 reference-ril,这样,只要在 reference-ril 里的
onRequest (int request, void *data, size_t datalen, RIL_Token t) 处理这个 RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 请求号即可,根据不同的模组,填入相应的AT处理函数。

像XT800,i909双网手机,在长按单条短信时,都弹出复制SMS至UIM卡选项。通过反编译Mms.apk包,可以看出他们都自己实现自己的接口,而没有实现Android默认的Api。xt800提供了一个content://sms/icc provider,大致是这样实现的:

String sSc = null;
Uri uSim = null;
ContentValues values = new ContentValues();
values.put("type", Integer.valueOf(mBody.mBoxId));
values.put("address", mBody.mAddress);
values.put("body", mBody);
values.put("data", Long.valueOf(mBody.mDateTime));
values.put("service_center", sSc);

if (MessageUtils.getDefaultMode().equals("CDMA")) {
    Log.("ComposeMessageActivity", "start copy msg to UIM");
    sSc = mContentResolver.insert(Uri.parse("content://sms/icc", values));
} else if (MessageUtils.getSecondaryMode().equals("CDMA")) {
    sSc = mContentResolver.insert(Uri.parse("content://sms/icc2", values));
}

Log.("ComposeMessageActivity", "finish copy msg to UIM");

i909的,自己实现
private void copyMessageToUIM(MessageItem msgItem), 调用SmsManager.MakeSubmitPDU, 也是自己的实现的。

Categories
他山之石

程序员的气场

文章来源: 中华剑(小贱贱)的QQ空间

昨天和市领导还有软件公司一个老总去省委政法委开会,是省政法委关于综治信访维稳中心信息管理系统的征求意见会。到省委大院停车场下车时,看见前面有三个人也往1号楼方向走,其中两人身子有点瘦小,各背着个背包,走路时还有点弯着腰。于是老总说,估计这几个人也是去开会的,应该是搞软件的。待到我们到达会议室时,发现的确那三人就在会议室里,原来就是负责开发管理信息系统的软件公司的技术人员。后来跟老总交谈说他真猜对了,他说这就是程序员的气场 🙁 。于是让我想起《我是业主》里的李大辉。 😀

Categories
Android CDMA

Android CDMA 手机开发要点

Android从1.6版本开始支持CDMA,cdma-import分支由Teleca CDMA团队开发,最后合并到主干。浏览 http://android.git.kernel.org, 在heads可以查看cdma-import的代码变化,从ril层到上层的应用程序。

RIL

多了下面的请求号:

RIL_REQUEST_CDMA_SET_SUBSCRIPTION
RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE
RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE
RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE
RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE
RIL_REQUEST_CDMA_FLASH
RIL_REQUEST_CDMA_BURST_DTMF
RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY
RIL_REQUEST_CDMA_SEND_SMS
RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG
RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG
RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION
RIL_REQUEST_CDMA_SUBSCRIPTION
RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM
RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM

自动上报:

RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL
RIL_UNSOL_CDMA_CALL_WAITING
RIL_UNSOL_CDMA_OTA_PROVISION_STATUS
RIL_UNSOL_CDMA_INFO_REC
RIL_UNSOL_RESPONSE_CDMA_NEW_SMS

主要工作在 hardware/ril/reference-cdma-sms 实现cdma 短信的编解码,模组特殊AT处理。

Telephony Framework

在 telephony framework层,该启动 CDMAPhone 还是 GSMPhone ?

frameworks/base/telephony/java/com/android/internal/telephony/PhoneFactory.java 里的makeDefaultPhone函数:

//Get preferredNetworkMode from Settings.System
int networkMode = Settings.Secure.getInt(context.getContentResolver(),
        Settings.Secure.PREFERRED_NETWORK_MODE, preferredNetworkMode);

如果要设置成EvDo网络,则需要在init.rc配置文件里添加:
setprop ro.telephony.default_network 6
RILConstants.java有对应的值。

如果设置错了,怎么办?在类PhoneProxy中处理消息 EVENT_RADIO_TECHNOLOGY_CHANGE,进行纠正,选择是使用GSM还是CDMA,给PhoneApp发送一个Intent通知radio technology变化。

APP
应用不需要做太大的修改,其中设置应用添加与中国电信CDMA特性相关的,比如接入点名称:
中国电信互联星空设置 ctwap
中国电信互联网设置 ctnet

这些在国外手机是不需要分什么wap、net的,但中国电信CDMA的天翼视讯、天翼阅读仅支持ctwap接入。

Pages: Prev 1 2 3 ... 9 10 11 12 13 14 15 ... 20 21 22 Next