pda/zhuike/src/main/java/com/novelbook/android/BookActivity.java

756 lines
24 KiB
Java
Raw Normal View History

2019-04-02 17:41:53 +08:00
package com.novelbook.android;
2019-04-05 23:59:31 +08:00
import android.Manifest;
2019-04-02 17:41:53 +08:00
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
2019-04-05 23:59:31 +08:00
import android.content.Context;
2019-04-02 17:41:53 +08:00
import android.content.DialogInterface;
2019-04-08 23:16:20 +08:00
import android.content.Intent;
import android.content.IntentFilter;
2019-04-23 22:45:08 +08:00
import android.graphics.pdf.PdfDocument;
2019-04-12 23:02:31 +08:00
import android.net.Uri;
2019-04-05 23:59:31 +08:00
import android.os.Build;
import android.os.Handler;
import android.os.Message;
2019-04-12 23:02:31 +08:00
import android.support.v7.widget.GridLayoutManager;
2019-04-02 17:41:53 +08:00
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
2019-04-05 23:59:31 +08:00
import android.text.TextUtils;
2019-04-03 16:21:00 +08:00
import android.util.Log;
2019-04-12 23:02:31 +08:00
import android.view.Gravity;
2019-04-02 17:41:53 +08:00
import android.view.MenuItem;
import android.view.View;
2019-04-05 23:59:31 +08:00
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
2019-04-02 17:41:53 +08:00
import android.widget.Toast;
2019-04-05 23:59:31 +08:00
import com.bumptech.glide.Glide;
2019-04-03 23:29:58 +08:00
import com.google.gson.Gson;
2019-04-02 17:41:53 +08:00
import com.novelbook.android.adapter.BookListAdapter;
2019-04-05 23:59:31 +08:00
import com.novelbook.android.bean.NovelSites;
2019-04-03 18:09:00 +08:00
import com.novelbook.android.db.Chapter;
2019-04-08 23:16:20 +08:00
import com.novelbook.android.db.DownloadTask;
2019-04-03 16:21:00 +08:00
import com.novelbook.android.db.Novel;
2019-04-05 23:59:31 +08:00
import com.novelbook.android.filechooser.FileChooserActivity;
2019-04-03 23:29:58 +08:00
import com.novelbook.android.netsubscribe.BookSubscribe;
2019-04-02 17:41:53 +08:00
import com.novelbook.android.netsubscribe.MovieSubscribe;
2019-04-03 16:21:00 +08:00
import com.novelbook.android.netutils.HttpMethods;
2019-04-10 22:19:06 +08:00
import com.novelbook.android.netutils.NetUtil;
2019-04-02 17:41:53 +08:00
import com.novelbook.android.netutils.OnSuccessAndFaultListener;
import com.novelbook.android.netutils.OnSuccessAndFaultSub;
2019-04-08 23:16:20 +08:00
import com.novelbook.android.service.ChapterDownloadSvrc;
import com.novelbook.android.service.MyIntentService;
2019-04-08 23:16:20 +08:00
import com.novelbook.android.service.ServiceDownload;
2019-04-03 18:09:00 +08:00
import com.novelbook.android.utils.BookUtil;
2019-04-12 23:02:31 +08:00
import com.novelbook.android.utils.CommonUtil;
import com.novelbook.android.utils.Constants;
import com.novelbook.android.utils.GaoSiTransForm;
2019-04-05 23:59:31 +08:00
import com.novelbook.android.utils.GsonUtil;
2019-04-11 18:05:41 +08:00
import com.novelbook.android.utils.ImageUtil;
2019-04-06 23:04:42 +08:00
import com.novelbook.android.utils.MyImageLoader;
2019-04-03 16:21:00 +08:00
import com.novelbook.android.utils.NovelParseUtil;
2019-04-05 23:59:31 +08:00
import com.novelbook.android.utils.PageFactory;
import com.youth.banner.loader.ImageLoader;
2019-04-02 17:41:53 +08:00
2019-04-03 16:21:00 +08:00
import org.json.JSONException;
import org.json.JSONObject;
2019-04-02 17:41:53 +08:00
import org.litepal.LitePal;
import java.io.File;
2019-04-03 16:21:00 +08:00
import java.io.IOException;
2019-04-12 23:02:31 +08:00
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
2019-04-03 23:29:58 +08:00
import java.time.LocalDateTime;
2019-04-03 18:09:00 +08:00
import java.util.ArrayList;
2019-04-03 23:29:58 +08:00
import java.util.Date;
2019-04-02 17:41:53 +08:00
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
2019-04-12 23:02:31 +08:00
import jp.wasabeef.glide.transformations.BlurTransformation;
2019-04-03 16:21:00 +08:00
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
2019-04-02 17:41:53 +08:00
2019-04-05 23:59:31 +08:00
import static com.novelbook.android.FileActivity.EXTERNAL_STORAGE_REQ_CODE;
2019-04-02 17:41:53 +08:00
public class BookActivity extends Activity_base {
2019-04-03 16:21:00 +08:00
2019-04-05 23:59:31 +08:00
private PageFactory pageFactory;
2019-04-10 22:19:06 +08:00
int novelId = 0;
// String muluUrl = "https://www.qu.la/book/390/";
2019-04-03 23:29:58 +08:00
private Novel mNovel;
2019-04-05 23:59:31 +08:00
private Chapter mChapter;
2019-04-03 16:21:00 +08:00
static String TAG = BookActivity.class.getSimpleName();
2019-04-12 23:02:31 +08:00
BookListAdapter mAdapterAuthor;
2019-04-02 17:41:53 +08:00
// private BookListAdapter mAdapter;
2019-04-12 23:02:31 +08:00
private List<Novel> mDataAuthor;
BookListAdapter mAdapterRelated;
// private BookListAdapter mAdapter;
private List<Novel> mDataRelated;
;
2019-04-12 23:02:31 +08:00
//private Gson gson = new Gson();
private List<Chapter> mChapters = new ArrayList<>();
2019-04-12 23:02:31 +08:00
// @BindView(R.id.toolbar)
// Toolbar toolbar;
2019-04-02 17:41:53 +08:00
@BindView(R.id.rvBooklist)
2019-04-12 23:02:31 +08:00
RecyclerView rvBooklistAuthor;
2019-04-05 23:59:31 +08:00
@BindView(R.id.btnShelf)
Button btnShelf;
@BindView(R.id.imageView)
ImageView imageView;
@BindView(R.id.title)
TextView txtTitle;
@BindView(R.id.desc)
TextView txtDesc;
@BindView(R.id.author)
TextView txtAuth;
@BindView(R.id.category)
TextView txtCategory;
@BindView(R.id.txtDesc2)
2019-04-12 23:02:31 +08:00
com.timqi.collapsibletextview.CollapsibleTextView txtDesc2;
2019-04-05 23:59:31 +08:00
@BindView(R.id.txtLatestCate)
TextView txtLatestCate;
@BindView(R.id.btnCacheBook)
Button btnCach;
2019-04-12 23:02:31 +08:00
@BindView(R.id.rvBooklistRelated)
RecyclerView rvBooklistRelated;
Intent serviceIntent ;
2019-04-12 23:02:31 +08:00
@BindView(R.id.imageViewHead)
ImageView imageViewHead;
@BindView(R.id.tvAuthorMore)
TextView tvAuthorMore;
@BindView(R.id.tvTonglei)
TextView tvTonglei;
@BindView(R.id.txtLatestUpdate)
TextView tvLastUpdate;
2019-04-16 23:11:00 +08:00
@BindView(R.id.progress)
TextView tvProgress;
@BindView(R.id.smallCate)
TextView tvSmallcate;
2019-04-14 23:17:31 +08:00
public Intent getSvrIntent(){
if(serviceIntent ==null){
serviceIntent= new Intent(this, ServiceDownload.class);
}
return serviceIntent;
}
2019-04-02 17:41:53 +08:00
@Override
public int getLayoutRes() {
return R.layout.activity_book;
}
@Override
protected void initViews() {
2019-04-12 23:02:31 +08:00
rvBooklistRelated.setVisibility(View.GONE);
rvBooklistAuthor.setVisibility(View.GONE);
tvTonglei.setVisibility(View.GONE);
tvAuthorMore.setText( "");
2019-04-02 17:41:53 +08:00
}
@Override
protected void setupToolbar() {
2019-04-02 17:41:53 +08:00
super.setupToolbar();
2019-04-14 23:17:31 +08:00
// toolbar.setTitleMarginBottom(1);
// toolbar.setTitleTextAppearance(this,R.style.TitleText);
2019-04-02 17:41:53 +08:00
toolbar.inflateMenu(R.menu.menu_book);//设置右上角的填充菜单
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int menuItemId = item.getItemId();
if (menuItemId == R.id.menuShelf) {
2019-04-14 23:17:31 +08:00
Toast.makeText(BookActivity.this,"show book shelf",Toast.LENGTH_LONG);
2019-04-02 17:41:53 +08:00
}
return true;
}
});
}
2019-04-10 22:19:06 +08:00
public final static String EXTRA_BOOK ="book";
2019-04-02 17:41:53 +08:00
@Override
protected void setTitle() {
2019-04-06 23:04:42 +08:00
2019-04-10 22:19:06 +08:00
mNovel = (Novel) getIntent().getSerializableExtra(EXTRA_BOOK);
novelId = mNovel.getNovelId();
this.setTitle(mNovel.getName());
2019-04-06 23:04:42 +08:00
2019-04-02 17:41:53 +08:00
}
@Override
protected void initData() {
initiDownloadReceiver();
2019-04-05 23:59:31 +08:00
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkPermission(BookActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, EXTERNAL_STORAGE_REQ_CODE, "添加图书需要此权限,请允许");
2019-04-05 23:59:31 +08:00
}
2019-04-25 02:01:18 +08:00
pageFactory = PageFactory.getInstance(getApplicationContext());
2019-04-14 23:17:31 +08:00
// pageFactory.clear();
2019-04-05 23:59:31 +08:00
setBookInfo();//set title ,data from novel list
2019-04-14 23:17:31 +08:00
NetUtil.cancelRequest(mNovel.getNovelId());
2019-04-10 22:19:06 +08:00
getBookInfo();
2019-04-12 23:02:31 +08:00
2019-04-02 17:41:53 +08:00
}
2019-04-10 22:19:06 +08:00
/**
* 设置book list 传过来的基本信息
*/
2019-04-05 23:59:31 +08:00
private void setBookInfo() {
2019-04-10 22:19:06 +08:00
2019-04-05 23:59:31 +08:00
}
2019-04-12 23:02:31 +08:00
private void setNovelsSameAuthor(){
if(mDataAuthor!=null && mDataAuthor.size() >0){
tvAuthorMore.setText(mNovel.getAuthor()+ " 还写过");
} else{
return;
}
rvBooklistAuthor.setVisibility(View.VISIBLE);
mAdapterAuthor = getBookListAdapter(mDataAuthor,R.layout.recycle_list_item_horizon);
2019-04-16 23:11:00 +08:00
2019-04-12 23:02:31 +08:00
rvBooklistAuthor.setLayoutManager(new LinearLayoutManager(this));
rvBooklistAuthor.setAdapter(mAdapterAuthor);
}
private void setNovelsRelated(){
if(mDataRelated!=null && mDataRelated.size() >0){
tvTonglei.setVisibility(View.VISIBLE);
2019-04-11 18:05:41 +08:00
2019-04-12 23:02:31 +08:00
}else
{
return;
}
rvBooklistRelated.setVisibility(View.VISIBLE);
mAdapterRelated = getBookListAdapter(mDataRelated,R.layout.recycle_list_item);
2019-04-16 23:11:00 +08:00
2019-04-12 23:02:31 +08:00
rvBooklistRelated.setLayoutManager(new GridLayoutManager(this, Constants.NOVEL_SPAN_CNT));
2019-04-12 23:02:31 +08:00
rvBooklistRelated.setAdapter(mAdapterRelated);
}
2019-04-10 22:19:06 +08:00
/**
* 设置服务器传来的详细信息
*/
public void setBookDetailInfo() {
2019-04-05 23:59:31 +08:00
setShelfButtonText();
2019-04-10 22:19:06 +08:00
//this.setTitle(mNovel.getName());//why not apply
2019-04-05 23:59:31 +08:00
this.txtAuth.setText(mNovel.getAuthor());
this.txtCategory.setText(mNovel.getNovelType());
2019-04-16 23:11:00 +08:00
// this.txtDesc.setText(mNovel.getDesc ());
2019-04-05 23:59:31 +08:00
this.txtTitle.setText(mNovel.getName());
2019-04-12 23:02:31 +08:00
this.txtDesc2.setFullString(mNovel.getDesc ());
2019-04-16 23:11:00 +08:00
this.tvSmallcate.setText(mNovel.getSmallNovelType());
this.tvProgress.setText(mNovel.getProgress());
2019-04-12 23:02:31 +08:00
2019-04-14 23:17:31 +08:00
// txtDesc2.setCollapsedLines(2);
2019-04-12 23:02:31 +08:00
// txtDesc2.setSuffixColor(R.color.colorPrimary);
// txtDesc2.setExpanded(false);
// txtDesc2.setSuffixTrigger(false);
this.txtLatestCate.setText(mNovel.getChapterName());
2019-04-12 23:02:31 +08:00
tvLastUpdate.setText(CommonUtil.getDateString( mNovel.getLastUpateTime()));
2019-04-11 18:05:41 +08:00
loadImageView(mNovel.getCover(),imageView);
2019-04-12 23:02:31 +08:00
gaosiHeadPic();
}
void gaosiHeadPic(){
//new BlurTransformation(BookActivity.this, 10)).into(mImageView);
/* URL url = null;
try {
url = new URL( NetUtil.getCoverUrl(mNovel.getCover()));
} catch (MalformedURLException e) {
e.printStackTrace();
}*/
String a =Uri.decode(NetUtil.getCoverUrl(mNovel.getCover()));
Glide.with(BookActivity.this)
.load( Uri.decode(NetUtil.getCoverUrl(mNovel.getCover())))
.dontAnimate()
2019-04-14 23:17:31 +08:00
// .error(R.mipmap.side_bg2)
2019-04-18 17:19:42 +08:00
.transform(new GaoSiTransForm(this, 100, 3)) // "14":模糊度;"3":图片缩放3倍后再进行模糊
2019-04-12 23:02:31 +08:00
.into(imageViewHead);
// Glide.with(this).load(url) .transform(new BlurTransformation(BookActivity.this, 10)).into(imageViewHead);
// Glide.with(this).load(imageView.getDrawable()).transform(new BlurTransformation(BookActivity.this, 10)).into(imageViewHead);
2019-04-05 23:59:31 +08:00
}
2019-04-06 23:04:42 +08:00
void setShelfButtonText() {
String title = mNovel.isOnShelf() ? "移除书架" : "加入书架";
2019-04-05 23:59:31 +08:00
btnShelf.setText(title);
}
2019-04-14 23:17:31 +08:00
@OnClick({R.id.btnRead, R.id.btnCacheBook, R.id.btnShelf,R.id.llCate,R.id.btnFistPage})
void submitButton(View view) {
2019-04-14 23:17:31 +08:00
Intent intent;
2019-04-20 00:26:49 +08:00
if(mNovel==null){
return;
}
2019-04-02 17:41:53 +08:00
switch (view.getId()) {
2019-04-14 23:17:31 +08:00
case R.id.btnFistPage:
intent = new Intent(BookActivity.this, Main2Activity.class);
startActivity(intent);;
break;
2019-04-02 17:41:53 +08:00
case R.id.btnRead:
2019-04-05 23:59:31 +08:00
readBook();
//testBook();
2019-04-03 23:29:58 +08:00
// openBook(new Novel() );
2019-04-02 17:41:53 +08:00
break;
case R.id.btnCacheBook:
2019-04-05 23:59:31 +08:00
cacheBook();
break;
case R.id.btnShelf:
shelfBook();
2019-04-02 17:41:53 +08:00
break;
2019-04-10 22:19:06 +08:00
case R.id.llCate:
2019-04-14 23:17:31 +08:00
2019-04-23 22:45:08 +08:00
// Log.d(TAG, String .format("prepareBook: current book %s, start to open book cate of %s" , mNovel.getName() , pageFactory.getNovle().getName()));
2019-04-14 23:17:31 +08:00
intent = new Intent(BookActivity.this, MarkActivity.class);
2019-04-10 22:19:06 +08:00
startActivity(intent);;
break;
2019-04-02 17:41:53 +08:00
}
}
2019-04-02 17:41:53 +08:00
2019-04-05 23:59:31 +08:00
private void shelfBook() {
mNovel.setOnShelf(!mNovel.isOnShelf());
mNovel.save();
setShelfButtonText();
}
2019-04-05 23:59:31 +08:00
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
int wt = msg.what;
if (msg.what == 1) {
2019-04-05 23:59:31 +08:00
setBookDetailInfo();
} else if (msg.what == 2) //准备数据启动service
2019-04-08 23:16:20 +08:00
{
2019-04-12 23:02:31 +08:00
2019-04-08 23:16:20 +08:00
Toast.makeText(BookActivity.this, "已加入下载队列1", Toast.LENGTH_LONG).show();
} else if (msg.what == 3) {
Toast.makeText(BookActivity.this, "获取目录信息失败,下载失败", Toast.LENGTH_LONG).show();
2019-04-05 23:59:31 +08:00
}
2019-04-12 23:02:31 +08:00
hideProgress();
2019-04-05 23:59:31 +08:00
}
};
2019-04-05 23:59:31 +08:00
private void readBook() {
if (mNovel == null) {
Toast.makeText(this, "网络错误", Toast.LENGTH_LONG);
2019-04-05 23:59:31 +08:00
return;
}
ReadActivity.openBook(mNovel, BookActivity.this);
2019-04-05 23:59:31 +08:00
}
private void getChapters() {
}
2019-04-08 23:16:20 +08:00
boolean test=false;
2019-04-05 23:59:31 +08:00
private void cacheBook() {
2019-04-02 17:41:53 +08:00
if(test)
{
String url[] = {
"https://img-blog.csdn.net/20160903083245762",
"https://img-blog.csdn.net/20160903083252184",
"https://img-blog.csdn.net/20160903083257871",
"https://img-blog.csdn.net/20160903083257871",
"https://img-blog.csdn.net/20160903083311972",
"https://img-blog.csdn.net/20160903083319668",
"https://img-blog.csdn.net/20160903083326871"
};
Intent intent = new Intent(this, MyIntentService.class);
for (int i=0;i<7;i++) {//循环启动任务
intent.putExtra(MyIntentService.DOWNLOAD_URL,url[i]);
intent.putExtra(MyIntentService.INDEX_FLAG,i);
startService(intent);
}
intent = getSvrIntent();//new Intent(this, ServiceDownload.class);;;
for(int i=0;i<5;i++)
{
intent.putExtra("taskId",i);
startService( intent);
}
// intent = new Intent(this, ChapterDownloadSvrc.class);;;
// for(int i=0;i<3;i++)
{
// intent.putExtra("taskId",i);
// startService( intent);
}
return;
}
2019-04-08 23:16:20 +08:00
// if (LitePal.where("novelId = ?", mNovel.getId() + "").count("DownloadTask") > 0) {
List<DownloadTask> dts = LitePal.where("novelId = ?", mNovel.getId() + "").limit(1).find(DownloadTask.class);
if (dts.size() > 0) {
if (dts.get(0).getStatus() == 1) {
Toast.makeText(this, String.format("亲,小说《%s》已经缓存完成了", mNovel.getName()), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, String.format("亲,小说《%s》已经在缓存队列了请耐心等待", mNovel.getName()), Toast.LENGTH_LONG).show();
startDownloadService(dts.get(0).getId());
// startService( getSvrIntent());
}
return;
}
// }
2019-04-08 23:16:20 +08:00
new Thread() {
2019-04-02 17:41:53 +08:00
@Override
2019-04-08 23:16:20 +08:00
public void run() {
int slepttime = 0;
while (slepttime < 100 && pageFactory.getChapters().size() == 0) {
2019-04-08 23:16:20 +08:00
try {
sleep(50);
slepttime++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (pageFactory.getChapters().size() == 0) {
2019-04-08 23:16:20 +08:00
handler.sendEmptyMessage(3);
} else {
2019-04-08 23:16:20 +08:00
DownloadTask dt = new DownloadTask();
dt.setDomain(mNovel.getDomain());
dt.setFinishedChpats(0);
dt.setNovelId(mNovel.getId());
dt.setStatus(0);
dt.setTotalChapts(mNovel.getTotalChapts());
dt.save();
// LitePal.deleteAll("chapter","novelId=?",mNovel.getId()+"");
for (Chapter chapter : pageFactory.getChapters()) {
2019-04-08 23:16:20 +08:00
chapter.setNovelId(mNovel.getId());
chapter.save();
}
startDownloadService(dt.getId());
2019-04-08 23:16:20 +08:00
handler.sendEmptyMessage(2);
}
// Toast.makeText(BookActivity.this,"已加入下载队列2",Toast.LENGTH_LONG).show();
2019-04-02 17:41:53 +08:00
}
}.start();
2019-04-08 23:16:20 +08:00
2019-04-11 18:05:41 +08:00
showProgressDialog(false, "正在加入到队列,请等待");
2019-04-08 23:16:20 +08:00
}
2019-04-08 23:16:20 +08:00
private void startDownloadService(int taskId) {
Intent serviceIntent = getSvrIntent();
serviceIntent.putExtra("taskId",taskId);
startService(serviceIntent);
2019-04-02 17:41:53 +08:00
}
void openBook(Novel book) {
2019-04-02 17:41:53 +08:00
2019-04-03 16:21:00 +08:00
final String path = book.getNovelPath();
if (null == path) {
List<Novel> bookLists = LitePal.findAll(Novel.class);
if (bookLists.size() > 0) {
openBook(bookLists.get(0));
2019-04-02 17:41:53 +08:00
}
return;
}
File file = new File(path);
if (!file.exists()) {
2019-04-02 17:41:53 +08:00
//to get book content txt from web
new AlertDialog.Builder(this)
.setTitle(this.getString(R.string.app_name))
.setMessage(path + "文件不存在,是否删除该书本?")
.setPositiveButton("删除", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
2019-04-03 16:21:00 +08:00
LitePal.deleteAll(Novel.class, "bookpath = ?", path);
2019-04-02 17:41:53 +08:00
}
}).setCancelable(true).show();
return;
}
// ReadActivity.openBook(book ,null,this);
2019-04-03 23:29:58 +08:00
}
void getBookInfo() {
2019-04-05 23:59:31 +08:00
boolean isLocalDbExist = LitePal.isExist(Novel.class, "novelId=?", novelId+"");
2019-04-03 23:29:58 +08:00
BookSubscribe.getNovel(novelId, new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
2019-04-03 23:29:58 +08:00
@Override
public void onSuccess(String result) {
//成功
Novel nv;
nv = gson.fromJson(result, Novel.class);
// nv = GsonUtil.getNovel(result);
2019-04-03 23:29:58 +08:00
if (!isLocalDbExist) {
// nv.saveAsync();
nv.save();
2019-04-05 23:59:31 +08:00
} else {
2019-04-03 23:29:58 +08:00
nv.updateAll("novelId=?", novelId+"");
2019-04-03 23:29:58 +08:00
}
2019-04-06 23:04:42 +08:00
mNovel = Novel.getNovelBySvrId(novelId);
if (null != mNovel) {
2019-04-05 23:59:31 +08:00
handler.sendEmptyMessage(1);
2019-04-03 23:29:58 +08:00
}
pageFactory.prepareBook(mNovel);
2019-04-06 23:04:42 +08:00
// Toast.makeText(BookActivity.this,"Novel 请求成功:"+result,Toast.LENGTH_SHORT).show();
2019-04-03 23:29:58 +08:00
}
@Override
public void onFault(String errorMsg) {
//失败
Toast.makeText(BookActivity.this, "Novel 请求失败:" + errorMsg, Toast.LENGTH_SHORT).show();
2019-04-06 23:04:42 +08:00
mNovel = Novel.getNovelBySvrId(novelId);
if (null != mNovel) {
2019-04-06 23:04:42 +08:00
handler.sendEmptyMessage(1);
pageFactory.prepareBook(mNovel);
2019-04-06 23:04:42 +08:00
}
2019-04-03 23:29:58 +08:00
}
}, BookActivity.this));
2019-04-02 17:41:53 +08:00
2019-04-12 23:02:31 +08:00
BookSubscribe.getNovelsRelated(novelId, Constants.SEX, new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
//成功
try {
mDataRelated = GsonUtil. parserJsonArray(result,Constants.BLOCK_TITLE_NOVELS);
setNovelsRelated();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFault(String errorMsg) {
}
}, BookActivity.this));
BookSubscribe.getNovelsSameAuthor(novelId, Constants.SEX, new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() {
@Override
public void onSuccess(String result) {
//成功
try {
mDataAuthor = GsonUtil. parserJsonArray(result,Constants.BLOCK_TITLE_NOVELS);
setNovelsSameAuthor();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFault(String errorMsg) {
}
}, BookActivity.this));
2019-04-02 17:41:53 +08:00
}
2019-04-05 23:59:31 +08:00
/*
void readChapters( String url){
2019-04-03 16:21:00 +08:00
2019-04-03 23:29:58 +08:00
//to get mulu list
2019-04-05 23:59:31 +08:00
url = muluUrl;// "https://www.qu.la/book/161/";//"https://www.qu.la/book/746/";
2019-04-03 16:21:00 +08:00
Request request = new Request.Builder()
.url(url)
// .header("User-Agent", "OkHttp Example")
.build();
HttpMethods.getOkClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d(TAG, "onFailure: " + e.getMessage());
}
@Override
public void onResponse(Call call, Response response){
ResponseBody body = response.body();
if (body != null) {
try {
String bodyStr = body.string();
Log.d(TAG, "onResponse: " +bodyStr);
onResponseProcess(bodyStr,url);
2019-04-05 23:59:31 +08:00
ReadActivity.openBook(mNovel ,mChapter,BookActivity.this);
2019-04-03 16:21:00 +08:00
} catch (IOException e) {
e.printStackTrace();
}finally {
body.close();
}
}
}
});
}
void onResponseProcess( String content ,String url){
// HttpResult result ;
// HttpResult result2 = null;
try {
JSONObject siteJson = new JSONObject();
siteJson.put("chapterUrlRegexOnMulu", "");
siteJson.put("chapterUrlPattern", "/book/[\\d]+/[\\d]+\\.html$");
siteJson.put("chapterUrlRegexOnMulu", "<dd> <a[^>]*href=\"(/book/[\\d]+/[\\d]+\\.html)\">([^<]+)</a></dd>");
2019-04-05 23:59:31 +08:00
mChapters = NovelParseUtil.getChapters(url, content, siteJson);
if (mChapters != null) {
int lastReadChapt = mNovel.getLastReadChapt();
// int index =lastReadChapt*2-2;
2019-04-03 18:09:00 +08:00
2019-04-05 23:59:31 +08:00
lastReadChapt = lastReadChapt >=mChapters.size() ? mChapters.size() -1:lastReadChapt;
lastReadChapt = lastReadChapt <=0 ? 1:lastReadChapt;
mChapter =mChapters.get(lastReadChapt-1);
2019-04-03 16:21:00 +08:00
}
2019-04-03 23:29:58 +08:00
} catch (JSONException e) {
// } catch (JSONException | IOException e) {
2019-04-03 16:21:00 +08:00
e.printStackTrace();
} finally {
// result.close();
// if (result2 != null) result2.close();
}
2019-04-05 23:59:31 +08:00
}*/
2019-04-03 16:21:00 +08:00
2019-04-02 17:41:53 +08:00
//----------------绑定列表
2019-04-02 17:41:53 +08:00
@Override
protected void onResume() {
super.onResume();
registerReceiver(receiver,filter);
2019-04-14 23:17:31 +08:00
if(mNovel!=null && mNovel.getId()>0) {
mNovel = LitePal.find(Novel.class, mNovel.getId()); //更新最新进度
2019-04-23 22:45:08 +08:00
if(pageFactory==null){
2019-04-25 02:01:18 +08:00
pageFactory = PageFactory.getInstance(getApplicationContext());
2019-04-23 22:45:08 +08:00
}
if(( pageFactory.getNovle()==null || mNovel.getId() !=pageFactory.getNovle().getId())){
2019-04-14 23:17:31 +08:00
pageFactory.prepareBook(mNovel);
}
}
// View v =findViewById(R.id.head_img);
// v.measure(0,0);
// BlurKit.getInstance().blur(v, 20);
// BlurKit.getInstance().fastBlur(v,20, 0.3f);
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(receiver);
2019-04-02 17:41:53 +08:00
}
2019-04-21 10:57:20 +08:00
@Override
public void fillData() {
}
2019-04-02 17:41:53 +08:00
@Override
protected void onStart() {
super.onStart();
// blurLayout.startBlur();
// blurLayout.lockView();
2019-04-02 17:41:53 +08:00
}
@Override
protected void onStop() {
super.onStop();
// blurLayout.pauseBlur();
}
private IntentFilter filter;
DownloadProcessReceiver receiver;
void initiDownloadReceiver(){
filter = new IntentFilter("ServiceDownload.ChapterContent.finished");
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new DownloadProcessReceiver();
2019-04-02 17:41:53 +08:00
}
class DownloadProcessReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
int novelId =0;
int progress=0;
if( intent.hasExtra("novelId")){
novelId = intent.getIntExtra("novelId",0);
}
if( intent.hasExtra("progress")){
progress = intent.getIntExtra("progress",0);
}
if(novelId == mNovel.getId()){
btnCach.setText(progress +"/" +pageFactory.getChapters().size());
}
}
}
2019-04-02 17:41:53 +08:00
}