mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Remove warnings for download service, use new standard for checking network
This commit is contained in:
parent
fa2306a5da
commit
7f0b58156d
3 changed files with 50 additions and 36 deletions
|
@ -5,15 +5,17 @@ import android.app.Service
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
import android.net.NetworkInfo.State.CONNECTED
|
import android.net.Network
|
||||||
import android.net.NetworkInfo.State.DISCONNECTED
|
import android.net.NetworkCapabilities
|
||||||
|
import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET
|
||||||
|
import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED
|
||||||
|
import android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED
|
||||||
|
import android.net.NetworkRequest
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.work.NetworkType
|
import androidx.work.NetworkType
|
||||||
import com.github.pwittchen.reactivenetwork.library.Connectivity
|
|
||||||
import com.github.pwittchen.reactivenetwork.library.ReactiveNetwork
|
|
||||||
import com.jakewharton.rxrelay.BehaviorRelay
|
import com.jakewharton.rxrelay.BehaviorRelay
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
||||||
|
@ -24,9 +26,6 @@ import eu.kanade.tachiyomi.util.lang.plusAssign
|
||||||
import eu.kanade.tachiyomi.util.system.connectivityManager
|
import eu.kanade.tachiyomi.util.system.connectivityManager
|
||||||
import eu.kanade.tachiyomi.util.system.isServiceRunning
|
import eu.kanade.tachiyomi.util.system.isServiceRunning
|
||||||
import eu.kanade.tachiyomi.util.system.powerManager
|
import eu.kanade.tachiyomi.util.system.powerManager
|
||||||
import eu.kanade.tachiyomi.util.system.toast
|
|
||||||
import rx.android.schedulers.AndroidSchedulers
|
|
||||||
import rx.schedulers.Schedulers
|
|
||||||
import rx.subscriptions.CompositeSubscription
|
import rx.subscriptions.CompositeSubscription
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
|
@ -118,6 +117,27 @@ class DownloadService : Service() {
|
||||||
*/
|
*/
|
||||||
private lateinit var subscriptions: CompositeSubscription
|
private lateinit var subscriptions: CompositeSubscription
|
||||||
|
|
||||||
|
private val networkCallback = object : ConnectivityManager.NetworkCallback() {
|
||||||
|
override fun onAvailable(network: Network) {
|
||||||
|
onNetworkStateChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLost(network: Network) {
|
||||||
|
onNetworkStateChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCapabilitiesChanged(
|
||||||
|
network: Network,
|
||||||
|
networkCapabilities: NetworkCapabilities
|
||||||
|
) {
|
||||||
|
onNetworkStateChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onUnavailable() {
|
||||||
|
onNetworkStateChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the service is created.
|
* Called when the service is created.
|
||||||
*/
|
*/
|
||||||
|
@ -137,6 +157,7 @@ class DownloadService : Service() {
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
runningRelay.call(false)
|
runningRelay.call(false)
|
||||||
subscriptions.unsubscribe()
|
subscriptions.unsubscribe()
|
||||||
|
connectivityManager.unregisterNetworkCallback(networkCallback)
|
||||||
downloadManager.stopDownloads()
|
downloadManager.stopDownloads()
|
||||||
callListeners(downloadManager.hasQueue())
|
callListeners(downloadManager.hasQueue())
|
||||||
wakeLock.releaseIfNeeded()
|
wakeLock.releaseIfNeeded()
|
||||||
|
@ -167,41 +188,33 @@ class DownloadService : Service() {
|
||||||
* @see onNetworkStateChanged
|
* @see onNetworkStateChanged
|
||||||
*/
|
*/
|
||||||
private fun listenNetworkChanges() {
|
private fun listenNetworkChanges() {
|
||||||
subscriptions += ReactiveNetwork.observeNetworkConnectivity(applicationContext)
|
onNetworkStateChanged()
|
||||||
.subscribeOn(Schedulers.io())
|
val networkChangeFilter = NetworkRequest.Builder().build()
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
connectivityManager.registerNetworkCallback(networkChangeFilter, networkCallback)
|
||||||
.subscribe(
|
return
|
||||||
{ state ->
|
|
||||||
onNetworkStateChanged(state)
|
|
||||||
},
|
|
||||||
{
|
|
||||||
toast(R.string.could_not_download_chapter_can_try_again)
|
|
||||||
stopSelf()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the network state changes.
|
* Called when the network state changes.
|
||||||
*
|
*
|
||||||
* @param connectivity the new network state.
|
|
||||||
*/
|
*/
|
||||||
private fun onNetworkStateChanged(connectivity: Connectivity) {
|
private fun onNetworkStateChanged() {
|
||||||
when (connectivity.state) {
|
val manager = connectivityManager
|
||||||
CONNECTED -> {
|
val networkCapabilities = manager.getNetworkCapabilities(manager.activeNetwork)
|
||||||
if (preferences.downloadOnlyOverWifi() && connectivityManager.activeNetworkInfo?.type != ConnectivityManager.TYPE_WIFI) {
|
if (networkCapabilities == null || !(networkCapabilities.hasCapability(NET_CAPABILITY_INTERNET) &&
|
||||||
|
networkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED))) {
|
||||||
|
downloadManager.stopDownloads(getString(R.string.no_network_connection))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (preferences.downloadOnlyOverWifi() &&
|
||||||
|
!networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)
|
||||||
|
) {
|
||||||
downloadManager.stopDownloads(getString(R.string.no_wifi_connection))
|
downloadManager.stopDownloads(getString(R.string.no_wifi_connection))
|
||||||
} else {
|
} else {
|
||||||
val started = downloadManager.startDownloads()
|
val started = downloadManager.startDownloads()
|
||||||
if (!started) stopSelf()
|
if (!started) stopSelf()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DISCONNECTED -> {
|
|
||||||
downloadManager.stopDownloads(getString(R.string.no_network_connection))
|
|
||||||
}
|
|
||||||
else -> { /* Do nothing */ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listens to downloader status. Enables or disables the wake lock depending on the status.
|
* Listens to downloader status. Enables or disables the wake lock depending on the status.
|
||||||
|
|
|
@ -112,7 +112,9 @@ class Downloader(
|
||||||
* @return true if the downloader is started, false otherwise.
|
* @return true if the downloader is started, false otherwise.
|
||||||
*/
|
*/
|
||||||
fun start(): Boolean {
|
fun start(): Boolean {
|
||||||
if (isRunning || queue.isEmpty()) return false
|
if (isRunning || queue.isEmpty()) {
|
||||||
|
return isRunning
|
||||||
|
}
|
||||||
notifier.paused = false
|
notifier.paused = false
|
||||||
if (!subscriptions.hasSubscriptions()) initializeSubscriptions()
|
if (!subscriptions.hasSubscriptions()) initializeSubscriptions()
|
||||||
|
|
||||||
|
|
|
@ -859,7 +859,6 @@
|
||||||
<string name="nothing_is_downloading">Nothing is currently downloading</string>
|
<string name="nothing_is_downloading">Nothing is currently downloading</string>
|
||||||
<string name="download_complete">Download complete</string>
|
<string name="download_complete">Download complete</string>
|
||||||
<string name="download_error">Download error</string>
|
<string name="download_error">Download error</string>
|
||||||
<string name="could_not_download_chapter_can_try_again">Could not download chapters. You can try again in the downloads section</string>
|
|
||||||
<string name="manage_whats_downloading">Manage what\'s downloading</string>
|
<string name="manage_whats_downloading">Manage what\'s downloading</string>
|
||||||
<string name="visit_recents_for_download_queue">Visit the recents tab to access the download
|
<string name="visit_recents_for_download_queue">Visit the recents tab to access the download
|
||||||
queue. You can also double tap or press and hold for quicker access</string>
|
queue. You can also double tap or press and hold for quicker access</string>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue