如何检测是否在Android上运行新媒体文件的扫描(在后台)

时间:2012-03-10 15:09:52

标签: android background detect mediastore

我有两个活动:Main和Processing。 在Processing活动中对文件夹中的文件名执行编辑操作,然后开始扫描以通过广播进行更新,并检查扫描完成的时间。

//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();

我得到“content:// media / none / media_scanner”总是...如果我问了getMediaScannerUri()之后  发送ACTION_MEDIA_MOUNTED,我应该得到一些不同于“content:// media / none / media_scanner”???

1 个答案:

答案 0 :(得分:1)

你试过MEDIA_SCANNER_VOLUME

吗?

通常在媒体扫描程序运行时,此列不为空。