Cách cấu trúc ứng dụng Android để bắt đầu Service
để sử dụng FileObserver
để khi thư mục được quan sát được sửa đổi (tức là người dùng chụp ảnh) một số mã khác thực thi. Khi gỡ lỗi, phương thức onEvent sẽ không bao giờ được kích hoạt.Làm cách nào để bạn triển khai FileObserver từ Dịch vụ Android
Đây là sự kiện onStart mà tôi có trong Dịch vụ của mình. Các Toast
cháy cho "Dịch vụ của tôi Bắt đầu ..."
public final String TAG = "DEBUG";
public static FileObserver observer;
@Override
public void onStart(Intent intent, int startid) {
Log.d(TAG, "onStart");
final String pathToWatch = android.os.Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera/";
Toast.makeText(this, "My Service Started and trying to watch " + pathToWatch, Toast.LENGTH_LONG).show();
observer = new FileObserver(pathToWatch) { // set up a file observer to watch this directory on sd card
@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 launched
Log.d(TAG, "File created [" + pathToWatch + file + "]");
Toast.makeText(getBaseContext(), file + " was saved!", Toast.LENGTH_LONG);
//}
}
};
}
Nhưng sau Toast rằng, nếu tôi chụp ảnh các onEvent không bao giờ cháy. Điều này được xác định bằng cách gỡ lỗi. Nó không bao giờ chạm vào điểm ngắt đó và Toast không bao giờ bắn.
Khi thư mục đó được duyệt, hình ảnh mới sẽ được lưu ở đó.
Làm thế nào để bạn nhận được FileObserver
làm việc trong một Service
?
tôi sẽ cung cấp cho bạn tín dụng cho câu trả lời vì đó có thể giải quyết nó dựa trên mã mẫu của tôi. Tôi thực sự ghép lại với nhau giải pháp của tôi từ bài viết mà bạn tham khảo nhưng nó vẫn không hoạt động. Tôi có thể đã bỏ lỡ phương thức startWatching(), nhưng một trong hai cách giải pháp cho tôi là sử dụng ví dụ này: http://www.roman10.net/?p=457 – shanabus