下面猪的Activity中的代码:
package com.zte.broadcastReceiverMediaScanner;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
public class BroadcastReceiverMediaScannerActivity extends Activity
{
/** Called when the activity is first created. */
private ScanSdReceiver scanSdReceiver;
private String _path[];
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button mButton = (Button) findViewById(R.id.button1);
mButton.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View arg0)
{
scanSdCa();
}
});
}
private void scanSdCa()
{
IntentFilter intentfilter = new IntentFilter(
Intent.ACTION_MEDIA_SCANNER_STARTED);
intentfilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentfilter.addDataScheme("file");
scanSdReceiver = new ScanSdReceiver();
registerReceiver(scanSdReceiver, intentfilter);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"
+ Environment.getExternalStorageDirectory()
.getAbsolutePath())));
}
}
通过点击按钮来发送广播信息,然后通过广播服务来扫面音频信息
下面是广播服务代码:
package com.zte.broadcastReceiverMediaScanner;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.Toast;
public class ScanSdReceiver extends BroadcastReceiver
{
private AlertDialog.Builder builder = null;
private AlertDialog ad = null;
private int count1;
private int count2;
private int count;
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action))
{
Cursor c1 = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME }, null, null,
null);
count1 = c1.getCount();
// System.out.println("count:" + count);
Log.i("TAG", "count---->>>>" + count);
builder = new AlertDialog.Builder(context);
builder.setMessage("正在扫描存储卡...");
ad = builder.create();
ad.show();
} else if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action))
{
Cursor c2 = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME }, null, null,
null);
count2 = c2.getCount();
Log.i("RG", "count---->>>>>>");
count = count2 - count1;
Log.i("TAG", "count2-count---->>>>" + count);
ad.cancel();
if (count >= 0)
{
Toast.makeText(context, "共增加" + count + "首歌曲",
Toast.LENGTH_LONG).show();
} else
{
Toast.makeText(context, "共减少" + count + "首歌曲",
Toast.LENGTH_LONG).show();
}
}
}
}