【问题标题】:listen to camera events android监听相机事件android
【发布时间】:2011-07-25 03:43:49
【问题描述】:

我正在尝试在 android 中实现相机事件。我是这方面的新手。究竟如何去听像 didCancel 和 didFinishPickingMedia 这样的事件?请指教。我非常绝望,因为快速搜索无法将我带到任何地方。

【问题讨论】:

  • 我不太确定你在问什么。您是否尝试直接与相机硬件交互并拍摄照片?或者您是否尝试在代码中创建一个点,以打开设备上的相机应用程序并要求它给您一张照片。如果是第二个,则只需将一些意图发送到 startActivityForResult ,您应该能够获得 Canceled 回调或返回的位图 URI。但两者都非常不同,所以在那之前真的帮不上忙。
  • 嘿格雷格,我实际上是在尝试直接与硬件交互。你能告诉我应该如何进行吗?
  • 然后我会查看 Balaji 的链接。一切都是通过 SurfaceHolder 完成的。所以你最终会通过这个虚拟画布获得回调。但是我认为没有任何 didFinishPickingMedia,您必须为此与 MediaStore 进行交互。
  • 格雷格,didCancel 呢?我确信它类似于关闭快门或关闭相机功能。您是否熟悉我可以为此类事件实现的侦听器?

标签: android android-manifest android-camera android-camera-intent


【解决方案1】:

我真的认为您正在寻找这个:

MediaStore ACTION_IMAGE_CAPTURE

如果你用这个创建一个意图:

Uri uri = ... // where I want a full sized photo to be.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)
startActivityForResult(intent, MY_CALLBACK_ID);

然后在同一个活动的某个地方:

public void onActivityResult(int  requestId, int resultCode, Intent data) {
if (requestId == MY_CALLBACK_ID) {
   if (resultCode == Activity.RESULT_CANCELLED) {
       onCancelled();
   } else if (resultCode == Activity.RESULT_OK) {
      onFinishedPickingMedia();
   }
}

或者,如果您真的只想显示图库,您可能可以使用类似的代码,但不使用 MediaStore.ACTION_IMAGE_CAPTURE,试试这个(我尚未验证):

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, MY_CALLBACK_ID);

我认为您要求的特定回调在 Android 中不存在。您在哪里听说过它们?

【讨论】:

  • 谢谢 Greg,让我试试这个实现。我所指的事件是 ios 原生的。我只是想在android中实现它们。不过,它似乎是个泡菜!!
  • 没有问题,很抱歉我不懂 iOS。你能指点我一些文件吗?我认为尽管您不想管理整个 SurfaceHolder 的事情(这很痛苦,通常不需要,除非您正在制作照片应用程序)。 Android 的理念是,如果你只想要一张照片,那么相机应用程序就会给你一张照片。这样一来,用户可以选择他们想要使用的相机应用程序(默认情况下他们只有一个)。但从理论上讲,如果这个人有一个截获相同意图的照片应用程序,并且它提供了比普通 android 更好的过滤器,那么他们可以使用它来提供图片
  • Greg,我可以为相机关闭事件实现回调吗?不幸的是,我的ios技能最多是基本的。我只是想在 android..sorry 中实现它的原生功能
  • 相机关闭?抱歉,不太清楚那是如何映射的。就像我说的,如果您将我指向您用作参考的 ios 文档,我可以做得更多。基本上你的应用程序会发生什么,你调用相机,应用程序打开,用户要么拍照,要么点击后退按钮,要么以某种方式取消该过程。如果他们取消,您将获得 RESULT_CANCEL 代码。如果没有,那么您将在用于请求将照片保存到的 URI 中获得一张照片。
  • 谢谢格雷格!!这是我需要知道的。你帮了大忙!
【解决方案2】:

Android 提供了一些回调来监听相机事件。这些回调是在相机类中声明的。通过使用这些回调,您可以处理相机事件。请点击此链接..

http://developer.android.com/reference/android/hardware/Camera.html

http://marakana.com/forums/android/examples/39.html

【讨论】:

  • Balaji 你能告诉我如何在 android 中实现 onCancel 和 onFinishPickingMedia 事件吗?我绝望了!!
  • 好的,我想知道我可以为 onCancel 和 onFinishPickingMedia 等事件实现哪个监听器?
【解决方案3】:

试试这个,

<uses-permission android:name="android.permission.CAMERA" />

   <receiver
        android:name="com.android.application.CameraEventReciver"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.android.camera.NEW_PICTURE" />
            <data android:mimeType="image/*" />
        </intent-filter>
    </receiver>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2012-06-21
    • 1970-01-01
    相关资源
    最近更新 更多