Android 拍摄照片或视频时调用操作的最佳方式?

Android 拍摄照片或视频时调用操作的最佳方式?,android,android-intent,camera,Android,Android Intent,Camera,每当拍摄到照片或视频时,我都想触发一个异步任务,但当我使用Galaxy S4上的stock camera应用程序拍照时,似乎不会触发以下意图: <action android:name="android.intent.action.CAMERA_BUTTON" /> <action android:name="com.android.camera.NEW_PICTURE" /> <action android:name

每当拍摄到照片或视频时,我都想触发一个异步任务,但当我使用Galaxy S4上的stock camera应用程序拍照时,似乎不会触发以下意图:

        <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/摄像机文件夹)?如果是这样的话,怎么做呢?

我可以用这个

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,如下所示

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

您想在捕获视频/照片期间或之后运行asyntask吗?如果在捕获视频/照片之后运行,我想运行谢谢-这看起来不错。如果你想让它一直在后台运行,那么把代码放在哪里最合适呢?要在后台运行代码,我认为你应该使用服务。这是一个服务实现的链接,或者你可以查看ServicesHanks上的文档。想想看,从资源使用和电池消耗的角度来看,一个一直运行的FileObserver可能有点不可用。这样说公平吗?Fileobserver不应该耗尽电池…至少这篇文章这样说,虽然Fileobserver本身可能不会耗尽电池,但它可能需要在应用程序的永久运行服务中启动,这本身就是一种资源消耗?