como executar o scanner de mídia no android

Sou novo no android. Eu quero executar o scanner de mídia enquanto captura a imagem. Após a captura, a imagem é atualizada na área de grade. Para isso, preciso de fazer um scanner de mídia. Encontrei duas soluções para executar media scannerum é o evento broadcaste o outro é a correr a classe media scanner. Eu acho que em sanduíche de Sorvete (4.0) classe media scanner é introduzido.Antes que as versões precisam definir o evento de transmissão para executar o scanner de mídia.

Qualquer um pode guie-me como executar o scanner de mídia da maneira certa.

Author: hasnain_ahmad, 2012-11-07

1 answers

Eu achei melhor (mais rápido/menos overhead) executar scanner de mídia em um arquivo específico (vs executando-o para digitalizar todos os arquivos para mídia), se você conhece o nome do arquivo. Aqui está o método que eu uso:

/**
 * 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);
}

Quando É necessário executar em vários ficheiros (como quando inicializa uma aplicação com várias imagens), mantenho uma colecção dos novos nomes de ficheiros de imagens enquanto inicializa, e depois corro o método acima para cada ficheiro de imagem nova. No código abaixo, addToScanList adiciona os arquivos para digitalizar a um ArrayList<T>, e scanMediaFiles é usado para iniciar uma pesquisa para cada ficheiro na matriz.

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");
    }
}
 28
Author: bobnoble, 2012-11-07 13:51:08