diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md index d190e7263..4e711890b 100644 --- a/KNOWN_ISSUES.md +++ b/KNOWN_ISSUES.md @@ -3,6 +3,13 @@ This is a list of major known issues. For the latest list of all issues see the [Github Issues page](https://github.com/FolioReader/FolioReader-Android/issues) +## Media Overlay + +From version 0.5.1, Media Overlay would not work as the streamer implementation is not done yet in r2-streamer-kotlin. + ## TTS -From version 5.0.2, TTS is disabled temporarily till the fix is complete. \ No newline at end of file +From version 0.5.2, TTS is disabled. +In previous versions, sentences were formed by changing the DOM structure. +To implement TTS without changing DOM would require NLP to extract sentences. +As of now, no major reading systems other than Google Play Books implements TTS bug free. \ No newline at end of file diff --git a/README.md b/README.md index b0009cd6b..ba630ef4d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://api.travis-ci.org/FolioReader/FolioReader-Android.svg?branch=master)](https://travis-ci.org/FolioReader/FolioReader-Android) -FolioReader-Android is an ePub reader written in Java. +FolioReader-Android is an ePub reader written in Java and Kotlin. ### Features @@ -13,17 +13,17 @@ FolioReader-Android is an ePub reader written in Java. - [x] List / Edit / Delete Highlights - [x] Handle Internal and External Links - [x] Portrait / Landscape -- [x] Reading Time Left / Pages left +- [ ] Reading Time Left / Pages left - [x] In-App Dictionary -- [x] Media Overlays (Sync text rendering with audio playback) -- [x] TTS - Text to Speech Support +- [ ] Media Overlays (Sync text rendering with audio playback) +- [ ] TTS - Text to Speech Support - [ ] Parse epub cover image - [ ] PDF support - [x] Book Search - [x] Add Notes to a Highlight - [ ] Better Documentation -- [x] Last Read Position Listener -- [x] Horizontal reading +- [x] Last Read Locator +- [x] Horizontal Reading - [x] Distraction Free Reading ## Demo @@ -31,9 +31,9 @@ FolioReader-Android is an ePub reader written in Java. ![Custom fonts](https://cloud.githubusercontent.com/assets/1277242/19012915/0661c7b2-87e0-11e6-81d6-8c71051e1074.gif) ##### Day and Night Mode ![Day night mode](https://cloud.githubusercontent.com/assets/1277242/19012914/f42059c4-87df-11e6-97f8-29e61a79e8aa.gif) -##### Text Highlighting +##### Text Highlighting ![Highlight](https://cloud.githubusercontent.com/assets/1277242/19012904/c2700c3a-87df-11e6-97ed-507765b3ddf0.gif) -##### Media Overlays +##### Media Overlays ![Media Overlay](https://cloud.githubusercontent.com/assets/1277242/19012908/d61f3ce2-87df-11e6-8652-d72b6a1ad9a3.gif) ### Gradle @@ -44,7 +44,7 @@ Add following dependency to your root project `build.gradle` file: allprojects { repositories { ... - maven { url "https://dl.bintray.com/mobisystech/maven" } + jcenter() maven { url "https://jitpack.io" } ... } @@ -56,39 +56,14 @@ Add following dependency to your app module `build.gradle` file: ```groovy dependencies { ... - implementation "com.folioreader:folioreader:0.5.1" + implementation "com.folioreader:folioreader:0.5.2" ... } ``` +### Enable Multidex support -### AndroidManifest - -Starting with Android 9.0 (API level 28), cleartext support is disabled by default. - -{your-app-module}/res/xml/network_security_config.xml - -```xml - - - - 127.0.0.1 - localhost - - -``` - -Then add network_security_config.xml in your app module's AndroidManifest.xml - -```xml - - - ... - - ... - - -``` +Enable Multidex support as explained in this [Android Doc](https://developer.android.com/studio/build/multidex) ### Usage @@ -100,22 +75,17 @@ FolioReader folioReader = FolioReader.get(); Call the function `openBook()`: -##### opening book from assets - +##### opening book from assets - ```java folioReader.openBook("file:///android_asset/TheSilverChair.epub"); ``` -##### opening book from raw - +##### opening book from raw - ```java folioReader.openBook(R.raw.adventures); ``` -
- -**Note: From v0.4.1 you don't need to specify permissions and `FolioActivity` tag in AndroidManifest.xml** - -
## WIKI @@ -126,21 +96,21 @@ folioReader.openBook(R.raw.adventures); * [Highlight Action](https://github.com/FolioReader/FolioReader-Android/wiki/Highlight-Action) * [Highlight Event](https://github.com/FolioReader/FolioReader-Android/wiki/Highlight-Event) * [Providing External Highlight](https://github.com/FolioReader/FolioReader-Android/wiki/Providing-External-Highlight) -* [ReadPosition](https://github.com/FolioReader/FolioReader-Android/wiki/ReadPosition) - * [Get ReadPosition](https://github.com/FolioReader/FolioReader-Android/wiki/Get-ReadPosition) - * [Set ReadPosition](https://github.com/FolioReader/FolioReader-Android/wiki/Set-ReadPosition) +* [ReadLocator](https://github.com/FolioReader/FolioReader-Android/wiki/ReadLocator) + * [Get ReadLocator](https://github.com/FolioReader/FolioReader-Android/wiki/Get-ReadLocator) + * [Set ReadLocator](https://github.com/FolioReader/FolioReader-Android/wiki/Set-ReadLocator) * [Clean up code](https://github.com/FolioReader/FolioReader-Android/wiki/Clean-up-code) ## Reporting Issue -Please follow [Issue Template](https://github.com/FolioReader/FolioReader-Android/blob/master/.github/ISSUE_TEMPLATE.md) to report any issue. +Please follow [Issue Template](https://github.com/FolioReader/FolioReader-Android/blob/master/.github/ISSUE_TEMPLATE.md) to report any issue. ## Share your application If you are using FolioReader in your application, share your application link in [this issue](https://github.com/FolioReader/FolioReader-Android/issues/291) ### Credits 1. SwipeLayout -2. r2-streamer-java +2. r2-streamer-kotlin 3. Pearson Dictionaries 4. rangy diff --git a/build.gradle b/build.gradle index f98c79ab9..e0e50a52a 100644 --- a/build.gradle +++ b/build.gradle @@ -37,14 +37,14 @@ allprojects { } ext { - folioreaderSdkVersion = "0.5.1" - r2StreamerKotlinVersion = "1.0.3-6.dev" - r2SharedKotlinVersion = "1.0.3-3.dev" + folioreaderSdkVersion = "0.5.2" + r2StreamerKotlinVersion = "1.0.3-7" + r2SharedKotlinVersion = "1.0.3-4" projectVersionCode = 1 projectVersionName = "1.0" - androidMinSdkVersion = 19 + androidMinSdkVersion = 21 androidCompileSdkVersion = 28 androidTargetSdkVersion = 28 androidSupportLibVersion = "28.0.0" diff --git a/folioreader/AndroidManifest.xml b/folioreader/AndroidManifest.xml index b9ac4d38f..5402a08e4 100644 --- a/folioreader/AndroidManifest.xml +++ b/folioreader/AndroidManifest.xml @@ -10,11 +10,12 @@ { //Thread.sleep(6000) - /*val objectMapper = ObjectMapper() - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - locatorList = objectMapper.readValue(stringBuilder.toString())*/ val locatorType = object : TypeToken>() {}.type locatorList = Gson().fromJson(stringBuilder.toString(), locatorType) Log.d(LOG_TAG, "-> loadInBackground -> " + stringBuilder.toString()) diff --git a/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.kt b/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.kt index eb90a2f7f..3f42094cb 100644 --- a/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.kt +++ b/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.kt @@ -461,6 +461,9 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle val cbzParser = CbzParser() cbzParser.parse(path!!, "") } + else -> { + null + } } val portNumber = intent.getIntExtra(Config.INTENT_PORT, Constants.PORT_NUMBER) @@ -470,11 +473,11 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle r2StreamerServer!!.start() } - fun onBookInitFailure() { + private fun onBookInitFailure() { //TODO -> Fail gracefully } - fun onBookInitSuccess() { + private fun onBookInitSuccess() { val publication = pubBox!!.publication spine = publication.spine @@ -525,7 +528,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle } } - fun initDistractionFreeMode(savedInstanceState: Bundle?) { + private fun initDistractionFreeMode(savedInstanceState: Bundle?) { Log.v(LOG_TAG, "-> initDistractionFreeMode") window.decorView.setOnSystemUiVisibilityChangeListener(this) @@ -673,7 +676,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle } } - fun showSystemUI() { + private fun showSystemUI() { Log.v(LOG_TAG, "-> showSystemUI") if (Build.VERSION.SDK_INT >= 16) { @@ -689,7 +692,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle } } - fun hideSystemUI() { + private fun hideSystemUI() { Log.v(LOG_TAG, "-> hideSystemUI") if (Build.VERSION.SDK_INT >= 16) { diff --git a/folioreader/src/test/java/com/folioreader/android/ExampleUnitTest.kt b/folioreader/src/test/java/com/folioreader/android/ExampleUnitTest.kt index 21b401854..09a7afded 100644 --- a/folioreader/src/test/java/com/folioreader/android/ExampleUnitTest.kt +++ b/folioreader/src/test/java/com/folioreader/android/ExampleUnitTest.kt @@ -2,8 +2,6 @@ package com.folioreader.android import org.junit.Assert.assertEquals import org.junit.Test -import org.readium.r2.shared.Locations -import org.readium.r2.shared.Locator /** * Example local unit test, which will execute on the development machine (host). @@ -16,20 +14,4 @@ class ExampleUnitTest { fun addition_isCorrect() { assertEquals(4, (2 + 2).toLong()) } - - @Test - fun testNullability() { - - var locator = Locator("", 0, "", Locations(), null) - - //var string: String = locator.text?.before + locator.text?.hightlight + locator.text?.after - - var string: String = StringBuilder() - .append(locator.text?.before) - .append(locator.text?.hightlight ?: "") - .append(locator.text?.after ?: "") - .toString() - - println(string) - } } \ No newline at end of file diff --git a/sample/build.gradle b/sample/build.gradle index f09a4956f..3086d57c0 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -56,6 +56,8 @@ dependencies { androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.android.support:multidex:1.0.3' + implementation project(':folioreader') //implementation "com.folioreader:folioreader:$folioreaderSdkVersion" @@ -63,6 +65,4 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion" implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion" - - implementation 'com.android.support:multidex:1.0.3' } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index 69d76eb05..e3a83f276 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -8,7 +8,6 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:largeHeap="true" - android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">