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.Intent
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkInfo.State.CONNECTED
|
||||
import android.net.NetworkInfo.State.DISCONNECTED
|
||||
import android.net.Network
|
||||
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.IBinder
|
||||
import android.os.PowerManager
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.work.NetworkType
|
||||
import com.github.pwittchen.reactivenetwork.library.Connectivity
|
||||
import com.github.pwittchen.reactivenetwork.library.ReactiveNetwork
|
||||
import com.jakewharton.rxrelay.BehaviorRelay
|
||||
import eu.kanade.tachiyomi.R
|
||||
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.isServiceRunning
|
||||
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 uy.kohesive.injekt.injectLazy
|
||||
|
||||
|
@ -118,6 +117,27 @@ class DownloadService : Service() {
|
|||
*/
|
||||
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.
|
||||
*/
|
||||
|
@ -137,6 +157,7 @@ class DownloadService : Service() {
|
|||
override fun onDestroy() {
|
||||
runningRelay.call(false)
|
||||
subscriptions.unsubscribe()
|
||||
connectivityManager.unregisterNetworkCallback(networkCallback)
|
||||
downloadManager.stopDownloads()
|
||||
callListeners(downloadManager.hasQueue())
|
||||
wakeLock.releaseIfNeeded()
|
||||
|
@ -167,41 +188,33 @@ class DownloadService : Service() {
|
|||
* @see onNetworkStateChanged
|
||||
*/
|
||||
private fun listenNetworkChanges() {
|
||||
subscriptions += ReactiveNetwork.observeNetworkConnectivity(applicationContext)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{ state ->
|
||||
onNetworkStateChanged(state)
|
||||
},
|
||||
{
|
||||
toast(R.string.could_not_download_chapter_can_try_again)
|
||||
stopSelf()
|
||||
}
|
||||
)
|
||||
onNetworkStateChanged()
|
||||
val networkChangeFilter = NetworkRequest.Builder().build()
|
||||
connectivityManager.registerNetworkCallback(networkChangeFilter, networkCallback)
|
||||
return
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the network state changes.
|
||||
*
|
||||
* @param connectivity the new network state.
|
||||
*/
|
||||
private fun onNetworkStateChanged(connectivity: Connectivity) {
|
||||
when (connectivity.state) {
|
||||
CONNECTED -> {
|
||||
if (preferences.downloadOnlyOverWifi() && connectivityManager.activeNetworkInfo?.type != ConnectivityManager.TYPE_WIFI) {
|
||||
private fun onNetworkStateChanged() {
|
||||
val manager = connectivityManager
|
||||
val networkCapabilities = manager.getNetworkCapabilities(manager.activeNetwork)
|
||||
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))
|
||||
} else {
|
||||
val started = downloadManager.startDownloads()
|
||||
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.
|
||||
|
|
|
@ -112,7 +112,9 @@ class Downloader(
|
|||
* @return true if the downloader is started, false otherwise.
|
||||
*/
|
||||
fun start(): Boolean {
|
||||
if (isRunning || queue.isEmpty()) return false
|
||||
if (isRunning || queue.isEmpty()) {
|
||||
return isRunning
|
||||
}
|
||||
notifier.paused = false
|
||||
if (!subscriptions.hasSubscriptions()) initializeSubscriptions()
|
||||
|
||||
|
|
|
@ -859,7 +859,6 @@
|
|||
<string name="nothing_is_downloading">Nothing is currently downloading</string>
|
||||
<string name="download_complete">Download complete</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="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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue