2012-03-10 19 views
1

メインと処理の2つのアクティビティがあります。処理アクティビティの は、フォルダ内のファイル名に対して編集操作を実行した後、ブロードキャストで更新するスキャンを開始し、スキャンが完了すると確認します。Androidで新しいメディアファイルのスキャンを実行しているかどうかを検出する方法(バックグラウンドで)

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

スキャンが実行されている場合、アクティビティ防止処理を渡したいと思います。 スキャンが実行されていないか最初に確認してから、2番目の処理アクティビティを起動できますか?これで

私はアンドロイドのスキャンを実行中にファイル名を変更した場合、私は処理アクティビティ内のファイルを編集するときに、最後に私はサイズのフォルダ内の他のファイル0バイトを見つけるために、私は、これをチェックする必要が
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); 
     } 

変更前と同じように。 私はスキャンの終了を待つ必要があります。私は解決策を見つけることができません。

UPDATES: 私はこの

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_scanner" を取得私が頼めば...いつも の後にgetMediaScannerUri()がACTION_MEDIA_MOUNTEDを送信しました。「content:// media/none/media_scanner」とは違う何かを取得する必要がありますか?

答えて

1

メディアスキャナは、このコラムを実行しているときに、通常MEDIA_SCANNER_VOLUME

を試してみましたがnullではありません。

+0

いいえ、あなたは正しいです。解決策になる可能性があります。 **ありがとうございました**! – kekko986

+0

質問:POSTの更新:私はこれを発見しました public static Uri getMediaScannerUri() 導入されたバージョン:API Level 1 Uriがメディアスキャナの状態を問い合わせています。 – kekko986

+0

ここにMEDIA_SCANNER_VOLUMEの動作例を示す重複した質問があります(この質問より後で質問します):http://stackoverflow.com/questions/12136681/detect-if-media-scanner-running-on-android – k3b

関連する問題