как определить, выполняется ли сканирование новых медиа-файлов на Android (в фоновом режиме) - PullRequest
1 голос
/ 10 марта 2012

У меня есть два действия: основное и обработка.в действии Обработка выполните операцию редактирования имен файлов в папке, а затем запустите сканирование, чтобы обновить его через широковещательную рассылку, и я проверяю, когда сканирование закончится.

//end batch renaming operation
//start updating media store library
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory()))); 
//show toast "updating"
op_media_mounted.show();
//catch when updaitng op ends
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_FINISHED);
filter.addDataScheme("file");                   
BroadcastReceiver mReceiver = (new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
        Toast.makeText(frm_elabora.this, "Scan complete.", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
registerReceiver(mReceiver, filter);   

Я хотел бы пропустить действиепредотвратить обработку, если сканирование выполняется.Я могу сначала проверить, не выполняется ли сканирование, а затем запустить второе действие обработки?как это.

Button btnstart = (Button)findViewById(R.id.btn_start);
btnstart.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        if ( there_isnt_scan_for_new_media_file )
            startActivity(intent_processing);
        else{
                wait_until_ACTION_MEDIA_SCANNER_FINISHED
                startActivity(intent_processing);
        }

Мне нужно проверить это, потому что, если я переименую файлы во время сканирования Android, когда я редактирую файлы в процессе обработки, в конце я нахожу другие файлы в папкес размером 0 байт, как и до изменения.поэтому я должен дождаться окончания сканирования.я не могу найти решение.

ОБНОВЛЕНИЯ: я нашел это

    public static Uri getMediaScannerUri ()
    Since: API Level 1
    Uri for querying the state of the media scanner.

я пробую это

    //send broadcast
    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
            Uri.parse("file://" +
            Environment.getExternalStorageDirectory())));
    //show media scanner state
    Toast.makeText(frm_elabora.this,
        MediaStore.getMediaScannerUri().toString(),
        Toast.LENGTH_SHORT).show();

и я получаю "содержание: //media / none / media_scanner "всегда ... если я спрашиваю getMediaScannerUri () после отправки ACTION_MEDIA_MOUNTED, я должен получить что-то отличное от" content: // media / none / media_scanner "???

1 Ответ

1 голос
/ 20 марта 2012

вы пробовали MEDIA_SCANNER_VOLUME

Обычно, когда медиа-сканер работает, этот столбец не равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...