胡凯

Android Training - 捕获照片(Lesson 3 - 直接操控相机)

| Comments

在这一节课,我们会讨论如何通过使用framework的APIs来直接控制相机的硬件。直接控制设备的相机,相比起拍照与录像来说,要复杂一些。然而,如果你想要创建一个专业的特殊的相机程序,这节课会演示这部分内容。

Open the Camera Object(打开相机对象)

获取到 Camera 对象是直接控制Camera的第一步。正如Android自带的相机程序一样,推荐访问Camera的方式是在onCreate方法里面另起一个Thread来打开Camera。这个方法可以避免因为打开工作比较费时而引起ANR。在一个更加基础的实现方法里面,打开Camera的动作被延迟到onResume()方法里面去执行,这样使得代码能够更好的重用,并且保持控制流程不会复杂化。(原文是:In a more basic implementation, opening the camera can be deferred to the onResume() method to facilitate code reuse and keep the flow of control simple.)

Android Training - 捕获照片(Lesson 2 - 简单的录像动作)

| Comments

这节课会介绍如何使用现有的Camera程序来录制一个视频。和拍照一样,我们没有必要去重新发明录像程序。大多数的Android程序都有自带Camera来进行录像。(这一课的内容大多数与前面一课类似,简要带过,一些细节不赘述了)

Request Camera Permission [请求权限]

1
2
3
4
<manifest ... >
    <uses-feature android:name="android.hardware.camera" />
    ...
</manifest ... >

与上一课的拍照一样,你可以在启动Camera之前,使用hasSystemFeature(PackageManager.FEATURE_CAMERA).来检查是否存在Camera。

Android Training - 捕获照片(Lesson 1 - 简单的拍照动作)

| Comments

在多媒体流行之前,世界是沉闷(dismal)并且特色稀少(featureless)的。还记得Gopher? (Gopher是计算机上的一个工具软件,是Internet提供的一种由菜单式驱动的信息查询工具,采用客户机/服务器模式)。因为你的app将要成为你的用户的生活的一部分,请赋予你的app能够把用户生活装进去的功能。使用内置的Camera,你的程序可以使得用户扩展(augment)他们所看的事物,生成唯一的头像,查找角落的人偶(zombies),或者仅仅是分享他们的经验。

这一章节,会教你如何简单的使用已经存在的Camera程序。在后面的课程中,你会更加深入的( dive deeper )学习如何直接控制Camera的硬件。

试试下面的例子程序 PhotoIntentActivity.zip


假设你想通过你的客户端程序实现一个聚合全球天气的地图,上面会有各地的当前天气图片。那么集合图片只是你程序的一部分。你想要最简单的动作来获取图片,而不是重新发明(reinvent)一个camera。幸运的是,大多数Android设备都已经至少安装了一款相机程序。在这节课中,你会学习,如何拍照。

Android Training - 与其他Apps进行交互(Lesson 3 - 允许其他app启动你的activity)

| Comments

前两节课主要讲了从你的app启动另外一个app。但是如果你的app可以响应前面发出的action,那么你的app应该做好响应的准备。例如,如果你创建了一个social app,它可以分享messages 或者 photos 给好友,那么最好你的app能够接收ACTION_SEND 的intent,这样当用户在其他app触发分享功能的时候,你的app能够出现在待选对话框。

为了使得其他的app能够启动你的activity,你需要在你的manifest文件的 标签下添加 的属性。

当你的app被安装到设备上时,系统可以识别你的intent filter并把这些信息记录下来。当其他app通过执行 startActivity() 或者 startActivityForResult()方法,并使用implicit intent时,系统可以自动查找出那些可以响应这个intent的activity。