Ketch は、すべて Kotlin で構築された、シンプルで強力なカスタマイズ可能な Android 用のファイル ダウンローダー ライブラリです。 WorkManager の機能を利用して、Android アプリケーションでファイルをダウンロードするプロセスを簡素化します。 Ketch は、アプリケーションの状態に関係なくダウンロードを保証します。
Ketch ライブラリを Android プロジェクトに統合するには、次の簡単な手順に従います。
dependencyResolutionManagement {
repositoriesMode . set( RepositoriesMode . FAIL_ON_PROJECT_REPOS )
repositories {
google()
mavenCentral()
maven { url ' https://jitpack.io ' } // this one
}
}
dependencies {
implementation ' com.github.khushpanchal:Ketch:2.0.2 ' // Use latest available version
}
Ketch を使用する最も簡単な方法:
アプリケーション onCreate で Ketch のインスタンスを作成します。 (Ketch はシングルトン クラスであり、最初の使用時にインスタンスが自動的に作成されます)
private lateinit var ketch : Ketch
override fun onCreate () {
super .onCreate()
ketch = Ketch .builder().build( this )
}
download() 関数を呼び出し、URL、ファイル名、パスを渡し、ダウンロードのステータスを確認します。
val id = ketch.download(url, fileName, path)
lifecycleScope.launch {
repeatOnLifecycle( Lifecycle . State . STARTED ) {
ketch.observeDownloadById(id)
.flowOn( Dispatchers . IO )
.collect { downloadModel ->
// use downloadModel
}
}
}
ダウンロードをキャンセルするには
ketch.cancel(downloadModel.id) // other options: cancel(tag), cancelAll()
ダウンロードを一時停止するには
ketch.pause(downloadModel.id) // other options: pause(tag), pauseAll()
ダウンロードを再開するには
ketch.resume(downloadModel.id) // other options: resume(tag), resumeAll()
ダウンロードを再試行するには
ketch.retry(downloadModel.id) // other options: retry(tag), retryAll()
ダウンロードを削除するには
ketch.clearDb(downloadModel.id) // other options: clearDb(tag), clearAllDb(), clearDb(timeInMillis)
ketch.clearDb(downloadModel.id, false ) // Pass "false" to skip the actual file deletion (only clear entry from DB)
監視: ダウンロード アイテムの状態フローを提供します (各アイテムには、URL、ファイル名、パス、タグ、ID、timeQueued、ステータス、進行状況、長さ、速度、lastModified、metaData、failureReason、eTag などのダウンロード情報が含まれます)。
// To observe from Fragment
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle( Lifecycle . State . STARTED ) {
ketch.observeDownloads()
.flowOn( Dispatchers . IO )
.collect {
// set items to adapter
}
}
}
通知を有効にするには:
マニフェストファイルに通知権限を追加します。
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
ユーザーに許可を要求します (Android 13 (API レベル 33) から必要)。参考としてサンプル アプリを確認してください。
初期化中に通知構成を渡します
ketch = Ketch .builder().setNotificationConfig(
config = NotificationConfig (
enabled = true ,
smallIcon = R .drawable.ic_launcher_foreground // It is required to pass the smallIcon for notification.
)
).build( this )
ネットワークリクエストのヘッダーを提供します。
ketch.download(url, fileName, path,
headers = headers, // Default: Empty hashmap
)
タグ: 追加のタグを指定して、さまざまなダウンロードをグループ化します。 (このタグはダウンロードのキャンセル、一時停止、再開、削除にも使用できます)
ketch.download(url, fileName, path,
tag = tag, // Default: null
)
ダウンロード構成: カスタム接続および読み取りタイムアウトを提供します
ketch = Ketch .builder().setDownloadConfig(
config = DownloadConfig (
connectTimeOutInMs = 20000L , // Default: 10000L
readTimeOutInMs = 15000L // Default: 10000L
)
).build( this )
カスタム OKHttp: カスタム okhttp クライアントを提供します
ketch = Ketch .builder().setOkHttpClient(
okHttpClient = OkHttpClient
. Builder ()
.connectTimeout( 10000L )
.readTimeout( 10000L )
.build()
).build( this )
通知構成: カスタム通知構成を提供します。
ketch = Ketch .builder().setNotificationConfig(
config = NotificationConfig (
enabled = true , // Default: false
channelName = channelName, // Default: "File Download"
channelDescription = channelDescription, // Default: "Notify file download status"
importance = importance, // Default: NotificationManager.IMPORTANCE_HIGH
smallIcon = smallIcon, // It is required
showSpeed = true , // Default: true
showSize = true , // Default: true
showTime = true // Default: true
)
).build( this )
Ketch (ハイレベルデザイン) の動作を理解するには、ブログをチェックしてください: https://medium.com/@khush.panchal123/ketch-android-file-downloader-library-7369f7b93bd1
遠慮なくフィードバックを提供したり、問題を報告したり、Ketch に貢献したりしてください。 GitHub リポジトリに移動し、問題を作成するか、保留中の問題を見つけます。すべてのプルリクエストを歓迎します?
Copyright (C) 2024 Khush Panchal
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.