其實主要就是關(guān)于NotificationChannel的用法虎锚。這是Build.VERSION_CODES.O之后新增的方式硫痰,主要用來設置通知的相關(guān)屬性,單獨提取出來設置的一個工具類吧窜护。
之前也是采用了網(wǎng)上的一些設置方法關(guān)閉聲音效斑,發(fā)現(xiàn)只要通知進度更新就會響,導致每次更新進度都會不停的響柱徙。但是有些機型由沒事缓屠,有些系統(tǒng)也是8.0,之前都沒想护侮,后面又開始想了敌完,沒太具體去研究。 截止2018.10.22的時候綜合了一些個解決方案羊初,算是解決了滨溉,所以先記錄下:
DownLoadIntentService.java部分代碼(創(chuàng)建通知欄),里面有一些額外的設置我注釋掉了长赞,暫時沒用(另外關(guān)于setDefaults不能控制響鈴一次晦攒,具體的我覺得可以細細品味官方和相關(guān)資料):
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);
}
取消狀態(tài)欄:
@Override
public void onDestroy() {
super.onDestroy();
if (null != notificationManager) {
notificationManager.cancel(0);
}
}
Then, 而在Android中,如果需要訪問硬件設備的話得哆,是需要對其進行授權(quán)的脯颜,所以需要在清單文件AndroidManifest.xml中增加兩個授權(quán),分別授予訪問振動器與閃光燈的權(quán)限:
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.VIBRATE"/>
大概記錄下吧贩据。具體的可以專門學習這個知識喲!