直播平臺原始碼,通知欄中顯示滑動的進度條
直播平臺原始碼,通知欄中顯示滑動的進度條實現的相關程式碼
private NotificationManager notificationManager; private NotificationCompat.Builder builder; private NotificationClickReceiver notificationClickReceiver; public class DownloadManager { private static final String TAG = "DownloadManager"; private Context mContext; private String downloadUrl; private String savePath; private DownloadRecord downloadRecord; /** * 下載 * * @param context 上下文 * @param downloadUrl 下載地址 * @param savePath 下載後儲存到本地的路徑 */ public void download(Context context, String downloadUrl, String savePath) { this.mContext = context; this.downloadUrl = downloadUrl; this.savePath = savePath; try { downloadRecord = Downloader.createRecord(downloadUrl, savePath, new DownloadListenerAdapter() { @Override public void onTaskStart(DownloadRecord record) { Log.d(TAG, "onTaskStart"); initNotification(); } public void onTaskPause(DownloadRecord record) { Log.d(TAG, "onTaskPause"); } public void onTaskCancel(DownloadRecord record) { Log.d(TAG, "onTaskCancel"); } public void onProgressChanged(DownloadRecord record, int progress) { Log.d(TAG, "onProgressChanged progress=" + progress); updateNotification(progress); } @Override public void onTaskSuccess(DownloadRecord record) { Log.d(TAG, "onTaskSuccess"); showInstall(); } @Override public void onTaskFailure(DownloadRecord record, Throwable throwable) { Log.e(TAG, "onTaskFailure error=" + throwable); updateNotification(-1); } }); } catch (Exception x) { Log.e(TAG, "download error=" + x); } } /** * 初始化通知 */ private void initNotification() { try { notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); // Android8.0及以後的方式 if (Build.VERSION.SDK_INT >= 26) { // 建立通知渠道 NotificationChannel notificationChannel = new NotificationChannel("download_channel", "下載", NotificationManager.IMPORTANCE_DEFAULT); notificationChannel.enableLights(false); //關閉閃光燈 notificationChannel.enableVibration(false); //關閉震動 notificationChannel.setSound(null, null); //設定靜音 notificationManager.createNotificationChannel(notificationChannel); } builder = new NotificationCompat.Builder(mContext, "download_channel"); builder.setContentTitle("已下載(0%)") //設定標題 .setSmallIcon(mContext.getApplicationInfo().icon) //設定小圖示 .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), mContext.getApplicationInfo().icon)) //設定大圖示 .setPriority(NotificationCompat.PRIORITY_MAX) //設定通知的優先順序 .setAutoCancel(false) //設定通知被點選一次不自動取消 .setSound(null) //設定靜音 .setContentText("正在下載 點選取消") //設定內容 .setProgress(100, 0, false) //設定進度條 .setContentIntent(createIntent()); //設定點選事件 notificationManager.notify(100, builder.build()); } catch (Exception x) { Log.e(TAG, "initNotification error=" + x); } } /** * 重新整理通知 * * @param progress 百分比,此值小於0時不重新整理進度條 */ private void updateNotification(int progress) { if (builder == null) { return; } if (progress >= 0) { builder.setContentTitle("已下載(" + progress + "%)"); builder.setProgress(100, progress, false); } if (downloadRecord == null || downloadRecord.getState() == DownloadRecord.STATE_FAILURE) { builder.setContentText("下載失敗 點選重試"); } else if (progress == 100) { builder.setContentText("下載完成 點選安裝"); builder.setAutoCancel(true); } notificationManager.notify(100, builder.build()); } /** * 設定通知點選事件 * * @return 點選事件 */ private PendingIntent createIntent() { Intent intent = new Intent(mContext.getPackageName() + ".upgrade.notification"); intent.setPackage(mContext.getPackageName()); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); return pendingIntent; } /** * 註冊通知點選監聽 */ private void registerReceiver() { notificationClickReceiver = new NotificationClickReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(mContext.getPackageName() + ".upgrade.notification"); mContext.registerReceiver(notificationClickReceiver, intentFilter); } /** * 處理通知欄點選事件 */ public class NotificationClickReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (!(mContext.getPackageName() + ".upgrade.notification").equals(action)) { return; } if (downloadRecord != null) { int state = downloadRecord.getState(); Log.d(TAG, "onReceive state=" + state); switch (state) { case DownloadRecord.STATE_CREATE: case DownloadRecord.STATE_PENDING: case DownloadRecord.STATE_RUNNING: case DownloadRecord.STATE_PAUSE: // 關閉通知欄 notificationManager.cancel(100); break; case DownloadRecord.STATE_SUCCESS: // 顯示安裝確認彈窗 showInstallAlert(true); break; case DownloadRecord.STATE_FAILURE: // 重新下載 download(mContext, this.downloadUrl, this.savePath); break; default: break; } } } } }
以上就是直播平臺原始碼,通知欄中顯示滑動的進度條實現的相關程式碼, 更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2871673/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播平臺原始碼,各個樣式的訊息通知欄顯示方式原始碼
- 直播app系統原始碼,固定速度的進度條顯示APP原始碼
- 直播平臺搭建原始碼,uniapp progress進度條原始碼APP
- 直播平臺軟體開發,讓原本沒有進度條的頁面顯示進度條
- 直播平臺搭建原始碼,canvas 畫一條波浪線 進度條原始碼Canvas
- 直播系統開發,實現在進度條中顯示文字顯示進度
- 直播平臺製作,Glide載入網路圖,進度條顯示IDE
- 直播平臺開發,自定義中間向兩邊滑動的滑動條
- 直播帶貨平臺原始碼,利用ProgressBar實現垂直、水平進度條原始碼
- 短視訊平臺原始碼,Android 左右滑動顯示和隱藏原始碼Android
- 直播平臺搭建原始碼,qt自定義滑動按鈕原始碼QT
- 直播平臺製作,使用 NProgress 進度條
- 直播系統app原始碼,自定義中間向兩邊滑動的滑動條APP原始碼
- 直播平臺原始碼,隱藏app圖示並不在最近執行中顯示原始碼APP
- app直播原始碼,edusoho直播回放增加進度條APP原始碼
- 直播平臺原始碼,input密碼框顯示與隱藏原始碼密碼
- 直播平臺搭建原始碼,Android進度條ProgressBar顏色的漸變設定原始碼Android
- 手機直播原始碼,滾動條在滑動時顯示,靜止時恢復隱藏狀態原始碼
- 直播平臺原始碼,el-button自定義圖片顯示原始碼
- 直播平臺原始碼,純JS實現左右滑動輪播圖原始碼JS
- 直播平臺原始碼,Android實現密碼顯示與隱藏原始碼Android密碼
- 直播電商平臺開發,環形進度條元件元件
- 直播平臺原始碼,TabLayout標籤較少時,如何居中顯示原始碼TabLayout
- 直播平臺搭建原始碼,XBanner設定只顯示輪播圖原始碼
- 視訊直播原始碼,新增內容滑動條,停止滑動時隱藏原始碼
- 直播app開發,點選螢幕時顯示進度條APP
- 直播平臺原始碼,css移動端設定底部導航欄原始碼CSS
- 一對一原始碼,滑塊驗證,滑塊左右滑動顯示的位置原始碼
- 直播平臺開發,載入網頁、html檔案顯示載入進度網頁HTML
- 成品直播原始碼推薦,Flutter波浪進度條WaveProgressBar原始碼Flutter
- 直播商城系統原始碼,環形進度條元件原始碼元件
- 直播平臺原始碼,可摺疊式選單欄原始碼
- 直播系統平臺原始碼隱藏虛擬導航欄,禁止下拉通知欄,禁止上滑出虛擬導航欄原始碼
- 直播app系統原始碼,簡單易上手的進度條APP原始碼
- 搭建直播平臺,顯示隱藏密碼,眼睛特效密碼特效
- 直播app原始碼,根據頁面滾動高亮顯示目錄的側邊欄APP原始碼
- 成品直播原始碼,頂部導航欄部分支援左右滑動原始碼
- 搭建直播平臺,Android開發之禁止下拉通知欄的方法Android