Commit 36e9bd12 authored by wanglei's avatar wanglei Committed by songjianyu

[新增]常驻通知栏UI和跳转。普通通知矢量图小图标

parent 27912a2b
...@@ -21,9 +21,10 @@ class PopupConfigBean( ...@@ -21,9 +21,10 @@ class PopupConfigBean(
val screenS: Boolean = true,//解锁触发推送 val screenS: Boolean = true,//解锁触发推送
val alarmS: Boolean = true,//是否闹钟触发推送 val alarmS: Boolean = true,//是否闹钟触发推送
val workS: Boolean = true,//workManager触发推送 val workS: Boolean = true,//workManager触发推送
val notifyForegroundInterval: Long = 30000L//常驻通知栏刷新通知间隔
) { ) {
companion object { companion object {
var popupConfigBean: PopupConfigBean = PopupConfigBean() var popupConfigBean: PopupConfigBean = PopupConfigBean()
} }
} }
\ No newline at end of file
...@@ -13,6 +13,7 @@ import android.os.Build ...@@ -13,6 +13,7 @@ import android.os.Build
import android.os.CountDownTimer import android.os.CountDownTimer
import androidx.work.Configuration import androidx.work.Configuration
import com.base.appzxhy.BuildConfig import com.base.appzxhy.BuildConfig
import com.base.appzxhy.bean.config.PopupConfigBean
import com.base.appzxhy.business.helper.EventUtils import com.base.appzxhy.business.helper.EventUtils
import com.base.appzxhy.business.service.StayNotification.createPermanentNotification import com.base.appzxhy.business.service.StayNotification.createPermanentNotification
import com.base.appzxhy.utils.LogEx import com.base.appzxhy.utils.LogEx
...@@ -80,6 +81,7 @@ class StayJobService : JobService() { ...@@ -80,6 +81,7 @@ class StayJobService : JobService() {
} }
private fun notifyForeground() { private fun notifyForeground() {
LogEx.logDebug(TAG, "notifyForeground")
val notificationManager = val notificationManager =
getSystemService(NOTIFICATION_SERVICE) as NotificationManager getSystemService(NOTIFICATION_SERVICE) as NotificationManager
...@@ -112,15 +114,15 @@ class StayJobService : JobService() { ...@@ -112,15 +114,15 @@ class StayJobService : JobService() {
return false return false
} }
val millisInFuture = if (BuildConfig.DEBUG) 5000L else 30000L val millisInFuture = if (BuildConfig.DEBUG) 5000L else PopupConfigBean.popupConfigBean.notifyForegroundInterval
private inner class Timer() : CountDownTimer(millisInFuture, 1000) { private inner class Timer() : CountDownTimer(millisInFuture, 1000) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
// LogEx.logDebug(TAG, "Timer onTick")
} }
override fun onFinish() { override fun onFinish() {
LogEx.logDebug(TAG, "Timer onFinish") // LogEx.logDebug(TAG, "Timer onFinish")
notifyForeground() notifyForeground()
Timer().start() Timer().start()
} }
......
...@@ -13,39 +13,47 @@ import android.widget.RemoteViews ...@@ -13,39 +13,47 @@ import android.widget.RemoteViews
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat import androidx.core.graphics.drawable.IconCompat
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.business.service.StayJobService.Companion.NOTIFICATION_STAY_ID import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.bean.FeatureBean.Companion.RECOVERY_DOCUMENTS
import com.base.appzxhy.bean.FeatureBean.Companion.RECOVERY_PHOTOS
import com.base.appzxhy.bean.FeatureBean.Companion.RECOVERY_VIDEOS
import com.base.appzxhy.ui.main.MainActivity import com.base.appzxhy.ui.main.MainActivity
import com.base.appzxhy.ui.splash.SplashActivity
import kotlin.random.Random
object StayNotification { object StayNotification {
private fun customRemoteViews(contentView: RemoteViews, expendView: RemoteViews) { private fun customRemoteViews(context: Context, contentView: RemoteViews, expendView: RemoteViews) {
// val requestCode1 = Random.nextInt(1800)
// val intent1 = Intent(context, MyStartActivity::class.java).apply { arrayOf(R.id.llClean, R.id.llVideo, R.id.llPhoto, R.id.llDocument).forEach {
// putExtra("actionId", ConstObject.NOTIFICATION_ACTION_LOG) val requestCode = Random.nextInt(1800)
// } val intent = Intent(context, SplashActivity::class.java).apply {
// val pendingIntent1 = if (it == R.id.llClean) {
// PendingIntent.getActivity( putExtra("actionId", JUNK_CLEAN)
// context, }
// requestCode1, if (it == R.id.llVideo) {
// intent1, putExtra("actionId", RECOVERY_VIDEOS)
// PendingIntent.FLAG_IMMUTABLE }
// ) if (it == R.id.llPhoto) {
// contentView.setOnClickPendingIntent(R.id.fl_1, pendingIntent1) putExtra("actionId", RECOVERY_PHOTOS)
// expendView.setOnClickPendingIntent(R.id.fl_1, pendingIntent1) }
if (it == R.id.llDocument) {
putExtra("actionId", RECOVERY_DOCUMENTS)
}
}
val pendingIntent =
PendingIntent.getActivity(
context,
requestCode,
intent,
PendingIntent.FLAG_IMMUTABLE
)
contentView.setOnClickPendingIntent(it, pendingIntent)
expendView.setOnClickPendingIntent(it, pendingIntent)
}
} }
fun notifyStayNotification(context: Context) {
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(
NOTIFICATION_STAY_ID,
createPermanentNotification(context)
)
}
fun createPermanentNotification(context: Context): Notification { fun createPermanentNotification(context: Context): Notification {
...@@ -54,14 +62,12 @@ object StayNotification { ...@@ -54,14 +62,12 @@ object StayNotification {
val contentView = RemoteViews(context.packageName, R.layout.stay_notification_small) val contentView = RemoteViews(context.packageName, R.layout.stay_notification_small)
val expendView = RemoteViews(context.packageName, R.layout.stay_notification_big) val expendView = RemoteViews(context.packageName, R.layout.stay_notification_big)
customRemoteViews(context, contentView, expendView)
customRemoteViews(contentView, expendView)
val builder = NotificationCompat.Builder(context, channelId) val builder = NotificationCompat.Builder(context, channelId)
val smallIcon = IconCompat.createFromIcon( val smallIcon = IconCompat.createFromIcon(
context, Icon.createWithResource( context, Icon.createWithResource(
context, R.mipmap.ic_launcher context, R.mipmap.logo
) )
) )
...@@ -72,12 +78,8 @@ object StayNotification { ...@@ -72,12 +78,8 @@ object StayNotification {
val nfIntent = Intent(context, MainActivity::class.java) val nfIntent = Intent(context, MainActivity::class.java)
val pendingIntent = val pendingIntent =
PendingIntent.getActivity(context, 0, nfIntent, PendingIntent.FLAG_IMMUTABLE) PendingIntent.getActivity(context, 0, nfIntent, PendingIntent.FLAG_IMMUTABLE)
builder.setLargeIcon(
BitmapFactory.decodeResource( builder.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.logo))
context.resources,
R.mipmap.ic_launcher
)
)
builder.setContentTitle(context.resources.getString(R.string.app_name)) builder.setContentTitle(context.resources.getString(R.string.app_name))
builder.setContentIntent(pendingIntent) //设置PendingIntent builder.setContentIntent(pendingIntent) //设置PendingIntent
builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE) //设置通知公开可见 builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE) //设置通知公开可见
......
...@@ -3,9 +3,121 @@ ...@@ -3,9 +3,121 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="horizontal"
android:paddingVertical="8dp"
tools:ignore="DisableBaselineAlignment"> tools:ignore="DisableBaselineAlignment">
<LinearLayout
android:id="@+id/llClean"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:src="@drawable/icon_clean_stay"
tools:ignore="ContentDescription" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:src="@drawable/icon_tixing"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/clean"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_15" />
</LinearLayout>
<LinearLayout
android:id="@+id/llPhoto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:src="@drawable/icon_photos_stay"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/photos"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_15" />
</LinearLayout>
<LinearLayout
android:id="@+id/llVideo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:src="@drawable/icon_videos_stay"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/videos"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_15" />
</LinearLayout>
<LinearLayout
android:id="@+id/llDocument"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:src="@drawable/icon_documents_stay"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/documents"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_15" />
</LinearLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -3,7 +3,120 @@ ...@@ -3,7 +3,120 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="horizontal"
tools:ignore="DisableBaselineAlignment">
<LinearLayout
android:id="@+id/llClean"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_35"
android:src="@drawable/icon_clean_stay"
tools:ignore="ContentDescription" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:src="@drawable/icon_tixing"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/clean"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/llPhoto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_35"
android:src="@drawable/icon_photos_stay"
tools:ignore="ContentDescription,ImageContrastCheck" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/photos"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/llVideo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_35"
android:src="@drawable/icon_videos_stay"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/videos"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/llDocument"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_35"
android:src="@drawable/icon_documents_stay"
tools:ignore="ContentDescription,ImageContrastCheck" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:includeFontPadding="false"
android:text="@string/documents"
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment