您的位置:首页 > 移动开发 > Android开发

Android Notification 详解(二)--设置闹铃时铃声从SD卡中获取

2016-11-25 16:46 274 查看
Notification设置闹铃,铃声从SD卡中获取

public class AlarmReceiver extends BroadcastReceiver {
String soundPath = Environment.getExternalStorageDirectory()+"/";

@Override
public void onReceive(Context context, Intent intent) {
Log.d("AlarmRecever","闹铃响了");
//=====================状态栏提示 start =================
//设置通知内容并开启
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("用电脑的时间过长!")
.setContentText("用电脑时间有点长,眼睛需要好好休息一下。")
.setWhen(System.currentTimeMillis())
.build();

/*
* 添加声音可以使用默认声音,也可以自定义声音,也可以用系统声音

* 自定义声音从SD卡中获取,如果SD卡中没有音乐,则用默认声音
* */
List<String> list = getSDCardMusic(context);
if(list != null && list.size() != 0){
notification.sound = Uri.parse(list.get(0));
Log.d("AlarmReceiver","musicName="+list.get(0));
}else{
notification.defaults |= Notification.DEFAULT_SOUND;
}

//设置声音循环播放
notification.flags |= Notification.FLAG_INSISTENT;

/*
* 添加振动,可以添加默认的振动defaults,也可以添加自定义振动vibrate
* 另外还需要注意一点:使用振动器时需要权限,如下:
* <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
* */
notification.defaults |= Notification.DEFAULT_VIBRATE;

/*
* 设置灯光
* */
notification.defaults |= Notification.DEFAULT_LIGHTS;

manager.notify(1,notification);// 这个notification 的 id 设为1023
//=====================状态栏提示 end =================
}

//获取设备SD卡中的歌曲路径
public List<String> getSDCardMusic(Context context){
String musicPath;
int isMusic;
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
List<String> musics = new ArrayList<>();
for(int i=0;i<cursor.getCount();i++){
cursor.moveToNext();
musicPath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
//            Log.d("AlarmReceiver","musicName="+musicName);
isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
if(isMusic != 0){
musics.add(musicName);
}
}
return musics;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息