FolioReader / FolioReader-Android

A Java ePub reader and parser framework for Android.
BSD 3-Clause "New" or "Revised" License
2.25k stars 716 forks source link

About use ReadLocatorListener #354

Closed GzxdH closed 3 years ago

GzxdH commented 5 years ago

Issue / Feature - The ReadLocatorListener is not working - Can not save last read position FolioReader version - 0.5.4 FolioReader Stock / Modified - Modified Android SDK - Android SDK API 21-28 Mobile / Tablet / Emulator Info - Genymotion Custom Phone 5.0 Crash / Error - it look like no work.

Steps to reproduce / Describe in detail -

package com.example.administrator.nreader;

import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import cn.finalteam.filedownloaderfinal.DownloaderManager; import cn.finalteam.filedownloaderfinal.DownloaderManagerConfiguration; import cn.finalteam.filedownloaderfinal.FileDownloaderCallback; import cn.finalteam.filedownloaderfinal.SimpleFileDownloader; import cn.finalteam.toolsfinal.StorageUtils;

import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast;

import com.folioreader.Config; import com.folioreader.Constants; import com.folioreader.FolioReader; import com.folioreader.model.locators.ReadLocator; import com.folioreader.util.ReadLocatorListener; import com.liulishuo.filedownloader.BaseDownloadTask; import com.liulishuo.filedownloader.FileDownloadConnectListener; import com.liulishuo.filedownloader.FileDownloadListener; import com.liulishuo.filedownloader.FileDownloadSampleListener; import com.liulishuo.filedownloader.FileDownloader;

import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.lang.ref.WeakReference; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity implements ReadLocatorListener {

private FolioReader folioReader;
private String status = null;
private String path;
private String save_path;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (Build.VERSION.SDK_INT >= 23) {
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }

    //application

// Environment.getExternalStorageDirectory().getPath() save_path = "/mnt/sdcard/Signature/";

    path = "http://114.116.48.166/lianmao/public/uploads/picture/uid2/member/20190227/38a9420c267c6c2983de788341edc82a.epub";
    String[] paths = path.split("/");
    int l = paths.length - 1;
    String str_ = paths[l];
    Log.i("info:::", str_);

    File file = new File(save_path + str_);
    if (!file.exists()) {
        download();
    } else {
        getFolioReader(save_path + str_);
    }

}

private void getFolioReader(String path) {

    folioReader = FolioReader
            .get()
    .setReadLocatorListener(this);

    Config config = new Config()
            .setAllowedDirection(Config.AllowedDirection.ONLY_HORIZONTAL)
            .setDirection(Config.Direction.HORIZONTAL);

    folioReader.setConfig(config, true);
    folioReader.openBook(path);
}

//下载到本地
private void download() {
    DownloadUtil.getInstance().download(path, save_path, new DownloadUtil.OnDownloadListener() {
        @Override
        public void onDownloadSuccess(String path) {
            Log.i("info:::", "成功:" + path);
            getFolioReader(path);
        }

        @Override
        public void onDownloading(int progress) {
            Log.i("info:::", "进度:" + progress);
        }

        @Override
        public void onDownloadFailed() {
            Log.i("info:::", "失败");
        }
    });
}

@Override
public void saveReadLocator(ReadLocator readLocator) {
    Log.i("info:::","---here---");
}

}

this funcation is not working,because the logs are not printed @Override public void saveReadLocator(ReadLocator readLocator) { Log.i("info:::","---here---"); }

plz,help~~

GzxdH commented 5 years ago

What should I do to save the page position?

samyakjain commented 5 years ago

+1

Shruti7032 commented 5 years ago

I am also facing the same issue. Please help here. The same method is working in Android 9 but not in Android 5.1.1 03-16 10:57:40.016 16497-16497/com.folioreader.android.sample E/WebViewConsole: Uncaught ReferenceError: DOMRect is not defined [file:///android_asset/js/Bridge.js:858] Above error is coming, due to which it is unable to calculate CFI

nuwanchamara commented 5 years ago

ReadLocatorListener worked for me. I am receiving the ReadLocator object which needs to locate the last reading position.

HimaniPatelTH commented 5 years ago

i am facing same issue . can anybody have any solution ?

y-ziane commented 3 years ago

same problem too :(