FolioReader / FolioReader-Android

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

The LastReadPositionListener is not working - Can not save last read position #279

Open dumanapp opened 6 years ago

dumanapp commented 6 years ago

Issue / Feature - The LastReadPositionListener is not working - Can not save last read position FolioReader version - Botj of v.0.4.1 and v.0.4.3 FolioReader Stock / Modified - Modified Android SDK - Android SDK API 20-28 Mobile / Tablet / Emulator Info - Genymotion Google Galaxy Nexus 4.2.2 Crash / Error - Everything work fine but LastReadPositionListener does not work. Can not save last read position.

Steps to reproduce / Describe in detail -

It is my java : `package com.example.ev.myreader;

import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.Toast;

import com.folioreader.Config; import com.folioreader.FolioReader; import com.folioreader.model.HighLight; import com.folioreader.model.ReadPosition; import com.folioreader.model.ReadPositionImpl; import com.folioreader.util.AppUtil; import com.folioreader.util.OnHighlightListener; import com.folioreader.util.ReadPositionListener;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader;

public class MainActivity extends AppCompatActivity implements OnHighlightListener,ReadPositionListener

{ private static final String LOG_TAG = MainActivity.class.getSimpleName();

FolioReader folioReader ;

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

    folioReader = FolioReader.get();
    folioReader.setOnHighlightListener(this);
    folioReader.setReadPositionListener(this);

    ReadPosition readPosition = getLastReadPosition();

    Config config = AppUtil.getSavedConfig(getApplicationContext());

    if (config == null)
        config = new Config();

    folioReader.setConfig(config, true);

    folioReader.setReadPosition(readPosition);

    folioReader.openBook("file:///android_asset/pride.epub");

}

@Override
public void onHighlight(HighLight highlight, HighLight.HighLightAction type) {
    Toast.makeText(this, "highlight id = " + highlight.getUUID() + " type = " + type, Toast.LENGTH_SHORT).show();
}

@Override
public void saveReadPosition(ReadPosition readPosition) {

    Log.i( LOG_TAG,"-> ReadPosition = " + readPosition.toJson());

    Toast.makeText(this, "ReadPosition = " + readPosition.toJson(), Toast.LENGTH_LONG).show();

}
private ReadPosition getLastReadPosition(){

    String jsonString = loadAssetTextAsString("readpositions/readposition.json");

    return ReadPositionImpl.createInstance(jsonString);

}

private String loadAssetTextAsString(String name) {
    BufferedReader in = null;
    try {
        StringBuilder buf = new StringBuilder();
        InputStream is = getAssets().open(name);
        in = new BufferedReader(new InputStreamReader(is));

        String str;
        boolean isFirst = true;
        while ((str = in.readLine()) != null) {
            if (isFirst)
                isFirst = false;
            else
                buf.append('\n');
            buf.append(str);
        }
        return buf.toString();
    } catch (IOException e) {
        Log.e("MainActivity", "Error opening asset " + name);
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                Log.e("MainActivity", "Error closing asset " + name);
            }
        }
    }
    return null;
}

} `

I can investigate in wikipage and apply it but I think miss somewhere.

So can you help me please? this is the epub file : https://www.gutenberg.org/ebooks/1342

@mahavir155 @hrishikesh-kadam