设计开发

关于短信SMS的class

最近在研究GSM通信模块相关的AT指令时,发现短信部分经常提到个短信的class,不知为何,搜了一下,特此记录:

What are the classes of SM-MT (mobile terminated) messages?

Classes identify the message’s importance as well as the location where it should be stored. There are 4 message classes.
Class 0: Indicates that this message is to be displayed on the MS immediately and a message delivery report is to be sent back to the SC. The message does not have to be saved in the MS or on the SIM card (unless selected to do so by the mobile user).
Class 1: Indicates that this message is to be stored in the MS memory or the SIM card (depending on memory availability).
Class 2: This message class is Phase 2 specific and carries SIM card data. The SIM card data must be successfully transferred prior to sending acknowledgement to the SC. An error message will be sent to the SC if this transmission is not possible.
Class 3: Indicates that this message will be forwarded from the receiving entity to an external device. The delivery acknowledgement will be sent to the SC regardless of whether or not the message was forwarded to the external device.

Eclipse配合ADT为Android项目添加Proguard混淆的简单新方法

之前我曾经写过一篇如何为用ADT创建的Android项目添加Proguard混淆支持的文章(
为Eclipse ADT创建的android项目通过ant添加proguard混淆支持
),当时我就说过,相信随着Google Android的不断更新发展以及Eclipse ADT插件的不断改进,总有一天,做Android项目时能够和J2ME项目一样方便的一键打包混淆。现在新版的SDK和ADT就已经添加了这样的功能(SDK Tools中已经整合了Proguard的发行包,连这步配置都省了!),虽然还不是一键,但也就是小改一个配置文件的事,相对以前的手改ant xml build file的做法来说已经是极大的简化了添加混淆支持的难度了。

先说说我写这篇文章时用的开发环境:Eclipse 3.5.2+ADT 9.0.0+SDK Tools R9+SDK Platform-tools R2。

声明我不保证在其他版本的IDE ADT和SDK Tools下我的方法是否可行且不会产生问题!

Continue reading…

The source file is different from when the module was built.

*******************************

Source file: D:\Projects\StereoMatch\stereomatcher.cpp

Module: D:\Projects\StereoMatch\Debug\StereoMatch.exe

Process: [4024] StereoMatch.exe

The source file is different from when the module was built. Would you like the debugger to use it anyway?

*******************************

***********************************

At StereoMatcher.cpp, line 166 (‘ComputeCorrespondence()’, line 128)

The breakpoint will not currently be hit. The source code is different from the original version.

Continue reading…

关于stl vector调用erase后的Vector iterators incompatible!

出错代码如下(VS2010),使用vector迭代器遍历并对满足条件的元素进行删除,

	vector::iterator it=m_vecDataUnits.begin();
	for (;it!=m_vecDataUnits.end();)
	{
		if (it->m_bSelected)
		{
			m_vecDataUnits.erase(it);
		}
		else
			it++;
	}

正确方法如下,删除vector元素后的it应该使用erase返回的值

	vector::iterator it=m_vecDataUnits.begin();
	for (;it!=m_vecDataUnits.end();)
	{
		if (it->m_bSelected)
		{
			it = m_vecDataUnits.erase(it);
		}
		else
			it++;
	}

[ZT]WIPI为何

原文:http://blog.csdn.net/flowingflying/archive/2010/08/12/5807527.aspx

下午有个厂家介绍Wipi,开始还以为是wifi或者wapi之类的,但是这是韩国人推动的一个移动平台,在wiki上如下介绍,但是具体沟通后,发现wiki的说法也有错漏。Wifi is C based not java based.而这个是wipi的特性,但我问他们与流行的平台相比有什么特别时,这是一个重要的说辞。

Continue reading…

Android中用MediaPlayer播放ogg的loop问题

经测试(2.1真机)发现使用MediaPlayer播放ogg音乐文件时的貌似无效,翻了一下google论坛发现是个undocumented问题,实际影响loop的是ogg中的一个metadata:ANDROID_LOOP,当这个被设为true的时候,无论怎么设置player的loop都不会有不loop的结果,记录一下。

Visual Studio下的C++程序断点windows api调试的方法

就当是个记录吧,收藏夹多了也不好找。
以前抄过一个利用dbghelp api来进行release版调试跟踪的工具类,就是当release版exe在客户机上异常后记录堆栈,局部变量,寄存器值等的东西。突然发现一个小问题需要断点调试检查,但发现这个在挂着调试器的时候就不起作用了,google发现这篇文章:
http://www.debuginfo.com/articles/debugfilters.html
大概意思看明白了,结果文中提到的下windows api断点的部分不知道怎么做,继续google发现MSDN上有大致说明:
http://msdn.microsoft.com/en-us/library/d16ayc6z.aspx
手动添加断点的location要这样:{,,USER32.DLL}_MessageBeep@4,用起来还是比较麻烦的,因为还要涉及到api的dll中导出decorated name,不过至少是能用了,知足常乐。
PS:注意这个提到的是32bit系统下,而且调试时需要导入这些加在的系统dll的调试符号,好在发现VS2010有个Load symbols from microsoft symbol servers,虽然下载慢了点不过还是挺方便的。

支持C++标准库的Android NDK CrystaX!

最近在研究Box2D物理引擎在Android上的应用时,发现直接用NDK移植C++版本时遇到了一些STL库的问题,类似b2BroadPhase.h中的:
// Sort the pair buffer to expose duplicates.
std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);
这里,其它地方通过直接替换标准c函数还好解决,这种需要STL库的用法就不好办了。在Box2D的论坛上发现有人提到有个叫CrystaX的第三方版本的NDK,整合了C++标准库,可以直接在不修改任何源码的情况下编译Box2D!
下载地址:http://www.crystax.net/android/ndk.php