Java, JavaScript

Android平台中BitmapFactory.decodeResource对GL程序材质的影响

在Android平台下实现OpenGL ES程序的贴图加载操作一般是通过BitmapFactory.decodeResource这个api,然后用系统封装好的GLUtils.texImage2D函数直接转换为gl贴图即可,方便快捷。但在较新版的Android系统中res中的图片文件夹根据dpi设备分辨率的不同,细分了很多文件夹处理以支持不同设备的分辨率加载对应的图片,如drawable-hdpi,drawable-ldpi,drawable-mdpi等,如果没有注意这个问题而将贴图图片随意安置的话,在decode的时候系统会默认根据设备dpi的不同对目标图片格式解码的同时进行大小调整,也就是说有可能破坏原本已经是2^n大小的贴图图片,导致原本在模拟器上正确的绘图在真机上变成大白板!
解决这个问题的方法可以将图片放到不受dpi影响的drawable-nodpi中,或者设置BitmapFactory的选项,不处理dpi相关问题。

关于nokia的s60模拟器的perference程序无法识别jre1.6的解决方法

当系统装了jre1.6版本的时候,运行s60模拟器(不管是MIDP还是Symbian C++的都会出问题),然后选perference,会弹出找不到jre1.4.1或later,而在details里面显示的确实已经找到的1.6,解决这个问题需要修改epoc32\tools\ecmt\config\config.properties文件,在里面对应版本号后面加上1.6就可以了。

参考这里

S60 2nd FP2 for MIDP SC版的mma好像有问题

只要用了mma的api模拟器就会报jes-0-java-mma@的错误,开始时一直以为自己的操作或设置有问题,后来发现nokia forum上有人问到了类似的问题,但是没有人回答,于是才意识到有可能是模拟器本身的问题,结果去nokia上下了个s60 2.1 SC版,发现程序跑起来就没问题了。(PS:epoc的MIDP模拟器实在是太爽了,中文字体大小位置都和真机一模一样,可惜就是速度慢的像蜗牛)

SE J2ME模拟器的rms问题

不知怎么搞的,最近SE模拟器的S700不能存rms了,看了一下运行时的console,总是显示Running with storage root temp.SonyEricsson_S700_EmuXXXXXX,XXXX是一些随机的数字,应该是这个原因导致的每次运行时都找不到上次存过的rms,现在找到的解决办法就是把模拟器WTK2\appdb目录下对应某个设备的目录删掉,这样就能解决了,但是曾经存对过的rms也就都没了,不知道还有没有更好的办法。

nS60_jme_sdk_3rd_e_FP1与EclipseME配合不能调试midlet的问题

运行时,提示类似这样的错误:Jar file could not be initialized
And, an exception: java.util.zip.ZipException: invalid entry compressed size (expected 552 but got 555 bytes)…

解决办法(来自forum nokia):

Go to the properties page of your project, “J2ME”, “Manage Devices”, edit all or your favourite “Emulator” entries and remove the ‘[%classpath%|-classpath “%classpath%”]’ entry from the Launch Command Table.

关于SWT画半透明时用gc的setAlpha

由于gc的setAlpha会自动打开Advanced模式,相当于调用了setAdvanced(true),而这项操作意味着需要调用native的gdiplus.dll的函数,所以发布的时候如果客户端没有这个dll,就会在setAlpha的时候出异常。