PieSender is an android file manager that allows easily transferring files or directories via wifi:
- Android Device --> Personal Computer
- Personal Computer --> Android Device
- Android Device --> Android Device
The only requirement is for both devices to share the same connection.
Android devices do not allow sending files via wifi but through wifi-direct, which is not provided by a wide range of devices. I wanted to make it easy to use wifi for most of android devices to transfer files, considering:
- most of them can create a wifi hotspot (allowing Android to Android transfers with no need of an intermediate router)
- all of them can connect to a wifi network (for Android --> Computer and Computer --> Android transfers)
There already exist some other solutions which I had the chance to try out, such as Dukto, but I though I could achieve a better user experience, add a few extra functionalities, and in the meanwhile have fun and gain more insight into the android development world.
- Browse directories from your file system (having informations such as name and size for file system entries)
- Automatic network discovery (A simple network broadcast based protocol to automatically discover all avaiable devices)
- Send a single file
- Send multiple files (in parallel using threads)
- Receive multiple files (in parallel)
- Search top bar for filtering current directory
- Web server (By building it respecting the same API contract from my django file server project cappuccino-server I can simply make re-use of the client from that project cappuccino-web and statically serve that to any browser that can reach the Android device through the network): this would make possible to transfer files from and to a computer with no need of having the Desktop version of the app
- Extra module for cappuccino-server if self-hosted on a RaspBerryPi
- Tag directories to synchronize
- Search top bar to look recursively into sub-directories
- Search top bar REGEX file filtering
- Model-View-Presenter Pattern
- View Holder Pattern - Efficient view caching
- Recycler View - next generation ListView
- File transfer demands handled with a queue (to limit parallel transfers number)
- All transfer threads inform the model of their progress, while transfers view refresh within controlled rate (storing last refresh request timestamp one can ignore further requests within a delay)
- Services handle background operations
- Progress bar effect through view overlay (exploting transparence and background color)
- Swipeable interface composed of 3 views: FileManager, Downloads, Uploads
- Android Databinding: Goodbye Presenter, hello ViewModel!
- Android Code That Scales, With MVP
- Using an ArrayAdapter with ListView
- AVLoadingIndicatorView
- Using lists and grids in Android with RecylerView - Tutorial
- Using the RecycleView
- RecycleView animations
- Bound Services
- MVP for Android: how to organize the presentation layer
- ViewHolder pattern
- Simple
ListFragment
withArrayAdapter
- Creating a File Browser in Android
- File Sender and Receiver + File name
- Bytes -> Long Conversion
- Long -> Bytes Conversion
- Network Discovery
- Async Task Loaders
- Check connection available
- Folder
- File Type Material pack