0

私のアプリはいくつかのmp3ファイルをsdcardにダウンロードします。デバイスにインストールされている他の音楽プレーヤーで再生したい。しかし、他の音楽プレーヤーは私のダウンロードしたファイルを自動的に見つけません。MediaScannerを強制的に実行して、メディアファイルをストックミュージックアプリケーションから再生できるようにするにはどうすればよいですか?

このコードを使用してファイルをダウンロードします

public void run() {
        loaded = 0;
        try{                
        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(url).openStream());
        java.io.FileOutputStream fos = new java.io.FileOutputStream(FileName);
        java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
        byte[] data = new byte[1024];
        int x=0;
        while((x=in.read(data,0,1024))>=0 && !stop){
            loaded += x;
            bout.write(data,0,x); 
        }
        fos.flush();
        bout.flush();
        fos.close();
        bout.close();
        in.close();

        }catch(Exception e){

        }
}
4

3 に答える 3

1

ブロードキャストでメディアファイルのスキャンを強制できます。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
于 2011-05-26T21:02:13.123 に答える
0

これが簡単な「単一ファイルベースのソリューション」です。

ファイルを追加または削除するときはいつでも、MediaStoreコンテンツプロバイダーにファイルを使用して通知してください

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted)));

主な利点:MediaStoreでサポートされている任意のmimeタイプで動作します

ノート:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

費用がかかりすぎて、すべてをスキャンします。私のアドバイス:可能であれば、「ファイルごと」のアプローチを使用してください。

于 2013-02-13T08:58:45.650 に答える
0

ファイルが含まれているフォルダに「.nomedia」というファイルが含まれていないことを確認してください。そのファイルは、MediaScannerにそこでチェックしないように指示します。

(注:nomediaの前に「。」があります。これは非表示になっている可能性があることを意味します)

于 2011-05-26T20:27:46.590 に答える