masterwok
simple-torrent-android
Kotlin

A torrent client library for Android that utilizes frostwire-jlibtorrent. It supports sequential and simultaneous downloads.

Last updated May 11, 2026
100
Stars
31
Forks
1
Issues
0
Stars/day
Attention Score
28
Language breakdown
Kotlin 100.0%
โ–ธ Files click to expand
README

Release

[deprecated] simple-torrent-android

I'm no longer maintaining this project due to time constraints.

An Android torrent client library powered by frostwire-jlibtorrent. It supports sequential and simultaneous downloads.

Usage

A single torrent download session is represented as the

class. An instance of this class can be used to start, stop, pause, and resume a torrent download. When creating a new session, a
instance is a required constructor parameter used to configure the session. The
interface can be implemented and set on the session to receive
updates tied to the lifecycle of the torrent. The
is one of the properties of the status and represents the current state of the torrent piece buffer.

For example, the following code snippet sequentially downloads the largest file of the provided torrent to the downloads directory:

// http, https, magnet, file, and content Uri types are all supported.
val torrentUri = Uri.parse("http://www.frostclick.com/torrents/video/animation/BigBuckBunny1080psurroundfrostclick.comfrostwire.com.torrent")

val torrentSessionOptions = TorrentSessionOptions( downloadLocation = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) , onlyDownloadLargestFile = true , enableLogging = false , shouldStream = true )

val torrentSession = TorrentSession(torrentSessionOptions)

torrentSession.listener = object : TorrentSessionListener { // Omitted for brevity override fun onPieceFinished( torrentHandle: TorrentHandle , torrentSessionStatus: TorrentSessionStatus ) { ... } }

torrentSession.start(context, torrentUri) // Invoke on background thread. // OR torrentSession.start(bencodeByteArray)

For a more detailed example, please see the demo application alongside this library (screenshot below). Please note, that the demo application does not properly show how to keep sessions alive after the activity is killed. This was a quick and dirty way of showing/testing downloads. A more real-world solution, would be to have the torrent sessions exist within a service that enters the foreground while downloading. By doing this, the sessions will retain network connectivity and will not be murdered by Android the destroyer.

Configuration

Add this in your root build.gradle at the end of repositories:

allprojects {     repositories {         maven { url "https://jitpack.io" }     } }
and add the following in the dependent module:

dependencies {
    implementation 'com.github.masterwok:simple-torrent-android:0.5.0'
}

Projects using simple-torrent-android

Demo Screenshots

ยฉ 2026 GitRepoTrend ยท masterwok/simple-torrent-android ยท Updated daily from GitHub