修复bug、优化体验

pull/5/head
fengyuecanzhu 4 years ago
parent 6d770fa296
commit 103469ea19
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. 18
      app/release/output-metadata.json
  3. 9
      app/src/main/assets/updatelog.fy
  4. 9
      app/src/main/java/xyz/fycz/myreader/application/App.java
  5. 80
      app/src/main/java/xyz/fycz/myreader/ui/activity/SplashActivity.java
  6. 3
      app/src/main/java/xyz/fycz/myreader/ui/dialog/MyAlertDialog.java
  7. 7
      app/src/main/java/xyz/fycz/myreader/util/utils/AdUtils.java
  8. 16
      app/src/main/res/layout/activity_ad_setting.xml
  9. 42
      app/src/main/res/layout/activity_splash.xml
  10. 1
      app/src/main/res/values/strings.xml
  11. 4
      app/version_code.properties

@ -1,18 +0,0 @@
{
"version": 2,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "xyz.fycz.myreader",
"variantName": "processReleaseResources",
"elements": [
{
"type": "SINGLE",
"filters": [],
"versionCode": 194,
"versionName": "1.9.4",
"outputFile": "风月读书v1.9.4.apk"
}
]
}

@ -1,3 +1,12 @@
2021.05.09
风月读书v1.9.5
更新内容:
1、优化开屏广告体验
2、开屏右下角无广告新增跳过按钮,防止点击跳过时误触广告,广告加载时间过久也可直接跳过
3、修复概率性启动闪退bug
4、修复书源:九桃小说
5、新增备用更新通道
2021.04.25 2021.04.25
风月读书v1.9.4 风月读书v1.9.4
更新内容: 更新内容:

@ -311,10 +311,13 @@ public class App extends Application {
Document doc = Jsoup.parse(html); Document doc = Jsoup.parse(html);
String content = doc.getElementsByClass("ql-editor").text(); String content = doc.getElementsByClass("ql-editor").text();
if (StringHelper.isEmpty(content)) { if (StringHelper.isEmpty(content)) {
if (isManualCheck || NetworkUtils.isNetWorkAvailable()) { content = OkHttpUtils.getUpdateInfo();
ToastUtils.showError("检查更新失败!"); if (StringHelper.isEmpty(content)) {
if (isManualCheck || NetworkUtils.isNetWorkAvailable()) {
ToastUtils.showError("检查更新失败!");
}
return;
} }
return;
} }
String[] contents = content.split(";"); String[] contents = content.split(";");
int newestVersion = 0; int newestVersion = 0;

@ -59,11 +59,12 @@ public class SplashActivity extends BaseActivity {
private int adTimes; private int adTimes;
private PermissionsChecker mPermissionsChecker; private PermissionsChecker mPermissionsChecker;
private Thread myThread = new Thread() {//创建子线程 //创建子线程
private Thread start = new Thread() {
@Override @Override
public void run() { public void run() {
try { try {
sleep(WAIT_INTERVAL);//使程序休眠 Thread.sleep(WAIT_INTERVAL);//使程序休眠
Intent it = new Intent(SplashActivity.this, MainActivity.class);//启动MainActivity Intent it = new Intent(SplashActivity.this, MainActivity.class);//启动MainActivity
it.putExtra("startFromSplash", true); it.putExtra("startFromSplash", true);
startActivity(it); startActivity(it);
@ -74,24 +75,23 @@ public class SplashActivity extends BaseActivity {
} }
}; };
private Thread countTime = new Thread(){ private Thread countTime = new Thread() {
@Override @Override
public void run() { public void run() {
for (int i = 0; i < 8; i++) { for (int i = 0; i < 5; i++) {
int time = 5 - i;
App.runOnUiThread(() -> binding.tvSkip.setText(getString(R.string.skip_ad, time)));
try { try {
Thread.sleep(1000); Thread.sleep(1000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
if (!App.isDestroy(SplashActivity.this)){ WAIT_INTERVAL = 0;
WAIT_INTERVAL = 0; startNormal();
startNormal();
}
} }
}; };
@Override @Override
protected void bindView() { protected void bindView() {
binding = ActivitySplashBinding.inflate(getLayoutInflater()); binding = ActivitySplashBinding.inflate(getLayoutInflater());
@ -131,13 +131,21 @@ public class SplashActivity extends BaseActivity {
adTimes = spu.getInt("curAdTimes", 3); adTimes = spu.getInt("curAdTimes", 3);
String[] splashAdCounts = splashAdCount.split(":"); String[] splashAdCounts = splashAdCount.split(":");
String today = DateHelper.getYearMonthDay1(); String today = DateHelper.getYearMonthDay1();
if (today.equals(splashAdCounts[0])){ if (today.equals(splashAdCounts[0])) {
todayAdCount = Integer.parseInt(splashAdCounts[1]); todayAdCount = Integer.parseInt(splashAdCounts[1]);
}else { } else {
todayAdCount = 0; todayAdCount = 0;
} }
} }
@Override
protected void initClick() {
binding.tvSkip.setOnClickListener(v -> {
WAIT_INTERVAL = 0;
startNormal();
});
}
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
@ -147,7 +155,7 @@ public class SplashActivity extends BaseActivity {
} }
private void start() { private void start() {
if (adTimes >= 0 && todayAdCount >= adTimes){ if (adTimes >= 0 && todayAdCount >= adTimes) {
startNoAd(); startNoAd();
} else { } else {
AdUtils.checkHasAd() AdUtils.checkHasAd()
@ -173,7 +181,7 @@ public class SplashActivity extends BaseActivity {
} }
} }
private void startNoAd(){ private void startNoAd() {
Animation inAni = AnimationUtils.loadAnimation(SplashActivity.this, R.anim.fade_in); Animation inAni = AnimationUtils.loadAnimation(SplashActivity.this, R.anim.fade_in);
binding.ivSplash.setVisibility(View.VISIBLE); binding.ivSplash.setVisibility(View.VISIBLE);
binding.ivSplash.startAnimation(inAni); binding.ivSplash.startAnimation(inAni);
@ -184,18 +192,26 @@ public class SplashActivity extends BaseActivity {
} }
private void startNormal() { private void startNormal() {
if (BookGroupService.getInstance().curGroupIsPrivate()) { if (!App.isDestroy(this)) {
App.runOnUiThread(() -> { if (BookGroupService.getInstance().curGroupIsPrivate()) {
MyAlertDialog.showPrivateVerifyDia(SplashActivity.this, needGoTo -> { App.runOnUiThread(() -> {
myThread.start(); MyAlertDialog.showPrivateVerifyDia(SplashActivity.this, needGoTo -> {
}, () -> { if (!start.isAlive()) {
SharedPreUtils.getInstance().putString(SplashActivity.this.getString(R.string.curBookGroupId), ""); start.start();
SharedPreUtils.getInstance().putString(SplashActivity.this.getString(R.string.curBookGroupName), ""); }
myThread.start(); }, () -> {
SharedPreUtils.getInstance().putString(SplashActivity.this.getString(R.string.curBookGroupId), "");
SharedPreUtils.getInstance().putString(SplashActivity.this.getString(R.string.curBookGroupName), "");
if (!start.isAlive()) {
start.start();
}
});
}); });
}); } else {
} else { if (!start.isAlive()) {
myThread.start(); start.start();
}
}
} }
} }
@ -206,7 +222,7 @@ public class SplashActivity extends BaseActivity {
@Override @Override
public void show() { public void show() {
Log.d(TAG, "广告展示成功"); Log.d(TAG, "广告展示成功");
AdUtils.adRecord("splash","adShow"); AdUtils.adRecord("splash", "adShow");
countTodayAd(); countTodayAd();
countTime.start(); countTime.start();
} }
@ -215,15 +231,14 @@ public class SplashActivity extends BaseActivity {
@Override @Override
public void click() { public void click() {
Log.d(TAG, "广告被点击"); Log.d(TAG, "广告被点击");
AdUtils.adRecord("splash","adClick"); AdUtils.adRecord("splash", "adClick");
} }
// 展示出错时可读取 msg 中的错误信息 // 展示出错时可读取 msg 中的错误信息
@Override @Override
public void error(String msg) { public void error(String msg) {
WAIT_INTERVAL = 1500; WAIT_INTERVAL = 1500;
if (!App.isDestroy(SplashActivity.this)) startNormal();
startNormal();
Log.e(TAG, msg); Log.e(TAG, msg);
//ToastUtils.showError(msg); //ToastUtils.showError(msg);
} }
@ -232,16 +247,15 @@ public class SplashActivity extends BaseActivity {
@Override @Override
public void finishCountdown() { public void finishCountdown() {
Log.d(TAG, "倒计时结束或用户主动点击跳过按钮"); Log.d(TAG, "倒计时结束或用户主动点击跳过按钮");
AdUtils.adRecord("splash","adFinishCount"); WAIT_INTERVAL = 0;
if (!App.isDestroy(SplashActivity.this)) AdUtils.adRecord("splash", "adFinishCount");
startNormal(); startNormal();
} }
}); });
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
WAIT_INTERVAL = 1500; WAIT_INTERVAL = 1500;
if (!App.isDestroy(SplashActivity.this)) startNormal();
startNormal();
} }
} }

@ -153,7 +153,8 @@ public class MyAlertDialog {
onCancel.cancel(); onCancel.cancel();
} }
}); });
fd.show(activity.getSupportFragmentManager(), "fingerprint"); if (!App.isDestroy(activity))
fd.show(activity.getSupportFragmentManager(), "fingerprint");
} else { } else {
showPrivatePwdInputDia(activity, onVerify, onCancel); showPrivatePwdInputDia(activity, onVerify, onCancel);
} }

@ -2,6 +2,7 @@ package xyz.fycz.myreader.util.utils;
import android.util.Log; import android.util.Log;
import com.weaction.ddsdk.base.DdSdkHelper; import com.weaction.ddsdk.base.DdSdkHelper;
import org.json.JSONArray; import org.json.JSONArray;
@ -58,7 +59,7 @@ public class AdUtils {
public static void adRecord(String type, String name) { public static void adRecord(String type, String name) {
Single.create((SingleOnSubscribe<Boolean>) emitter -> { Single.create((SingleOnSubscribe<Boolean>) emitter -> {
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
String body = "adType=" + type + "&type=" + name + UserService.makeSignalParam(); String body = "adType=" + type + "&type=" + name + UserService.makeSignalParam();
RequestBody requestBody = RequestBody.create(mediaType, body); RequestBody requestBody = RequestBody.create(mediaType, body);
OkHttpUtils.getHtml(URLCONST.AD_URL, requestBody, "UTF-8"); OkHttpUtils.getHtml(URLCONST.AD_URL, requestBody, "UTF-8");
emitter.onSuccess(true); emitter.onSuccess(true);
@ -121,8 +122,8 @@ public class AdUtils {
return adTimes < 0 || todayAdCount < adTimes || bookDetailAd; return adTimes < 0 || todayAdCount < adTimes || bookDetailAd;
} }
public static void initAd(){ public static void initAd() {
if (!hasInitAd){ if (!hasInitAd) {
hasInitAd = true; hasInitAd = true;
DdSdkHelper.init("1234", "216", "51716a16fbdf50905704b6575b1b3b60", DdSdkHelper.init("1234", "216", "51716a16fbdf50905704b6575b1b3b60",
"142364", "35ce0efe5f3cc960b116db227498e238", "142364", "35ce0efe5f3cc960b116db227498e238",

@ -129,6 +129,22 @@
android:clickable="false" android:clickable="false"
android:longClickable="false" /> android:longClickable="false" />
</RelativeLayout> </RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="25dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerInParent="true"
android:text="@string/book_detail_ad"
android:textColor="@color/textPrimary" />
</RelativeLayout>
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout

@ -1,49 +1,71 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_splash" android:id="@+id/iv_splash"
android:visibility="gone"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scaleType="fitXY" android:scaleType="fitXY"
app:srcCompat="@drawable/start"/> android:visibility="gone"
app:srcCompat="@drawable/start" />
<LinearLayout <LinearLayout
android:id="@+id/ll_ad" android:id="@+id/ll_ad"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout
android:id="@+id/fl_ad" android:id="@+id/fl_ad"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1"/> android:layout_weight="1" />
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="8"> android:layout_weight="8">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:orientation="horizontal"> android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
app:srcCompat="@mipmap/ic_launcher"/> app:srcCompat="@mipmap/ic_launcher" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:gravity="center"
android:text="@string/app_name"
android:textColor="@color/textPrimary" android:textColor="@color/textPrimary"
android:textSize="@dimen/text_medium_size" android:textSize="@dimen/text_medium_size" />
android:text="@string/app_name"/>
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/tv_skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:background="@drawable/setting_btn_bg"
android:gravity="center"
android:paddingVertical="5dp"
android:paddingHorizontal="8dp"
android:text="跳过"
android:textColor="@color/textSecondary"
android:textSize="@dimen/text_normal_size" />
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>

@ -477,6 +477,7 @@
<string name="book_name">书名</string> <string name="book_name">书名</string>
<string name="select_local_pic">选择本地图片</string> <string name="select_local_pic">选择本地图片</string>
<string name="menu_edit">编辑书籍</string> <string name="menu_edit">编辑书籍</string>
<string name="skip_ad">跳过 | %ds</string>
<string-array name="reset_screen_time"> <string-array name="reset_screen_time">
<item>跟随系统</item> <item>跟随系统</item>

@ -1,2 +1,2 @@
#Mon May 03 14:54:05 CST 2021 #Sun May 09 12:34:16 CST 2021
VERSION_CODE=194 VERSION_CODE=195

Loading…
Cancel
Save