Android SDK升级至revision 12后的一个Bug及解决方案

今天把SDK从revision 11升级至了最新的revision 12,却发现出现了问题。模拟器无法运行,在运行时提示:

也就是说似乎是由于参数错误导致无法启动模拟器。

在网上还看到了有人出现这样的错误信息:

经过一番折腾之后终于找到了问题所在。应该是路径的问题。路径参数之前还有内容,被忽略了。这应该是本次升级的一个Bug。SDK所在文件夹的名称中如果有空格就会导致问题的发生(我使用的是android SDK这一名称)。于是将文件夹重命名为android-SDK之后,问题解决。

Android编程中Debug certificate expired错误的解决方法

今天晚上突然eclipse中所有的项目都报错,项目文件夹上标记了叉号。提示“Your project contains error(s),please fix them begore running your application”。可是可以肯定的是它们的代码并没有问题。

一查看,发现问题信息是Error generating final archive: Debug certificate expired on 2011/06/22 19:10! 无语……

既然现有的签名过期了,那就重新生成一个吧。

在命令提示行中,通过以下命令生成新的密钥:

密码是 android

validity设为10000可以保证数十年的期限。

将生成的keystore替换原有的。或者在eclipse – Window – preferences – Android – build中将路径改为新的keystore。

问题解决。

Android中调用摄像头并自动对焦拍照

代码与范例:
首先需要在Manifest文件中添加以下内容:

以使程序获取摄像头使用以及自动对焦功能的使用权限。

CameraTestActivity.java

CameraView.java

说明:这是一个简单的示例程序。功能是使用自动对焦功能拍摄一张照片保存于SD卡根目录下。需要注意的是要在manifest文件中声明相关的许可。本例中许多参数都没有设置,可以根据具体需要进行适当的修改以满足特定要求。

Android中EditText在软键盘弹出后自适应改变大小

在使用EditText的过程中遇到的一个问题:具有android:layout_height=”fill_parent”属性的EditText控件在弹出软键盘后高度仍然保持了原有的值,以至于最上方的内容无法被显示。

于是找了一下解决方法,意外的简单,只需要为该EditText控件添加android:scrollbars=”vertical”即可。

Android中如何自动弹出软键盘

代码与范例:

说明:同样是在写Techo Lite时遇到的问题。希望程序可以自动弹出软键盘,可是尝试了各种办法都没有效果。问题的原因似乎是必须等待UI绘制完成后弹出软键盘的代码才会有效。于是就采用了上面的方法。需要注意的是,在此之前必须让edittext获取焦点,不然也是无效的。

Android中创建并使用上下文菜单(Context menu)

代码与范例:

说明:正如用户界面一文中所提到的,Android支持长按项目弹出上下文菜单。上下文菜单相当于桌面系统中的鼠标右键菜单,设计合理的上下文菜单可以提高程序的可用性。通常上下文菜单配合ListActivity使用。使用上下文菜单需要覆盖onCreateContextMenu和onContextItemSelected这两个方法。此外,必须要在活动的onCreate()方法中注册上下文菜单。使用以下语句即可:

Android中使用OpenGL显示背景层透明度PNG图片

代码:

说明:使用这两句语句就可以在渲染时将PNG图片的背景透明化。注意PNG必须是32位的。如果不使用这两句,PNG图片则是显示黑色背景。

Android中OpenGL ES贴图无法显示问题的可能原因

最近在Android中使用OpenGL时遇到了这样的问题:一切代码没有问题,模拟器上也运行正常,但是在实机上就会出现贴图错误,纹理无法显示,只有灰白的底色。

对于这个问题找了很久的解决方法,都没有成功。最后发现其实是文件夹名称的问题。贴图文件原来是保存于drawable文件夹下的,并没有根据Dpi而建立多个文件夹,以为这样就会默认使用drawable文件夹内的资源。对于模拟器而言确实如此,但是对于实机就会出现问题。解决方法是建立drawable-nodpi文件夹,至少对我的情况来说问题就得到了解决。

另外看到的其他的可能原因还有贴图本身的问题,比如说文件尺寸过大、边长不是2的n次方等。我在自己的X10上测试了一下,边长确实有着前述的限制,不过即使是1024依旧可以正确显示,可见对文件大小的要求并不严苛。经测试1024×1024分辨率32位的PNG没有问题。

Android中调用资源中的图片

代码及范例:

说明:调用资源中res/drawable中的图形文件pic.*并绘图。该图形文件可以是jpg或png等格式。