【问题标题】:Best way to invoke an action when photo or video is taken?拍摄照片或视频时调用动作的最佳方式?
【发布时间】:2023-03-19 14:04:01
【问题描述】:

我想在拍摄照片或视频时触发 Asynctask,但当我使用 Galaxy S4 上的相机应用拍照时,似乎没有触发以下意图:

        <action android:name="android.intent.action.CAMERA_BUTTON" />
        <action android:name="com.android.camera.NEW_PICTURE" />
        <action android:name="android.hardware.action.NEW_PICTURE" />
        <category android:name="android.intent.category.DEFAULT" />

所以我的问题是:每当将文件添加到指定文件夹时触发我的 Asynctask 会更可靠吗? (例如 DCIM/camera 文件夹)?如果可以,怎么做?

【问题讨论】:

  • 您想在捕获期间或捕获视频/照片之后运行您的异步任务?
  • 我想在拍摄视频/照片后运行

标签: android android-intent camera


【解决方案1】:

我可以用这个来做到这一点

FileObserver observer = new FileObserver(android.os.Environment.getExternalStorageDirectory().toString() + "/DCIM/100MEDIA") { // set up a file observer to watch the DCIM directory
            @Override
        public void onEvent(int event, String file) {
            if(event == FileObserver.CREATE && !file.equals(".probe")){ // check if its a "create" and not equal to .probe because thats created every time camera is started
                Log.d(TAG, "File created [" + android.os.Environment.getExternalStorageDirectory().toString() + "/DCIM/100MEDIA/" + file + "]");
                fileSaved = "New photo Saved: " + file;

//You could do other stuff here

            }
        }
    };
    observer.startWatching();

但如果由于其他原因图片没有保存在 DCIM 文件夹中,您可以像这样在所有文件夹上设置文件观察器

FileObserver observer = new FileObserver(android.os.Environment.getExternalStorageDirectory().toString())

【讨论】:

  • 谢谢 - 这看起来不错。如果您希望它一直在后台运行,那么放置此代码的最佳位置是哪里?
  • 要在后台运行代码,我认为您应该使用服务。这是服务实现的链接thenewcircle.com/s/post/60/servicesdemo_using_android_services 或者您可以查看服务文档
  • 谢谢。想一想,从资源使用和电池消耗的角度来看,也许一直运行的 FileObserver 有点禁忌。这样说公平吗?
  • Fileobserver 不应该耗尽电池......至少这篇文章是这样说的 stackoverflow.com/questions/20223155/…
  • 虽然 Fileobserver 本身可能不会耗尽电池,但大概需要在应用程序的永久运行服务中启动它,这本身会消耗资源?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多