2011

[译]Android音频:一些问题,隐藏的限制和OpenSL ES

原文出处:http://mindtherobot.com/blog/555/android-audio-problems-hidden-limitations-and-opensl-es/

我最近一直在研究Android音频API。之前我写过一篇介绍性的文章来说明Android上可用的三套API。现在我假设你在看这篇文章的时候已经对AudioTrack,SoundPool和MediaPlayer有过基本的了解了。

这篇文章介绍了一些我使用Android现有音频API的一些经验,包括一些问题和我遇到过的困难。后面还有一小部分OpenSL ES的内容,OpenSL ES是一种将会在Android后续发布版本中得到支持的音频标准(译注:2.3已经发布了此项支持)。

继续阅读…

[译]iOS Developer Library Technical Q&A QA1544 Obtaining the localized application name in Cocoa

比较实用,翻译一下,留作日后参考,E文原文:http://developer.apple.com/library/mac/#qa/qa1544/_index.html

获取Cocoa应用程序的本地化名称

Q:如何取得我的Cocoa应用程序的本地化名称?

A:应用程序名称有一些不同的版本,但都可以以NSString的形式获得。根据你的具体需要,可以用以下五种方法:

警告:请注意用户可以用Finder修改应用程序包。如果你想取得的是可能被用户修改过的应用程序名称,那就用第5种方法介绍的NSFileManager实现。

应用程序的别名(short name)由CFBundleName定义,常用在菜单或关于对话框中。

1:从main bundle中获取应用程序的简名(short name)。

NSString *appName =          [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:(NSString *)kCFBundleNameKey];

应用程序的“显示名称”一般都比较长,用在Finder中显示bundle名字。

继续阅读…

Xcode4中code sign identity选项值不出下拉选择框的解决方法

问题出现时的系统、软件版本:

Mac OS X 10.6.8 (10K549)

Xcode Version 4.0.2 Build 4A2002a

出问题时的现象:

 

 

如上两图所示:选签证的选项不显示下拉选择框反而是个普通的文本编辑框,上面的SDK架构什么的也是一样,发现这个问题其实是由于一个provision profile过期,要更换一下而已…
继续阅读…

Xcode4.1 iOS4 SDK项目升级到Xcode4.2 iOS5 SDK后模拟器运行直接异常问题

一个在Xcode4.1+iOS4 SDK环境下能够正常编译、运行、模拟器、真机调试运行的项目,在升级到Xcode4.2+iOS5 SDK后不能在模拟器上运行,启动程序后直接抛异常(好像是个EXC_BAD_ACCESS之类的内存访问违规,但在真机调试时并没有问题,且真机也是iOS5系统!),而此时的中断位置甚至尚未到达入口main,类似下图的stack trace:

继续阅读…

终于完成了残念已久的贴片47耳放,留个纪念…

2604贴片47耳放

2604贴片47耳放

只是想学习一下贴片焊接,但又想弄点有用的东西出来,于是淘宝了一套贴片2604版的47。

第一次焊贴片,掌握的很不好,样子看着很糟糕,但总算是都正确的装上了。

残念的所在是这个耳放的电源部分,看别人说用2个9v电池做双电源供电就可以,也许是别人指的情况并不能完美适用这个opamp,反正我是试了半天就没正常工作过,也有可能是电池本身的问题。后来因为比较忙就搁置了,这两天不知为何又想起这事来了,这次索性直接淘宝买了个成品+-15V供电板,一通拆装过后,47终于正常工作了。顺带一提,工作时两个运放的温度都非常高,摸着烫手,不知是否正常,有点担心寿命问题。

怎么说呢,咱这套设备也不是多高端,最终的感觉就是接上耳放的话,不仔细听也听不出什么太大的区别。- -!

原本以为能用电池搞定电源的话再做个壳就能便携用了,结果电池计划失败,也就先这样裸奔玩吧,也挺好,呵呵。

Copy .strings file Error Validation failed: The data couldn’t be read because it has been corrupted.

XCode中iOS项目字符串资源InfoPlist.strings添加多语言支持后,修改中文资源中字符串常量为汉字后编译出现标题中的错误,解决方法为修改各语言资源中的文本格式,使其结构一致,如出错时的中英文资源是这样的:

{

CFBundleDisplayName = “\U71af\U72a2+”;

}

{

CFBundleDisplayName = Game+;

}

修改英文资源为这样即可解决:

{

CFBundleDisplayName = “Game+”;

}

wait_fences: failed to receive reply: 10004003和UIAlertView之间的小故事

试验iOS上的GLES 2.0和GLSL的时候,想完美点加个初始化时的2.0支持判断,修改了一下XCode4默认生成的框架,在awakeFromNib时直接判断并用UIAlertView提示,然后delegate中退出程序。结果一运行console提示标题里那段话,应该是个警告,但看着别扭,完全删掉UIAlertView提示代码就没有问题。

看了一下网上这个提示问的不少,出现情况和解决方法也是五花八门,提供一下我这个的解决方法吧,供网友们参考。

这个问题时由于UIAlertView在弹出时主View还没有加载并显示导致的,可能和动画效果有关,没去验证,总之,改变一下判断逻辑,把弹框提示部分的触发代码挪到viewWillAppear里就没问题了!

iOS系统swprintf格式化带中文字符参数串的EILSEQ问题

之前在Android NDK下纠结过wchar的问题,发现在官方文档里写着2.3以上系统支持部分wchar相关函数,如wcslen等,不支持swprintf,mbstowcs等,很是遗憾,只能自己找了相关函数的源码作了替代实现。现在居然发现在iOS上用swprintf效果也是不尽人意。

省略若干google baidu以及排查调试的过程,直接讲结果,就是在用swprintf的时候任何参数串内容带有中文字符(应该是所有非ansi那些),就会导致返回错误-1,查看errno错误号是EILSEQ,原因就是wchar串里有无法解析的编码字符,这个问题的解决方法是:

继续阅读…

Android真机执行ndk-gdb后出现”found running pid:0 could not extract pid of application…”的解决方法

先说出这问题时的周遭环境:

Android SDK Tools r12
Android SDK Platform-tools r6
Android NDK r6
HTC G10 DesireHD(root)
Eclipse 3.7 Indigo
ADT 12.0.0
Windows XP SP3

问题描述:按着Sequoyah Native Debug的教程走,到执行ndk-gdb起服务的时候,提示”found running pid:0 could not extract pid of application…”说找不到程序的PID(顺带一提,之前还有一次是提示could not extract package’s data directory…,经查发现原因应该是设备没有root),执行adb shell ps发现要调试程序的进程就在那里,PID也看到正常,为什么ndk-gdb说获取不到PID呢?

继续阅读…