Thanks to our Indian user who sent us the issue of our SDK failure after updating to KitKat 4.4, the latest Android version.
The new release resolves the specific problems proposed by him. We appreciate any suggestions and issues from our clients, who may encounter other issues due to different devices and/or diffenrent platforms.
After the last release in June, we kept receiving suggestions from developers, for which we felt the need to publish a new version. In this one the following features are enforced:
1, Support for MIPS, X86, ARMEBI, ARMEBI-V7A chip architectures;
2, Support for Android 4.3;
3, Updated and tested for iOS7 environment.
We’ve been developing UI for the new release. Indeed it has taken us quite a long time. But we think it’s worthy. Due to time and energy limitations, there’s been no optimization for the iOS7 interface. Most of the job with significance has been at the EPUB parsing layer.
We had yesterday an encouraging feedback from one of our SDK users who has been developing an app for Brazil’s Ministry of Education. The ministry equips public school teachers with tablets that are preinstalled of the app to introduce new technologies to these teachers. The app contains eight books. From the screenshots forwarded to us by Mr.Joao Filipe Dalla Rosa（firstname.lastname@example.org）, thanks be to him, we can see that the rendering of illustrations is quite nice, though we are Portuguese illiterate.
Screen shot of Bookshelf
Screen Shot 1
Screen Shot 2
Screen Shot 8
Screen Shot 8
Today the new version component is released.
In this version we added new swipe function for page flip to next chapter when page at end of current chapter.
Thanks for Danny Pronk put forward this feature.
In this release we’ve modified our project because some people want to load the inbuilt books and don’t want users to delete them. We deleted the add book function and delete book function. So if you want to add books to you project, you can put them in the books folder(in android is the assets/books), and the app will load them when it starts.
CFI, or Canonical Fragment Identifier, is a device designed by IDPF to refer any location of an element or context in an EPUB publication. CFI has a structure similar to that of an HTTP address and has been the result of inspiration by the power of the Web’s hyperlinks.
We at Anfengde was applying the % percentage to indicate reading progress when developing our AnReader. Though we had spent a lot of time on the EPUB3 Specifications, even making a rather formal translation to contribute to IDPF, we ignored the chapters about CFI. Then Ric Wright’s mentioning of it caught our attention when he pulled our code and ran our SDK. Ric Wright is serving part time as technical director of the Readium SDK project and is the president of Geo F/X. So we researched this part again and discussed within our team about the rules IDPF has made. It’s yet a tentative measure as we understand it since IDPF only labels it as recommended.
Below is a brief introduction, for full documentation please check at IDPF’s site.
The characters employed by IDPF to construct identifiers are “/”, ”[“, “~”, “!”, “@” and “^”, among which “^” escapes characters to avoid confliction. Identifiers are a sequence of steps placed in brackets and prefixed with “epubcfi”. They are then appended to the end of IRI with #, e.g.,
In the above example, even numbers like 6 and 4 after “/” indicate that the step is an element of a DOM object. Odd numbers after “/” are texts to be rendered. Contents inside square brackets ([…]) are assertions for verification. Each special character is defined with specific usages in the link about, so we only cite an example from there to demonstrate the clues.
Given the following Package Document:
<itemref id="titleref" idref="titlepage"/>
<itemref id="chap01ref" idref="chapter01"/>
<itemref id="chap02ref" idref="chapter02"/>
<itemref id="chap03ref" idref="chapter03"/>
<itemref id="chap04ref" idref="chapter04"/>
and the XHTML Content Document chapter01.xhtml:
<img id="svgimg" src="foo.svg" alt="..."/>
Then epubcfi(/6) is the step of “spine”, the 3rd element in the package, epubcfi(/6/4) the 2nd spine element which is chap01ref, for which [chap01ref] is asserted for checking. Thus the EPUB CFI of epubcfi(/6/4[chap01ref]!/4[body01]/10[para05]/3:2) refers to the location of “1” in the text string 0123456789.
In this release we’ve fixed some bugs. And we are refactoring our code. Our library will be better and better.
We are very grateful to the developers around the world for their recommendations and functional requirements. We ourselves also found that there are inadequacies in our work. We’ve focused on the development of functional features, neglecting the documentation part.
Two important things to do:
1, To provide a commercial AnReader program, fully open source, on which our customers can make changes to achieve their own reading software. This application will be available in Apple’s AppStore and Google Play.
2, To perfect documentation by adding implementation documents to facilitate the developers with references so as to make up for the inconvenience in concealing the core code.
After the completion of this stage, we will consider the DRM aspects of the work. As a matter of fact, the publishing industry can not just stare at contents such as novels and magazines. There are a lot of data with economic value, e.g., stock market analysis, training materials. It is entirely reasonable that respective customers set confidentiality requirement for fresh contents. As for tools for compiling EPUB books, we do not intend to develop an editor now. Rather, we will make use of existing open source tools, or provide this functionality by writing plug-ins for Office software.
Thank you, programmers, very much for your support. Please contact us when you have any questions.
In this release we’ve fixed some bugs. And we’ve associated our project with ePub file type. You can realize that with openBookFromFileExplorer(Intent intent) method in android and openBookFromSafari:(NSURL*)url method in iOS. Thanks for using our library.
In this release we’ve added TTS. And we’ve modified the downloading event. We added a button to cancel downloading and a progress bar to show the downloading progress.
Public Google Document is here!
AnFengDe EPUB SDK
EPUB SDK is a development kit written in ANSI C and Java, realizing EPUB 3.0 parsing and achieving excellent performance on mobile devices.
This development kit provides native development interfaces for both Android and iOS. It contains a framework for the iOS platform, a jar file and a shared library for the Android platform.
All you need to do is simple copying and importing, then you can directly reference in your own project.
Creative Commons – A shared culture.epub, Around the world in 28 languages.epub. For more epub 3.0 test books you can click this link,
Both our android app and ios app shared the same UI and features.
- Changing text size We provided multiple, more than RMSDK’s, text sizes for you to choose from. To zoom in or out, just tap the button pair on the top menu bar marked as “A”.
- Flipping pages Swipe left and right on the screen. Our SDK also supports previous/next chapter jumping by tapping buttons at the bottom setting bar.
- Bookmark It’s easy to add a bookmark anywhere you please in the book.
- Table of contents Table of contents for epub 3.0 and epub 2.0 books will display correctly. That’s what neither RMSDK nor Stanza can do.
- Skipping pages It’s easy to jump to anywhere of the book by moving the slider on the sliding bar.
- Page percentage Our SDK chooses to use percentage in marking the reading progress.
- Playing audio and video Our SDK supports the playing of audio and video files embedded in the book.
- TTS(Text To Speech) our SDK support speaking the selected content of the book.
- Friendly reading interface For several books (such as this book), if you open them using RMSDK, you can find that the reading interface is unfriendly. For the same book, our SDK performs excellent rendering.
- Changing the style of UI If you are not satisfied with the original UI style, our SDK provides several interfaces for customizing and replacement.
- Supporting both EPUB 2.0 and EPUB 3.0 specification Our SDK exhibits excellent performance in rendering EPUB 2.0 and EPUB 3.0 books.
- Free of charge AnReader SDK with advertisement bar is free of charge. To the best of our knowledge, the price for licensing RMSDK on ios is $30,000.
More functions Our team is working on AnFengDe EPUB SDK for adding more features.
The Adobe Reader Mobile SDK (RMSDK) is Adobe’s toolkit for rendering EPUB and PDF content for eReading apps and devices.
Creative Commons – A shared culture.epub, Around the world in 28 languages.epub.
- Changing text size The app provided five text sizes.
- Flipping pages Swipe the finger left and right on the screen.
- Changing orientation You can choose the reading orientation. Our AnFengDe team thought that this function was useless and had abandoned it.
- Searching RMSDK supports searching. The function will be available in the future release.
- Hightlight RMSDK supports highlighting. The function is in our plan and will be available in the future release.
- Bookmark This is a basic function of the reader software.
- Skipping pages This is a basic function of the reader software.
Function Table List
In this release we’ve added the sharing function. In the reading page you can select the text by long clicking and then share the text.