Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In-App refresh for eInk devices #23

Open
schwukas opened this issue Aug 1, 2018 · 6 comments
Open

In-App refresh for eInk devices #23

schwukas opened this issue Aug 1, 2018 · 6 comments

Comments

@schwukas
Copy link

schwukas commented Aug 1, 2018

Hey,

I am not sure whether you're aware that your CoolReader has grown pretty popular on the german Tolino eReader device. It ships with a closed source standard app that is alright in terms of usage, but also has some restrictions you obviously can't fix. That's why many users use a little workaround to install alternative reader apps such as yours.

Anyway, along with the recent update Android has been updated to 4.4.2 which moved the eInk display refresh from the system's responsibilities to the app's. This means that you quickly run into serious ghosting on the display.

Are you by any chance planning to implement some functionality to overcome this problem in the near future? I'm pretty new to eInk and I can't properly gauge how much effort this would be for you. I can, however offer you to run tests on my device if that helps in any way.

Lukas

@Frenzie
Copy link

Frenzie commented Aug 1, 2018

@petigPelle Would you happen to have any information/docs/API about what this "moving responsibility to the app" means?

@schwukas
Copy link
Author

schwukas commented Aug 2, 2018

Unfortunately I do not. The more active users always talk about the fact that the refreshing has been moved from the system to the app itself which means that when you're using non-eInk apps you run into pretty serious ghosting after some times since there is no refresh to clear the screen again.

Apparently, OReader (which is an Onyx adaption of AIReader) is still usable which makes sense as it's developed by Onyx which sells eReaders as well. Maybe that is helpful.

That is pretty much all I can tell you. I have done some minor Android modding myself but I'm pretty new to eReader devices. If I should find something helpful I will get back to you.

@buggins
Copy link
Owner

buggins commented Aug 6, 2018

CoolReader uses manufacturer and device ids to identify device as E-ink.
In general, when e-ink device is detected, rendering mode is switched to 16 levels of grayscale + dithering. Color scheme is fixed to black on white.
For some devices, there is a support of update mode changing. This options is device specific.
Usually, some dynamic library should be loaded, and some function(s) from it should be called for changing of setting.
If there is already support for some controller type, it's easy to enable control for other devices with the same controller.
But if there is no support of e-ink device controller, additional work is required to implement it.

PS: recent PR adds identification of all ONYX devices as e-ink.

@schwukas
Copy link
Author

schwukas commented Aug 7, 2018

Alright, thanks for your comments. I am talking about this device: https://mytolino.com/tolino-shine-2hd/technical-specifications/

The only thing I could find out from my model is, that its model number is 'tolino' which isn't very helpful I would guess.

If you can tell me how to provide you with more information (given, you would actually consider to implement a controller) I will gladly do so.

@norbi24
Copy link
Contributor

norbi24 commented Nov 13, 2018

Hi Vadim,
There is already TolinoEpdController in coolreader, which uses the "Screenhelper" wrapper for the libepd.so library on the Tolino devices. It was working fine until Tolino FW 10.1.0, running on Android 4.0.4, but now they upgraded fro FW 11.2.3 which uses Android 4.4.2, and since then coolreader is not working - it is not able to execute next/previous page commands.
It doesn't matter which mode I configure - quality, fast or fast2, neither of them work.
I implemented debug outputs in all methods of tolinoepdcontroller and saw, that all of the functions are not returning 1 (true) but false ... I guess that perhaps they changed the interface somehow.

The only way for me to get next/previous page working is like this:

  1. Start CR and say were are on page 10
  2. Execute page down (nothing happens)
  3. Execute one of the popups like positionpopup (displays 3 seconds a popup)
  4. After it disappears, CR shows the next page !!!
  5. again page down (nothing happens)
  6. Execute the popup and after it disappears, next page is shown etc.

I tired to dig into this, trying to understand how it refreshes after the popup disappears,
my first attempt was to only decrease that 3 sec timeout to say 1 ms, but then it works only once ...

If you can give me some pointers I'd be interested to help with this.
From where do you have the screenhelper.java (interface of libepd.so ?)

Thanks, Norbert

@mirh
Copy link

mirh commented Dec 9, 2018

In the thread above, IIRC I had found EPubProd.apk to contain all the magic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants