2017-03-03 57 views
0

我的應用程序使用用戶手機上的所有圖像的一些信息保存數據庫。但是,一旦他們添加新的(通過拍攝照片等),我的應用程序應該能夠知道這一點,並將新圖像的信息添加到數據庫中。顯然,不想遍歷整個數據庫來檢查哪些是新圖像。Android - 聆聽新圖像文件

我的研究表明,我可以使用FileObserver獲得「文件偵聽器」。但是,我知道這隻適用於我的應用程序正在運行。因此,如果我實現了一個FileObserver,關閉應用程序然後打開它,自從上次打開應用程序以後,我能夠知道哪些是新圖像?

如果沒有,那麼我明白我需要有某種背景服務,但在文檔中說它應該被實現爲僅使用簡單/非繁重的操作......並且因爲我將全部觀察子目錄(recusrively)與FileObserver的新圖像,我想這將是一個昂貴的操作?如果服務停止運行會發生什麼情況,並在此期間添加新的圖像。 FileObserver會選擇這個嗎?

感謝

+0

*「顯然不希望循環遍歷整個數據庫「 * - 爲什麼不?您可以在創建日期時進行非常快速的傳遞,然後傳遞文件名......除非用戶擁有數千張照片,但在應用程序啓動時這應該不會太慢? – Wolfie

+0

@Wolfie實際上這個應用程序是用來處理數千張照片的......這就是爲什麼。 – user2928431

回答

1

看起來像你需要一個BroadcastReceiver

public class CameraReciver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    } 
} 

在清單:

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

包括此權限:

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

我也需要它來處理事件,例如用戶將文件複製/移動到文件夾。 – user2928431