Commit cc472e48 authored by wanglei's avatar wanglei

...

parent b300b351
...@@ -8,7 +8,7 @@ import javax.crypto.spec.SecretKeySpec ...@@ -8,7 +8,7 @@ import javax.crypto.spec.SecretKeySpec
object AESHelper { object AESHelper {
private const val aesKey = "7vwdrlk6bp8rihe4" private const val aesKey = "e7t5eq1u3m8nwo59"
private val cipher by lazy { private val cipher by lazy {
Cipher.getInstance("AES/GCM/NoPadding") Cipher.getInstance("AES/GCM/NoPadding")
......
...@@ -9,7 +9,7 @@ object ConfigHelper { ...@@ -9,7 +9,7 @@ object ConfigHelper {
const val termService: String = "https://sites.google.com/view/term-of-service-s/term-of-service" const val termService: String = "https://sites.google.com/view/term-of-service-s/term-of-service"
// 正式包名 // 正式包名
const val packageName = "com.lol.pdfscanner.libstdc.chovey" const val packageName = "com.leizi.pdftransformer"
// 域名 // 域名
const val eventUrl = "https://rp.gamexzonerk.xyz" const val eventUrl = "https://rp.gamexzonerk.xyz"
......
...@@ -32,15 +32,14 @@ import com.base.pdfreaderallpdfreader.utils.LogEx ...@@ -32,15 +32,14 @@ import com.base.pdfreaderallpdfreader.utils.LogEx
class StayJobService : JobService() { class StayJobService : JobService() {
init { init {
val builder = Configuration.Builder() val builder = Configuration.Builder()
builder.setJobSchedulerJobIdRange(0, 1000) builder.setJobSchedulerJobIdRange(0, 1000)
} }
private val TAG = "StayNotificationService" private val TAG = "StayJobService"
val channelName = "PDF Reader Foreground Service Channel" private val channelName = "PDF Reader Foreground Service Channel"
val channelId = "PDF_Reader_Service_Id" private val channelId = "PDF_Reader_Service_Id"
val NOTIFICATION_PERMANENT_ID = 186 private val NOTIFICATION_PERMANENT_ID = 186
companion object { companion object {
...@@ -132,6 +131,15 @@ class StayJobService : JobService() { ...@@ -132,6 +131,15 @@ class StayJobService : JobService() {
isRunning = true isRunning = true
} }
private fun notifyForeground() {
val notificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(
NOTIFICATION_PERMANENT_ID,
createPermanentNotification(applicationContext)
)
}
override fun onDestroy() { override fun onDestroy() {
isRunning = false isRunning = false
...@@ -139,12 +147,11 @@ class StayJobService : JobService() { ...@@ -139,12 +147,11 @@ class StayJobService : JobService() {
} }
override fun onCreate() { override fun onCreate() {
LogEx.logDebug(TAG, "onCreate isRunning=$isRunning")
if (!isRunning) { if (!isRunning) {
startForeground()
isRunning = true isRunning = true
Timer { startForeground()
startForeground() Timer().start()
}.apply { start() }
} }
super.onCreate() super.onCreate()
} }
...@@ -170,17 +177,17 @@ class StayJobService : JobService() { ...@@ -170,17 +177,17 @@ class StayJobService : JobService() {
} }
} }
} }
}
class Timer(val block: () -> Unit) : CountDownTimer(30000, 1000) { private inner class Timer() : CountDownTimer(30000, 1000) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
} }
override fun onFinish() {
notifyForeground()
Timer().start()
}
override fun onFinish() {
Timer {
block()
}.apply { start() }
} }
}
}
\ No newline at end of file
...@@ -11,6 +11,7 @@ import android.text.style.ForegroundColorSpan ...@@ -11,6 +11,7 @@ import android.text.style.ForegroundColorSpan
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.base.pdfreaderallpdfreader.R import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.ads.AdmobHelper.initAdmobAd import com.base.pdfreaderallpdfreader.ads.AdmobHelper.initAdmobAd
import com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils import com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils
...@@ -26,10 +27,14 @@ import com.base.pdfreaderallpdfreader.helper.UmpUtils ...@@ -26,10 +27,14 @@ import com.base.pdfreaderallpdfreader.helper.UmpUtils
import com.base.pdfreaderallpdfreader.helper.UmpUtils.requestUMP import com.base.pdfreaderallpdfreader.helper.UmpUtils.requestUMP
import com.base.pdfreaderallpdfreader.helper.UmpUtils.umpCalled import com.base.pdfreaderallpdfreader.helper.UmpUtils.umpCalled
import com.base.pdfreaderallpdfreader.helper.UmpUtils.umpCanAd import com.base.pdfreaderallpdfreader.helper.UmpUtils.umpCanAd
import com.base.pdfreaderallpdfreader.helper.WeatherUtils
import com.base.pdfreaderallpdfreader.ui.language.LanguageActivity import com.base.pdfreaderallpdfreader.ui.language.LanguageActivity
import com.base.pdfreaderallpdfreader.ui.main.MainActivity import com.base.pdfreaderallpdfreader.ui.main.MainActivity
import com.base.pdfreaderallpdfreader.utils.BarUtils import com.base.pdfreaderallpdfreader.utils.BarUtils
import com.base.pdfreaderallpdfreader.utils.LogEx import com.base.pdfreaderallpdfreader.utils.LogEx
import com.base.pdfreaderallpdfreader.utils.MyAnimationUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.util.Calendar import java.util.Calendar
import java.util.Locale import java.util.Locale
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
...@@ -55,6 +60,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -55,6 +60,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}.launch( registerForActivityResult(ActivityResultContracts.RequestPermission()) {}.launch(
Manifest.permission.POST_NOTIFICATIONS Manifest.permission.POST_NOTIFICATIONS
) )
} else {
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}.launch(
Manifest.permission.POST_NOTIFICATIONS
)
} }
actionId = intent.extras?.getString("actionId") ?: "" actionId = intent.extras?.getString("actionId") ?: ""
...@@ -62,15 +71,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -62,15 +71,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
if (actionId.isNotEmpty()) { if (actionId.isNotEmpty()) {
NotificationHoverUtils.stopNotificationHandler() NotificationHoverUtils.stopNotificationHandler()
} }
initWeatherUI() initUI()
val text = "All PDF Reader" startWeatherAnimation()
val spannableString = SpannableString(text)
spannableString.setSpan(
ForegroundColorSpan(Color.parseColor("#E20001")),
4, text.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
binding.tvSpanner.text = spannableString
val isHotLaunch = intent.extras?.getBoolean("isHotLaunch") ?: false val isHotLaunch = intent.extras?.getBoolean("isHotLaunch") ?: false
ifAgreePrivacy = true ifAgreePrivacy = true
...@@ -107,7 +109,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -107,7 +109,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
private fun initWeatherUI() { private fun initUI() {
// 获取当前日期 // 获取当前日期
val calendar: Calendar = Calendar.getInstance() val calendar: Calendar = Calendar.getInstance()
val month: Int = calendar.get(Calendar.MONTH) val month: Int = calendar.get(Calendar.MONTH)
...@@ -144,6 +146,46 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -144,6 +146,46 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
else -> "Unknown" else -> "Unknown"
} }
binding.tvMonthDay.text = "$monthName $dayOfMonth" binding.tvMonthDay.text = "$monthName $dayOfMonth"
val text = "All PDF Reader"
val spannableString = SpannableString(text)
spannableString.setSpan(
ForegroundColorSpan(Color.parseColor("#E20001")),
4, text.length,
Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
binding.tvSpanner.text = spannableString
}
@SuppressLint("SetTextI18n")
private fun startWeatherAnimation() = lifecycleScope.launch(Dispatchers.IO) {
if (!WeatherUtils.hasWeatherDataToday()) {
WeatherUtils.getWeatherData()
}
val weatherCityBean = WeatherUtils.getWeatherEntity()
val weather = weatherCityBean?.list?.random()
LogEx.logDebug(TAG, "weather=$weather")
if (weather != null) {
val icon = when (weather.iconDay) {
"Sunny day" -> R.mipmap.d_qing
"Cloudy day" -> R.mipmap.d_yin
"Rainy day" -> R.mipmap.d_dayu
"Snowy day" -> R.mipmap.d_xiaxue
"Greasy day" -> R.mipmap.d_wumaishachengbao
"Unknown" -> R.mipmap.d_qing
else -> R.mipmap.d_qing
}
launch(Dispatchers.Main) {
binding.ivWeather.setImageResource(icon)
binding.tvWendu.text = weather.tempMin + "℃" + " / " + weather.tempMax + "℃"
MyAnimationUtils.startAlphaAnimation(binding.ivWeather, 400, null) {
MyAnimationUtils.startAlphaAnimation(binding.tvWendu, 400, null) {
}
}
}
}
} }
private fun showAd() { private fun showAd() {
......
package com.base.pdfreaderallpdfreader.utils;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.view.View;
public class MyAnimationUtils {
/**
* 开始透明度渐变动画,并设置动画结束时的回调。
*
* @param view 要应用动画的视图。
* @param duration 动画持续时间(毫秒)。
* @param endCallback 动画结束时调用的回调接口。
*/
public static void startAlphaAnimation(final View view,
long duration,
final AnimationStartCallback startCallback,
final AnimationEndCallback endCallback) {
// 确保视图初始透明度为0
view.setAlpha(0f);
// 创建透明度从0到1的动画
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);
alphaAnimator.setDuration(duration);
// 设置动画监听器,以便在动画结束时调用回调
alphaAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
if (startCallback != null) {
startCallback.onAnimationStart();
}
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
// 调用回调接口的onAnimationEnd方法
if (endCallback != null) {
endCallback.onAnimationEnd();
}
}
});
// 启动动画
alphaAnimator.start();
}
/**
* 动画结束时的回调接口。
*/
public interface AnimationEndCallback {
void onAnimationEnd();
}
/**
* 动画结束时的回调接口。
*/
public interface AnimationStartCallback {
void onAnimationStart();
}
}
\ No newline at end of file
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/no_recent" android:text="@string/no_bookmark_file"
android:textColor="#2A2A2A" android:textColor="#2A2A2A"
android:textSize="15sp" android:textSize="15sp"
android:textStyle="bold" /> android:textStyle="bold" />
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
android:paddingVertical="8dp" android:paddingVertical="8dp"
tools:ignore="DisableBaselineAlignment"> tools:ignore="DisableBaselineAlignment">
<FrameLayout <FrameLayout
android:id="@+id/fl_1" android:id="@+id/fl_1"
android:layout_width="0dp" android:layout_width="0dp"
...@@ -15,13 +14,12 @@ ...@@ -15,13 +14,12 @@
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_weight="1"> android:layout_weight="1">
<!-- todo-->
<!-- android:src="@mipmap/moren_logo"-->
<ImageView <ImageView
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@mipmap/logo_corners"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</FrameLayout> </FrameLayout>
...@@ -34,12 +32,12 @@ ...@@ -34,12 +32,12 @@
android:orientation="vertical" android:orientation="vertical"
tools:ignore="UseCompoundDrawables"> tools:ignore="UseCompoundDrawables">
<!-- todo-->
<!-- android:src="@mipmap/doc_notification"-->
<ImageView <ImageView
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/pdf_document"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
...@@ -63,12 +61,11 @@ ...@@ -63,12 +61,11 @@
android:orientation="vertical" android:orientation="vertical"
tools:ignore="UseCompoundDrawables"> tools:ignore="UseCompoundDrawables">
<!-- todo-->
<!-- android:src="@mipmap/bookmark_notification"-->
<ImageView <ImageView
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/pdf_bookmark"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
...@@ -93,12 +90,11 @@ ...@@ -93,12 +90,11 @@
tools:ignore="UseCompoundDrawables"> tools:ignore="UseCompoundDrawables">
<!-- todo-->
<!-- android:src="@mipmap/image_notification"-->
<ImageView <ImageView
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@mipmap/pdf_image"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
......
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">Pdf Reader All Pdf Reader</string> <string name="app_name">Pdf Reader All Pdf Reader</string>
<string name="facebook_app_id" tools:ignore="MissingTranslation">939938294571154</string> <string name="facebook_app_id" tools:ignore="MissingTranslation">567688245803774</string>
<!-- 通知文本--> <!-- 通知文本-->
...@@ -98,6 +98,6 @@ ...@@ -98,6 +98,6 @@
<string name="send">Send</string> <string name="send">Send</string>
<string name="pdf_reader">PDF Reader</string> <string name="pdf_reader">PDF Reader</string>
<string name="lock_pdf">Lock Pdf</string> <string name="lock_pdf">Lock Pdf</string>
<string name="no_bookmark_file">No Bookmark File</string>
</resources> </resources>
\ 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