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.
15
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