12

Tôi mới sử dụng Android. Tôi muốn chạy máy quét phương tiện trong khi chụp ảnh. Sau khi chụp, hình ảnh được cập nhật trong chế độ xem lưới. Tôi cần chạy trình quét đa phương tiện. Tôi tìm thấy hai giải pháp để chạy máy quét phương tiện một là sự kiện phát sóng và sự kiện khác là chạy phương tiện truyền thông lớp máy quét. Tôi nghĩ rằng trong lớp học máy quét phương tiện truyền thông Ice Cream Sandwich (4.0) được giới thiệu.Before các phiên bản cần phải thiết lập sự kiện phát sóng để chạy máy quét phương tiện truyền thông.cách chạy trình quét phương tiện trong android

bất kỳ ai cũng có thể hướng dẫn tôi cách chạy trình quét phương tiện theo đúng cách.

Trả lời

23

Tôi đã tìm thấy nó tốt nhất (nhanh hơn/ít nhất trên đầu) để chạy trình quét phương tiện trên một tệp cụ thể (so với chạy nó để quét tất cả các tệp cho phương tiện), nếu bạn biết tên tệp. Dưới đây là phương pháp tôi sử dụng:

/** 
* Sends a broadcast to have the media scanner scan a file 
* 
* @param path 
*   the file to scan 
*/ 
private void scanMedia(String path) { 
    File file = new File(path); 
    Uri uri = Uri.fromFile(file); 
    Intent scanFileIntent = new Intent(
      Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri); 
    sendBroadcast(scanFileIntent); 
} 

Khi cần để chạy trên nhiều file (chẳng hạn như khi khởi tạo một ứng dụng với nhiều hình ảnh), tôi giữ một bộ sưu tập của tên tập tin hình ảnh mới khi khởi tạo, và sau đó chạy các phương pháp trên cho mỗi tệp hình ảnh mới. Trong mã bên dưới, hãy thêm addToScanList các tệp để quét vào ArrayList<T>scanMediaFiles được sử dụng để bắt đầu quét cho từng tệp trong mảng.

private ArrayList<String> mFilesToScan; 

/** 
* Adds to the list of paths to scan when a media scan is started. 
* 
* @see {@link #scanMediaFiles()} 
* @param path 
*/ 
private void addToScanList(String path) { 
    if (mFilesToScan == null) 
     mFilesToScan = new ArrayList<String>(); 
    mFilesToScan.add(path); 
} 

/** 
* Initiates a media scan of each of the files added to the scan list. 
* 
* @see {@see #addToScanList(String)} 
*/ 
private void scanMediaFiles() { 
    if ((mFilesToScan != null) && (!mFilesToScan.isEmpty())) { 
     for (String path : mFilesToScan) { 
      scanMedia(path); 
     } 
     mFilesToScan.clear(); 
    } else { 
     Log.e(TAG, "Media scan requested when nothing to scan"); 
    } 
} 
+0

ya cảm ơn, tôi hy vọng điều này sẽ giúp tôi rất nhiều tôi sẽ thử với mã này. – user1806231

+0

rất tốt +1 cho điều này, tôi sẽ sử dụng nó và đưa ra phản hồi, tôi sẽ sử dụng với các tệp nhạc và danh sách phát – Ahmed

Các vấn đề liên quan