- Introduction
- Features
- Quick start
- Usage
- Documentation
- Sample
- FAQ
- Change log
- Where released
- Support
- License
MediaLoader
allow you to enable cache video/audio while playing for any android media player with single line code.
- caching to disk while streaming,no wait;
- offline work with cached data,no download again;
- working with any media player on android(MediaPlayer,VideoView,ExoPlayer,ijkplayer...);
- cache management(cache dir change,cache file rename,max cache files size limit, max cache files count limit...);
- pre-download available,can pre-download the audio/video to avoid waiting.
Just add dependency (MediaLoader
was released in jcenter):
dependencies {
compile 'com.vincan:medialoader:1.0.0'
}
and use new url from MediaLoader
instead of original url:
String proxyUrl = MediaLoader.getInstance(getContext()).getProxyUrl(VIDEO_URL);
videoView.setVideoPath(proxyUrl);
Add callback to listen downloading status:
MediaLoader.addDownloadListener(String url, DownloadListener listener)
don't forget to remove listener to avoid memory leaks:
MediaLoader.removeDownloadListener(String url, DownloadListener listener)
You can change the default initial configuration with help of MediaLoaderConfig
:
MediaLoaderConfig mediaLoaderConfig = new MediaLoaderConfig.Builder(this)
.cacheRootDir(DefaultConfigFactory.createCacheRootDir(this, "your_cache_dir"))//directory for cached files
.cacheFileNameGenerator(new HashCodeFileNameCreator())//names for cached files
.maxCacheFilesCount(100)//max files count
.maxCacheFilesSize(100 * 1024 * 1024)//max files size
.maxCacheFileTimeLimit(5 * 24 * 60 * 60)//max file time
.downloadThreadPoolSize(3)//download thread size
.downloadThreadPriority(Thread.NORM_PRIORITY)//download thread priority
.build();
MediaLoader.getInstance(this).init(mediaLoaderConfig);
Sometimes the MediaLoader
doesn't work good in the case of poor network.So pre-download audio/video is a good idea to avoid no sense of waiting.
DownloadManager
is a good partner of MediaLoader
.
Just use DownloadManager.enqueue(Request request, DownloadListener listener)
to start and DownloadManager.stop(String url)
to stop pre-downloading.
More useful method such as pause
,resume
and so on are available in DownloadManager
.
See API list for more details.
desc | API |
---|---|
get MediaLoader instance | MediaLoader#getInstance(Context context) |
initialize MediaLoader | MediaLoader#init(MediaLoaderConfig mediaLoaderConfig) |
get proxy url | MediaLoader#getProxyUrl(String url) |
is file cached | MediaLoader#isCached(String url) |
get cache file | MediaLoader#getCacheFile(String url) |
add download listener | MediaLoader#addDownloadListener(String url, DownloadListener listener) |
remove download listener | MediaLoader#removeDownloadListener(String url, DownloadListener listener) |
remove download listener | MediaLoader#removeDownloadListener(DownloadListener listener) |
pause download | MediaLoader#pauseDownload(String url) |
resume download | MediaLoader#resumeDownload(String url) |
destroy MediaLoader instance | MediaLoader#destroy() |
desc | API |
---|---|
set cache root dir | MediaLoaderConfig.Builder#cacheRootDir(File file) |
set cache file name generator | MediaLoaderConfig.Builder#cacheFileNameGenerator(FileNameCreator fileNameCreator) |
set max cache files size | MediaLoaderConfig.Builder#maxCacheFilesSize(long size) |
set max cache files count | MediaLoaderConfig.Builder#maxCacheFilesCount(int count) |
set max cache file time | MediaLoaderConfig.Builder#maxCacheFileTimeLimit(long timeLimit) |
set download thread pool size | MediaLoaderConfig.Builder#downloadThreadPoolSize(int threadPoolSize) |
set download thread priority | MediaLoaderConfig.Builder#downloadThreadPriority(int threadPriority) |
set download ExecutorService | MediaLoaderConfig.Builder#downloadExecutorService(ExecutorService executorService) |
new MediaLoaderConfig instance | MediaLoaderConfig.Builder#build() |
desc | API |
---|---|
get MediaLoader instance | DownloadManager#getInstance(Context context) |
start download | DownloadManager#enqueue(Request request) |
start download | DownloadManager#enqueue(Request request, DownloadListener listener) |
is download task running | DownloadManager#isRunning(String url) |
pause download | DownloadManager#pause(String url) |
resume download | DownloadManager#resume(String url) |
stop download | DownloadManager#stop(String url) |
pause all download | DownloadManager#pauseAll() |
resume all download | DownloadManager#resumeAll() |
stop all download | DownloadManager#stopAll() |
is file cached | DownloadManager#isCached(String url) |
get cache file | DownloadManager#getCacheFile(String url) |
clean cache dir | DownloadManager#cleanCacheDir() |
config key | default value |
---|---|
cache dir | sdcard/Android/data/${application package}/cache/medialoader |
cache file naming | MD5(url) |
max cache files count | 500 |
max cache files size | 500* 1024 * 1024(500M) |
max cache file time | 10 * 24 * 60 * 60(10 days) |
download thread pool size | 3 |
download thread priority | Thread.MAX_PRIORITY |
See release notes
See bintray.com
Any problem?
- Learn more from sample.
- Read the source code.
- New issue.
- Contact us for help.
MediaLoader
is under the Apache-2.0 license. See the LICENSE file for details.