android通过广播来扫描sdcard里面的音频信息



下面猪的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();
}
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值