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

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

parent 27912a2b
......@@ -21,9 +21,10 @@ class PopupConfigBean(
val screenS: Boolean = true,//解锁触发推送
val alarmS: Boolean = true,//是否闹钟触发推送
val workS: Boolean = true,//workManager触发推送
val notifyForegroundInterval: Long = 30000L//常驻通知栏刷新通知间隔
) {
companion object {
var popupConfigBean: PopupConfigBean = PopupConfigBean()
}
}
\ No newline at end of file
......@@ -13,6 +13,7 @@ import android.os.Build
import android.os.CountDownTimer
import androidx.work.Configuration
import com.base.appzxhy.BuildConfig
import com.base.appzxhy.bean.config.PopupConfigBean
import com.base.appzxhy.business.helper.EventUtils
import com.base.appzxhy.business.service.StayNotification.createPermanentNotification
import com.base.appzxhy.utils.LogEx
......@@ -80,6 +81,7 @@ class StayJobService : JobService() {
}
private fun notifyForeground() {
LogEx.logDebug(TAG, "notifyForeground")
val notificationManager =
getSystemService(NOTIFICATION_SERVICE) as NotificationManager
......@@ -112,15 +114,15 @@ class StayJobService : JobService() {
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) {
override fun onTick(millisUntilFinished: Long) {
// LogEx.logDebug(TAG, "Timer onTick")
}
override fun onFinish() {
LogEx.logDebug(TAG, "Timer onFinish")
// LogEx.logDebug(TAG, "Timer onFinish")
notifyForeground()
Timer().start()
}
......
......@@ -13,39 +13,47 @@ import android.widget.RemoteViews
import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat
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.splash.SplashActivity
import kotlin.random.Random
object StayNotification {
private fun customRemoteViews(contentView: RemoteViews, expendView: RemoteViews) {
// val requestCode1 = Random.nextInt(1800)
// val intent1 = Intent(context, MyStartActivity::class.java).apply {
// putExtra("actionId", ConstObject.NOTIFICATION_ACTION_LOG)
// }
// val pendingIntent1 =
// PendingIntent.getActivity(
// context,
// requestCode1,
// intent1,
// PendingIntent.FLAG_IMMUTABLE
// )
// contentView.setOnClickPendingIntent(R.id.fl_1, pendingIntent1)
// expendView.setOnClickPendingIntent(R.id.fl_1, pendingIntent1)
private fun customRemoteViews(context: Context, contentView: RemoteViews, expendView: RemoteViews) {
arrayOf(R.id.llClean, R.id.llVideo, R.id.llPhoto, R.id.llDocument).forEach {
val requestCode = Random.nextInt(1800)
val intent = Intent(context, SplashActivity::class.java).apply {
if (it == R.id.llClean) {
putExtra("actionId", JUNK_CLEAN)
}
if (it == R.id.llVideo) {
putExtra("actionId", RECOVERY_VIDEOS)
}
if (it == R.id.llPhoto) {
putExtra("actionId", RECOVERY_PHOTOS)
}
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 {
......@@ -54,14 +62,12 @@ object StayNotification {
val contentView = RemoteViews(context.packageName, R.layout.stay_notification_small)
val expendView = RemoteViews(context.packageName, R.layout.stay_notification_big)
customRemoteViews(contentView, expendView)
customRemoteViews(context, contentView, expendView)
val builder = NotificationCompat.Builder(context, channelId)
val smallIcon = IconCompat.createFromIcon(
context, Icon.createWithResource(
context, R.mipmap.ic_launcher
context, R.mipmap.logo
)
)
......@@ -72,12 +78,8 @@ object StayNotification {
val nfIntent = Intent(context, MainActivity::class.java)
val pendingIntent =
PendingIntent.getActivity(context, 0, nfIntent, PendingIntent.FLAG_IMMUTABLE)
builder.setLargeIcon(
BitmapFactory.decodeResource(
context.resources,
R.mipmap.ic_launcher
)
)
builder.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.logo))
builder.setContentTitle(context.resources.getString(R.string.app_name))
builder.setContentIntent(pendingIntent) //设置PendingIntent
builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE) //设置通知公开可见
......
......@@ -3,9 +3,121 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingVertical="8dp"
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_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>
\ No newline at end of file
......@@ -3,7 +3,120 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
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>
\ 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