其实主要就是关于NotificationChannel的用法。这是Build.VERSION_CODES.O之后新增的方式,主要用来设置通知的相关属性,单独提取出来设置的一个工具类吧。
之前也是采用了网上的一些设置方法关闭声音,发现只要通知进度更新就会响,导致每次更新进度都会不停的响。但是有些机型由没事,有些系统也是8.0,之前都没想,后面又开始想了,没太具体去研究。 截止2018.10.22的时候综合了一些个解决方案,算是解决了,所以先记录下:
DownLoadIntentService.java部分代码(创建通知栏),里面有一些额外的设置我注释掉了,暂时没用(另外关于setDefaults不能控制响铃一次,具体的我觉得可以细细品味官方和相关资料):
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel mChannel = new NotificationChannel(InfoChannel, InfoChannel, NotificationManager.IMPORTANCE_HIGH);
// mChannel.setDescription(description);
// mChannel.enableLights(true);
// mChannel.setLightColor(Color.RED);
// mChannel.enableVibration(true);
// mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mChannel.setSound(null, null);
mChannel.setImportance(NotificationManager.IMPORTANCE_LOW);
notificationManager.createNotificationChannel(mChannel);
builder = new NotificationCompat.Builder(this, InfoChannel);
} else {
builder = new NotificationCompat.Builder(this);
}
builder.setSmallIcon(R.drawable.notification)
.setWhen(System.currentTimeMillis())
.setContentTitle("小皮球APP")
.setAutoCancel(true)
.setContentText("版本更新");
///< 仅仅响一次
builder.setOnlyAlertOnce(true);
//builder.setDefaults(NotificationCompat.FLAG_ONLY_ALERT_ONCE);
notificationManager.notify(0, builder.build());
进度更新部分:
int progresss = (int) Math.round(progress / (double) total * 100);
builder.setContentInfo(String.valueOf(progress) + "%").setProgress(100, progresss, false);
notificationManager.notify(0, builder.build());
if (progresss == 100) {
notificationManager.cancel(0);
}
取消状态栏:
@Override
public void onDestroy() {
super.onDestroy();
if (null != notificationManager) {
notificationManager.cancel(0);
}
}
Then, 而在Android中,如果需要访问硬件设备的话,是需要对其进行授权的,所以需要在清单文件AndroidManifest.xml中增加两个授权,分别授予访问振动器与闪光灯的权限:
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.VIBRATE"/>
大概记录下吧。具体的可以专门学习这个知识哟!