If you miss the ability to go straight to the Library with FBReader, this tiny app will solve that issue. It simply calls the activity which starts the Library. Unlike with the other popular readers, the author of FBReader left this as a possibility from outside the app.
1. This is a Tasker-generated app. If you already have one of my other Tasker-generated apps or have previously installed GApps, you don't need the two Google maps library files included in the zip and can delete them. If you do need them, copy the two files into the locations shown below:
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot. Without these files resident, the app will not install.
2. Install the app itself and you're good to go.
Related
6-13-21 See post #4 below for a new automatic version of the app!!
My original intention was to look into updating this project for FW 1.21 but my eyes got bigger and bigger as I realized how difficult that would probably be for me. So here's maybe the next best thing for now.
This is a manual one-touch app which extracts the record of the currently read book from readerlocal.db, selects the appropriate cover image from .docThumbs, and copies it into a folder in /media/screensavers. A short "flash" confirms the operation.
Requirements:
1. Root
2. Superuser
3. sqlite3 in /system/bin
4. the folder "CurrentBookCover" in /media/screensavers
5. Stock Library and Reader
6. Default file storage for books and docThumbs
To install:
Download sqlite.zip (thanks to Nookie!), and the apk below. Extract sqlite3 from the zip file and copy it into /system/bin. You will probably have to change permissions (give write permission to all) and then change them back. File permissions on sqlite3 should be rwx r-x r-x or CH MOD 755.
Create the folder "CurrentBookCover" in /media/screensavers. Install the app either via ADB or by copying the apk file to your Nook and installing from a file manager. Use the NST "Settings" app to select the new screensaver folder.
You can run the app at any time. Repeats on the same title will simply overwrite. My experience with this app is that it is sluggish on first run. It seems to take a long time for SuperUser to wake up and notice the request. It may seem to fail after you initially give it permission. Run it again and it should be fine--and thereafter.
Which books?
As long as side-loaded books are in the default folders (internal: /media/My Files/Books, external: /sdcard/My Files/Books) they will be fine. Sub-folders within the "Book" folders are also OK. The reason for this restriction is so that the .docThumbs folders in which the Library places the cover images will be in a predictable place. A "settings" section would be nice to allow for some leeway, but that is beyond me and, in any case, it's the stock Library app that determines where the .docThumbs folders will go.
B&N downloaded books do not have cover images in a place where they can be found (by me, anyway). The books themselves appear to reside in /data/media/B&N Downloads and are listed by code numbers, not titles. Although the app can detect the downloaded books, there is no corresponding .docThumbs folder and so no cover images. Nothing will be copied to the screensaver folder and your default image will appear instead. However, if you want a cover image you can make one of your own for the book and copy it into /media/.docThumbs (create the folder if it's not already there). The name of the file should match the code number of the book. Something like 9780062020765.jpeg or whatever.
PDFs also do not have cover images which the Library can extract. The situation is exactly the same as for B&N downloaded books. You will get your default screensaver if you run the app. If you want a cover image just be sure to give it the same name as the PDF file and place it either in /media/.docThumbs (for internal memory) or /sdcard/.docThumbs (for external memory). Of course, there will be no thumbnail in the Library no matter what.
Books transferred using Adobe Digital Editions are like books from B&N in that they are DRM protected, although the exact nature of the DRM protection is apparently different. These books end up in /media/Digital Editions as titled epub files but no cover image is either generated or can be extracted because of the DRM. A cover thumbnail is generated in /media/Digital Editions/Thumbnails but it is very low resolution and might be suitable for the Library cover image but in my experience the NST/G is not able to find it. If you manually move the epub file to a location where other books are generally stored there is no docThumb file generated and you still don't get a cover image in the Library. So....well, there is no good solution other than to manually place a cover image of your own in the screensaver folder. Alternatively, you may choose to remove the DRM protection before transferring the book (i.e., do not use ADE to transfer) and then treat it as a regular side-loaded book. Everything will then work as expected.
This is a Tasker-generated app and my personal hope (since I use Tasker on my NST) was to make a Profile that would run this routine automatically when a book was accessed in the Library, completely silent. This has proven to be something of a puzzle as it's not clear exactly when the database is actually updated and attempts to make the task watch for that event have not been successful. Yet. I welcome any insights into that. I've never seen the app fail to pick up the correct cover.
Please report bugs/problems/suggestions.
Edit: I have recently discovered that these apps--and all Tasker-generated apps--have a dependency on two library files normally installed with GApps. If you do not have GApps installed on your device, you can still use these apps by copying the two attached files into the locations shown below (the xml file is zipped so you can download it rather than view it):
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot.
Very nice job, @nmyshkin! I will be testing this within the next several days and will most likely post again with bugs/feedback.
mergen3107 said:
Dear nmyshkin!
Do you know how to stop Nook from creating .docThumbs?
I got rid of stock Reader and Library, so I don't really need that folder. Also all my books are in internal storage (thanks to partition resize) and now it is crucial to free up more space.
Click to expand...
Click to collapse
The short answer is "no". The longer answer starts with "how much space could an empty folder take?" and then:
Are you still storing your books in the default (internal) folder (/My Files/Books)? The reason I ask this is that when I was working on the SetCover app I originally had no books in the internal default folder and the .docThumbs folder did not exist (unlike on the SDCard where I had all my books in the default folder there and the .docThumbs folder came into existence without me creating it). I did have some "free Friday" downloaded books in internal memory but they do not generate .docThumbs.
So my point is that I actually had to create a .docThumbs folder in the internal space just so I could test my SetCover app. My guess is that if you don't have to store your books in /My Files/Books and you put them somewhere else, no .docThumbs will be generated. I would have guessed that this is a background task of the Library when it scans the folder but if you say you have removed the Library then it must occur in some other way.
Just try one book in a different folder (if however you are accessing the books will allow that) and see if the cover image shows up in .docThumbs.
6-24-23: Updated to version 3.1
--removed dependency on Screenshot Easy (you can uninstall it)
--added small binary file, fb2png, to replace malfunctioning native screenshot binary
Some years have passed since I created the original app. It works fine, but I've always wished it could be automatic like some of the non-B&N readers (Cool Reader, AlReader). So with a little more knowledge and foolhardiness I returned to the project I referenced in the original post. I sorted out the patches to the old FW 1.10 and applied them to FW 1.2.2. Then I got stuck at the Settings .apk because of the signature issue. The OP never disclosed how he got around that issue, but I could not.
[nmyshkin thinks...]
I went back to my original app and reviewed the problem. What I found was that while the database files are open when a book is being read, they do not appear to be updated unless the reader is "closed" (i.e., no longer the focused window). So how to trigger the cover extraction without constantly scanning the system....
Eventually I abandoned the databases when I came up with a much simpler idea.
Spoiler: How it works
The cover extraction routine is triggered by exiting the Library and opening the selected book in the Reader. Actually, there is a ten-second wait time in case there is some kind of delay in opening the book or the file is very large. After 10 seconds, if the ReaderActivity is in focus the system is queried for open epub files:
Code:
#lsof | grep epub
The resulting string contains all the information needed to locate the book, and a bit of slicing and dicing yields a suitable string to locate the correct image file in .docThumbs. The image is then copied to the folder /media/screensavers/CurrentBookCover. If you have entered and left the Library without selecting a book to view then the process stops and there is no update to the screensaver image. If you select a book by some other method (via a file manager, for example) the routine will not be activated.
The app works for any side-loaded books (internal or external, in any directory), assuming you are using the stock Library and Reader. It won't work for any other books such as public library books transferred with ADE, PDFs, or books purchased from B&N. This is because the B&N software does not extract cover images from these kinds of files to place in .docThumbs. Based on my reading of the original project that got me started on this, that was also the case with that mod. If there is no cover image available, your default screensaver image will show.
A kind of solution
This version of the app includes the ability to take a screenshot manually. That means you can take a screenshot of the cover that might be displayed when you open one of the non-compliant books in the Reader (or even a book open in the Kindle app, etc.). It's not perfect and results vary depending on how the cover is displayed. If you have a gallery app like Quick Pic installed you can use it to crop the image to your liking. Of course, you can always get your own cover image elsewhere and place it in /media/screensavers/CurrentBookCover. I should add that this ability extends beyond book covers. Any displayed screen can be copied and the image will be placed in the folder. That might be useful.
This added capability uses Screenshot Easy as a plugin app (also used in my Alternate Power Menu and Screenshot apps). Images are initially saved in /sdcard/Pictures/Screenshots and then moved to /media/screensavers/CurrentBookCover.
Installation and setup
1. Create the directories: sdcard/Pictures/Screenshots (if not already existing) and /media/screensavers/CurrentBookCover
2. In the Nook Settings app select "CurrentBookCover" as the screensaver directory.
3.From the zip below, copy fb2png to /data/local, set permission to rwx rx rx
4. Download and install the Set Cover app (below). This is a Tasker-created app and requires the presence of two small files, included in the zip. Without these files present the app will not install! If you already have one of my other Tasker apps, you can discard the files. Otherwise copy the two included files into the locations shown below:
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot. Then install the Set Cover app.
The app requires root. I have set it up so that on first run it does something trivial that requires root so that it will trigger SU and ask for permission. Once that's out of the way, subsequent taps on the app icon will take a screenshot. Of course that's not very helpful since you can't get to the app to tap when you're looking at a book cover in the Reader! You can set a hardware button (regular or long press) to the app using NookTouch ModManager. That way you can do a manual screen capture no matter where you are in the system.
*completely reworked and improved app in the post immediately following*
I created a little one-touch app to utilize the native screencap capability of the NST. As noted a long time ago in another thread, this capability is a little odd, as it results in a blue or green-scale image. This app corrects that issue, converting to 256-greyscale.
But....what about Screenshot Easy or any of several other PlayStore apps? Actually, I have used Screenshot Easy for some time, and I do like it. What I really wanted, however, was a capability reminiscent of the power-button option in CyanogenMod ROMs where one touch can give you a screenshot of any screen, right while you are looking at it. While adding that function to the power button on the NST is beyond my pay grade, I was able to do this much. To get the most out of this app, you need to have a hardware button available. Using NTMM, assign that button to the app and you can then take a screenshot at any time (except on the sleep screensaver--yeah, I had to try!). I included a few examples below.
Install
1. Download the apk file (below)
2. Transfer to your NST [probably also NSTG--can someone confirm?]
3. Touch on icon from your file manager and choose to install.
4. In the root of your SD card, create a folder called "Pictures". Within that folder, create another folder called "Screenshots". Folder names and locations must be exact. Sorry.
*This app requires root access because it is executing shell commands. The first time you try to use it you will likely get a screenshot of your SuperUser app permission screen*
Screenshots are saved with names like "screenshot_7-29-2017_13.57.jpg" (yup, that's the date and time). When a shot is taken, a notification appears as a confirmation.
To assign a hardware button to the app, use Nook Touch Mod Manager (NTMM), or just tap on the app icon to take a screenshot.
Edit: I have recently discovered that these apps--and all Tasker-generated apps--have a dependency on two library files normally installed with GApps. If you do not have GApps installed on your device, you can still use these apps by copying the two attached files into the locations shown below (the xml file is zipped so you can download it rather than view it):
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot.
Version 2!
6-21-23: updated to 2.2
--removed dependency on Screenshot Easy app (you can uninstall it)
--added small binary file, fb2png, which "replaces" malfunctioning device screenshot routine
This is a completely re-worked approach to a one-touch screenshot which is now part of my Alternate Power Menu app, here as a stand-alone.
Install
1. Unzip the attached file
2. Copy over Google maps library files as described in post #1 above (if not already present)
3. Copy the file "fb2png" to /data/local, set permissions to rwx rx rx
4. Create the folders /sdcard/Pictures/Screenshots
5. Install the Screenshot app
Use
You can take a screenshot by tapping on the app icon, but the best use is to assign the app to a hardware button using NookTouch ModManager. When you take a shot, there is a brief pause and then eventually a "flash" of a smaller image of the screen (see attached image below), followed by a notification. Because the app now requires root in order to determine whether the device is in portrait or landscape orientation, your first screenshot might be of the SuperUser permission screen. That won't happen a second time.
something could be wrong with the Screenshot version2_1 you reproduced.
Click to expand...
Click to collapse
Maybe, but I've installed the app on two NST devices without problems. However, it's not been tested on older firmwares, only 1.2.1 and 1.2.2. I don't see any reason why it should not work on the older firmware.
Check the Screenshot Easy configuration and make sure the image format is set correctly and that the path for saving the images is correct.
I'm out of the country now and don't have my NST with me, but I'll be back in a week and double check the uploaded apk. Could have been corrupted I guess.
lz199366 said:
Thanks for your reply. I tried to copy your settings 100%ly.
However, it can't take shots if I set the settings exactly the same as yours(it 'flashed' but create nothing in the folder)
Screenshots will only be taken when I turned on those two options(see in the attachment).'Start capture' and 'Notification icon' have to be turned if I want to take shots on my NST.
Also, I have updated my previous post to show how different the picture quality was by using 2 screenshot methods
Click to expand...
Click to collapse
I'm sitting in an airport lounge thinking about this problem. Did you try assigning the 2.1 version screenshot app to some other hardware key? Something about the timing on the long-press "n" might be causing an issue?
OK, I downloaded the posted 2.1 apk file and installed it on my NST running FW 1.2.1 and also a second one running 1.2.2. I didn't have the app installed previously because I use the Alternative Power Menu app and that includes the same screenshot routine.
To be brief: it works perfectly on both devices.
I can't emphasize enough the importance of having the two Maps files properly installed prior to the installation of the Screenshot app (if you do not have a prior GApps installation). That includes the reboot once the two files have been copied into the correct folders and their permissions set properly.
If you have done that and the app still refuses to function then there must be something about the older FW you are running, although I can't imagine what because the app really doesn't interact with the B&N stuff, but I suppose they could have found some Android 2.1 issues and corrected them in later FW versions.
9-5-21: Well...there are new SSL issues with all comics in the list that have an "a" designation. All of the "u" comics continue to work and if you exclude "a" selections from your list, the app functions properly. I'm looking at this but so far have come up empty. It's a shame. If I can find a workaround or alternate source for the affected comics (or at least some of them), I'll update the app. Otherwise.... In the meantime, the Washington Post has an Opera Mini-friendly comics page which includes quite a few selections (many on the "a" list): https://washingtonpost.com/entertainment/comics/
*updated to version 1.4--uninstall any previous versions first
fixed issue with Sunday comics
This app is designed to shamelessly emulate one of my favorite little apps that never did run below Jellybean and is now gone from the PlayStore anyway. A long time ago I posted a simple HTML template to enable viewing a selection of newspaper comic strips from a few sites in your browser. Time marches on and now those sites have mostly left browsers like Opera Mobile in the dust
Today's Comics is a Tasker-created app that allows you to download any of 157 newspaper comic strips at present. It has a simple GUI designed for the NST/G and relies on apps you might already have for ancillary tasks like viewing the comics and editing the list of comics to download. See screenshot below.
How to install
Download the attached zip. Unzip the file and transfer the contents to your Nook SD card. If you already have one of my other Tasker-generated apps or have previously installed GApps, you don't need the two Google maps library files and can delete them. If you do need them, copy the two files into the locations shown below:
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot. Without these files resident, the app will not install.
Next, create in the root of your SD card the folder "TodaysComics" (exactly as you see here--this has changed from earlier versions!). Move the comics_list.txt file from the contents of the zip to this folder. This is where your comics will end up.
Install the app by tapping on it in your file manager (wherever you put it).
Download the CURL zip package, unzip and follow the instructions contained inside to install CURL on your device. Reboot after the install.
How to use
The comics_list.txt file lists all of the comics currently available. The file as you get it has every choice "commented out" by a period (.) at the beginning of each line. That means if you select the "Get Comics" option without doing anything else, you will get NO comics! You can edit the file on your NST/G if you have some kind of app that handles txt files. I use the text editor that is part of ES File Explorer [included with the zip]. You can also pull the file, edit the text file on a PC and then put it back on the NST/G. To select a comic for download simply remove the period (.) from the beginning of the line. Don't make any other changes, introduce line breaks, etc. If you designate your chosen editor as the "default" for the action then it will automatically open when you select the "Edit Comics" option in the future. On closing the editor you will return to the Today's Comics screen.
Even if you select only 5 comics, the app must scan the entire list. This actually does not take too long, but if you want to streamline things, you could create your own comics_list.txt file containing only the comics you want (i.e., there would be no lines beginning with a period). Put the original in a safe place or rename it comics_list.bak
Once the list is edited you're ready to download comics!
In the current version you have the option to autoview the comics once the download is complete. You can tap on that box if you like ("x" should appear and will be remembered until you tap again). Then tap on "Get Comics".
You need to be connected to WiFi (in fact, you will be warned about that if you are not). As comics download there is a toast for each one and then finally a completion toast. Basically the system is "locked" until that point. You can actually make the app screen disappear by tapping either "Exit" or the "Back" button, but the collection of comics will continue until done. I do not recommend trying to force an exit. You might be left with a screen artifact that is difficult to get rid of.
Once the download is complete, you will be taken to the viewer of your choice if you have the "autoview" box checked. Otherwise you can select the "View Comics" option. You can also "Exit" and return to view the comics later. The next time you download comics the new ones will overwrite the old ones. You can, of course, use your file explorer to find the comics and view them outside the app menu system. If you are using the app, you will be presented with a variety of choices based on what else you have installed. Again, I happen to like ES File Explorer's Image Viewer but QuickPic also works (and is in the zip file). Some viewers run in full screen and you need a way out so I have added a discreet semi-transparent "back" arrow at the upper left corner of whatever viewer you have (root required to access keyevent). If you need it, it's there. If you don't, ignore it until you're done and then tap it to make it go away. The "Exit" button of the app will also clear the back arrow. Unfortunately the "Gallery" app that is on the NST/G only sees .pngs and only in the /media folder--and doesn't update. I'm sure there are other options. I highly recommend landscape mode, considering the shape of most comic strips.
Can I run this app on other devices?
Maybe. There's no reason why the "innards" would not perform correctly, but the one drawback of Tasker-generated apps is that the GUI is device specific. That means this is designed for an 800x600 screen. On larger screens you'll probably see a floating app, while smaller screens will scrunch things up.
One of the features I like in ES File Explorer is the Remote Manager option, especially since I've discovered how to make a permanent item in Windows Explorer for the NST. I can quickly transfer any number and size of files wirelessly via FTP and save wear and tear on the USB jack. Too bad the setting is buried in the app Settings. Yes, you can place a shortcut on the Home screen, but as a shortcut its placement is restricted. You can't have it in your app drawer or place it in a Simi Folder.
Now you can. Just a simple little app that sends the appropriate intent to start the service. It all works just like the regular way, with a notification you can tap on to stop the service. No rummaging around in the Settings or having restrictions on where the app icon can be placed.
Requirements:
--Some version of ES File Explorer installed
--As this is a Tasker-generated app (but does not require Tasker to run!) there is a dependency on two library files normally installed with GApps. If you do not have GApps installed on your device, you can still use this app by copying the two attached files into the locations shown below:
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot. Without these files resident, the app will not install. If you already have one of my other Tasker-generated apps, you can skip this.
To install
Download and unzip the file attached below. If you don't need the maps library files, discard them. Otherwise treat as above. Copy the app to your SD card and install or install via ADB from your PC.
Enjoy!
6-25-23: Updated to version 1.1:
--removed dependency on Screenshot Easy (you can uninstall it)
--added small binary file, fb2png, to replace malfunctioning stock screenshot binary
While looking over potential reader apps to use on my NSTG with all the B&N stuff removed, I was happy to see that both CoolReader and AlReader automatically create a screensaver folder in which a cover image of the current book is placed automatically.
Unfortunately, FBReader does not have this feature and when I started to look at the issue I was surprised to see that cover images are not stored anywhere--at least nowhere I could find--but appear to be generated on the fly when you get to the cover page. This made automation (without actual tinkering with the app) impossible, but I finally figured out a way to adapt my Screensaver and Set Cover apps to work with FBReader (actually the app will take any current screen and place it in the "CurrentCover" screensaver folder, so be careful).
Like the Screensaver app, CurrentCover utilizes a small binary file, fb2png, which converts the current frame buffer contents into an image in png format.
To install:
1. This is a Tasker-generated app. If you already have one of my other Tasker-generated apps or have previously installed GApps, you don't need the two Google maps library files included in the zip and can delete them. If you do need them, copy the two files into the locations shown below:
/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar
Set permissions for both files to rw-r--r-- and reboot. Without these files resident, the app will not install.
2. In the zip you will find fb2png. Place the file in /data/local and set permissions to rwx rx rx.
3. Create the folder /media/screensavers/CurrentBookCover
(note: this has changed in version 1.1)
4. Install the CurrentCover app.
5. Use NTMM to assign CurrentCover to some convenient button.
6. In the Settings app select "CurrentCover" as the screensaver folder.
Using
When you arrive at the cover page of a book you are beginning to read, run the CurrentCover app by pressing the button you have assigned to it. There's a bit of a delay and eventually a toast showing a smaller image of the cover. That's it. Old images are overwritten when you start a new book.