All Projects → TonnyL → Charles

TonnyL / Charles

Licence: mit
[WIP]✨ Charles is a local multi-media selector for Android

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Charles

libvlc-nuget
NuGet packaging setup for LibVLC
Stars: ✭ 52 (-87.96%)
Mutual labels:  media
Zuck.js
A javascript library that lets you add stories EVERYWHERE.
Stars: ✭ 3,396 (+686.11%)
Mutual labels:  media
Telegram backup
Java app to download all your telegram data.
Stars: ✭ 409 (-5.32%)
Mutual labels:  media
Rtspallthethings
Deprecated RTSP media server -- Use github.com/aler9/rtsp-simple-server instead.
Stars: ✭ 258 (-40.28%)
Mutual labels:  media
Jsexpert01 Skeleton Ew
Projeto base da JS Expert Week
Stars: ✭ 303 (-29.86%)
Mutual labels:  media
Fwplayer
A video player SDK for iOS, it is based on AVPlayer. https://se.linkedin.com/in/foks-huiwang, https://fokswang.wixsite.com/home
Stars: ✭ 321 (-25.69%)
Mutual labels:  media
Dockerfiles
Optimized media, analytics and graphics software stack images. Use the dockerfile(s) in your project or as a recipe book for bare metal installation.
Stars: ✭ 98 (-77.31%)
Mutual labels:  media
Styled Breakpoints
Simple and powerful tool for creating breakpoints in styled components and emotion. 💅
Stars: ✭ 428 (-0.93%)
Mutual labels:  media
Icecast Server
Icecast streaming media server (Mirror) - Please report bugs at https://gitlab.xiph.org/xiph/icecast-server/issues
Stars: ✭ 312 (-27.78%)
Mutual labels:  media
Spruce
A social networking platform made using Node.js and MongoDB
Stars: ✭ 399 (-7.64%)
Mutual labels:  media
Ion
Real-Distributed RTC System by pure Go and Flutter
Stars: ✭ 3,279 (+659.03%)
Mutual labels:  media
Mnamer
media file renamer and organizion tool
Stars: ✭ 299 (-30.79%)
Mutual labels:  media
Ezplayer
基于AVPlayer封装的视频播放器,功能丰富,快速集成,可定制性强,支持react-native。
Stars: ✭ 377 (-12.73%)
Mutual labels:  media
Mediapicker
Media Picker is an Android Libary that lets you to select multiple images or video
Stars: ✭ 254 (-41.2%)
Mutual labels:  media
Chromecast mpris
📺 Control Chromecasts from Linux and D-Bus
Stars: ✭ 413 (-4.4%)
Mutual labels:  media
nova-media-library
A Laravel Nova field for displaying and updating a Spatie Media Library model.
Stars: ✭ 42 (-90.28%)
Mutual labels:  media
Mediacms
MediaCMS is a modern, fully featured open source video and media CMS, written in Python/Django and React, featuring a REST API.
Stars: ✭ 313 (-27.55%)
Mutual labels:  media
Imagestore
Open source google photos alternative!
Stars: ✭ 429 (-0.69%)
Mutual labels:  media
Sonatamediabundle
Symfony SonataMediaBundle
Stars: ✭ 415 (-3.94%)
Mutual labels:  media
Ffmpegcommand
FFmpegCommand适用于Android的FFmpeg命令库,实现了对音视频相关的处理,能够快速的处理音视频,大概功能包括:音视频剪切,音视频转码,音视频解码原始数据,音视频编码,视频转图片或gif,视频添加水印,多画面拼接,音频混音,视频亮度和对比度,音频淡入和淡出效果等
Stars: ✭ 394 (-8.8%)
Mutual labels:  media

Charles

Build Status Download

Charles is a local file selector for Android. You can

  • Use it in Activity or Fragment
  • Select multi-media file including images, videos, audio and documents
  • Apply different themes, including two built-in themes and custom themes
  • Restrict different screen orientations
  • Find more by yourself
Charles Style Charles Dark Style Empty View
Charles Style Empty View Charles Empty Layout

Download

  • Add the JitPack repository to your build file:
allprojects {
    repositories {
        jcenter()
    }
}
  • Add the dependency:
dependencies {
    implementation 'io.github.tonnyl:charles:x.y.z'
}

ProGuard

If you use Glide as your image engine, add rules as Glide's README says. And add extra rule:

-dontwarn com.squareup.picasso.**

If you use Picasso as your image engine, add rules as Picasso's README says. And add extra rule:

-dontwarn com.bumptech.glide.**

Attention: The above progurad rules are correct.

Usage

Permission

The library requires two permissions:

  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE

So if you are targeting Android 6.0+, you need to handle runtime permission request before next step.

Simple Usage Snippet

Start CharlesActivity from current Activity or Fragment:

Charles.from(this@MainActivity)
        .choose()
        .maxSelectable(9)
        .progressRate(true)
        .theme(R.style.Charles)
        .imageEngine(GlideEngine())
        .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
        .forResult(REQUEST_CODE_CHOOSE)

Themes

There are two built-in themes you can use to start CharlesActivity:

  • R.style.Charles (light mode)
  • R.style.CharlesDark (dark mode)

And Also you can define your own theme as you wish.

Receive Result

In onActivityResult() callback of the starting Activity or Fragment:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE_CHOOSE && resultCode == Activity.RESULT_OK) {
        val uris = Charles.obtainResult(data)
        val paths = Charles.obtainPathResult(data)

        Log.d("charles", "uris: $uris")
        Log.d("charles", "paths: $paths")
    }
}

More

Find more details about Charles in wiki.

Contribution

Discussions and pull requests are welcomed 💖.

Thanks

This library is inspired by Matisse and uses some of its source code.

License

Charles is under the MIT license. See the LICENSE for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].