Commit cc472e48 authored by wanglei's avatar wanglei

...

parent b300b351
......@@ -8,7 +8,7 @@ import javax.crypto.spec.SecretKeySpec
object AESHelper {
private const val aesKey = "7vwdrlk6bp8rihe4"
private const val aesKey = "e7t5eq1u3m8nwo59"
private val cipher by lazy {
Cipher.getInstance("AES/GCM/NoPadding")
......
......@@ -9,7 +9,7 @@ object ConfigHelper {
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"
......
......@@ -32,15 +32,14 @@ import com.base.pdfreaderallpdfreader.utils.LogEx
class StayJobService : JobService() {
init {
val builder = Configuration.Builder()
builder.setJobSchedulerJobIdRange(0, 1000)
}
private val TAG = "StayNotificationService"
val channelName = "PDF Reader Foreground Service Channel"
val channelId = "PDF_Reader_Service_Id"
val NOTIFICATION_PERMANENT_ID = 186
private val TAG = "StayJobService"
private val channelName = "PDF Reader Foreground Service Channel"
private val channelId = "PDF_Reader_Service_Id"
private val NOTIFICATION_PERMANENT_ID = 186
companion object {
......@@ -132,6 +131,15 @@ class StayJobService : JobService() {
isRunning = true
}
private fun notifyForeground() {
val notificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(
NOTIFICATION_PERMANENT_ID,
createPermanentNotification(applicationContext)
)
}
override fun onDestroy() {
isRunning = false
......@@ -139,12 +147,11 @@ class StayJobService : JobService() {
}
override fun onCreate() {
LogEx.logDebug(TAG, "onCreate isRunning=$isRunning")
if (!isRunning) {
startForeground()
isRunning = true
Timer {
startForeground()
}.apply { start() }
Timer().start()
}
super.onCreate()
}
......@@ -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 onFinish() {
Timer {
block()
}.apply { start() }
notifyForeground()
Timer().start()
}
}
}
......@@ -11,6 +11,7 @@ import android.text.style.ForegroundColorSpan
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.base.pdfreaderallpdfreader.R
import com.base.pdfreaderallpdfreader.ads.AdmobHelper.initAdmobAd
import com.base.pdfreaderallpdfreader.ads.admob.AdmobInterstitialUtils
......@@ -26,10 +27,14 @@ import com.base.pdfreaderallpdfreader.helper.UmpUtils
import com.base.pdfreaderallpdfreader.helper.UmpUtils.requestUMP
import com.base.pdfreaderallpdfreader.helper.UmpUtils.umpCalled
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.main.MainActivity
import com.base.pdfreaderallpdfreader.utils.BarUtils
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.Locale
import java.util.concurrent.atomic.AtomicBoolean
......@@ -55,6 +60,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}.launch(
Manifest.permission.POST_NOTIFICATIONS
)
} else {
registerForActivityResult(ActivityResultContracts.RequestPermission()) {}.launch(
Manifest.permission.POST_NOTIFICATIONS
)
}
actionId = intent.extras?.getString("actionId") ?: ""
......@@ -62,15 +71,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
if (actionId.isNotEmpty()) {
NotificationHoverUtils.stopNotificationHandler()
}
initWeatherUI()
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
initUI()
startWeatherAnimation()
val isHotLaunch = intent.extras?.getBoolean("isHotLaunch") ?: false
ifAgreePrivacy = true
......@@ -107,7 +109,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
}
@SuppressLint("SetTextI18n")
private fun initWeatherUI() {
private fun initUI() {
// 获取当前日期
val calendar: Calendar = Calendar.getInstance()
val month: Int = calendar.get(Calendar.MONTH)
......@@ -144,6 +146,46 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
else -> "Unknown"
}
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() {
......
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 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/no_recent"
android:text="@string/no_bookmark_file"
android:textColor="#2A2A2A"
android:textSize="15sp"
android:textStyle="bold" />
......
......@@ -7,7 +7,6 @@
android:paddingVertical="8dp"
tools:ignore="DisableBaselineAlignment">
<FrameLayout
android:id="@+id/fl_1"
android:layout_width="0dp"
......@@ -15,13 +14,12 @@
android:layout_gravity="center_vertical"
android:layout_weight="1">
<!-- todo-->
<!-- android:src="@mipmap/moren_logo"-->
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@mipmap/logo_corners"
tools:ignore="ContentDescription" />
</FrameLayout>
......@@ -34,12 +32,12 @@
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<!-- todo-->
<!-- android:src="@mipmap/doc_notification"-->
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:src="@mipmap/pdf_document"
tools:ignore="ContentDescription" />
<TextView
......@@ -63,12 +61,11 @@
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<!-- todo-->
<!-- android:src="@mipmap/bookmark_notification"-->
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:src="@mipmap/pdf_bookmark"
tools:ignore="ContentDescription" />
<TextView
......@@ -93,12 +90,11 @@
tools:ignore="UseCompoundDrawables">
<!-- todo-->
<!-- android:src="@mipmap/image_notification"-->
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:src="@mipmap/pdf_image"
tools:ignore="ContentDescription" />
<TextView
......
<resources xmlns:tools="http://schemas.android.com/tools">
<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 @@
<string name="send">Send</string>
<string name="pdf_reader">PDF Reader</string>
<string name="lock_pdf">Lock Pdf</string>
<string name="no_bookmark_file">No Bookmark File</string>
</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