https://play.google.com/store/apps/details?id=com.mamewo.podplayer0
- Install "Android support repository" using Android SDK Manager
Install script: ci/snapci/init_android.sh
-
Clone source
git clone https://github.com/mamewotoko/podplayer.git git submodule update --init
-
Build
./gradlew assembleDebug
apk file created in ./app/build/outputs/apk/app-debug.apk
A file bin/podplayer-debug.apk is created if succeed.
./gradlew -t assembleDebug
-
Connect android device or start android emulator
-
Start testing
./gradlew spoon
-
A test report is created as
app/build/spoon/debug/index.html
-
To select test class, pass spoonClassName gradle property with test class name
./gradlew -PspoonClassName=com.mamewo.podplayer0.tests.TestPodplayerExpActivity spoon
- categorize TODOs below...
- release
- separate release for old devices and new ones
- update lib
- realm
- okhttp3
- glide
- UI
- use SwifeRefreshLayout
- add seek bar of audio?
- marking, tagging to audio position.
- A-B repeat?
- add favorite button?
- design layout with AndroidStudio
- use com.android.support:design (material design)
- notification
- add controll button to notificaiton
- use RecyclerView
- animation
- efficient memory use?
- material icon: change loading icon of pulltorefresh
- layout for TV (landscape)
- add activity for tv?
- display author info of episode/podcast
- podcast detail as activity
- channel/description or itunes:subtitle
- channel/copyright
- add function to save/cache podcast episode and audio file as files
- support adding podcast from link with pcast, podto, podcast schema
- add filter of language, region
- English<?>
- ask stop playing episode when exit menu is selected
- spoon test
- bug: MainActivityTest, PodcastActivity then testAbortReload blocks...
- add test of share function
- QR code
- test multiple test classes once / merge test result
- current situation: freeze?
- set "package" instrumentationArgs to start all test classes
- add test of content description (manual test)
- preference
- notification
- landscape UI
- add episode search UI
- enable episode long click
- add podcast to podcast site
- Luke's ENGLISH Podcast - Learn British English with Luke Thompson https://audioboom.com/channels/1919834.rss
- add weather news?
- fix bugs
- open Podcast list editor, press detail button, rotate screen -> crash -> selectedPodcastInfo_ is null, touched
- when prepare error occurs, cursor moves to next episode
- stop playing
- or mark error item and try playing next unerror item
- stop playing
- test: Solo.clickOnMenuItem does not work (when screen is landscape? e.g. 1280x800)
- menu key does not work
- fast load
- improve incremental update algorithm to reduce cpu usage
- problem: displayed episode is not played by click while loading episodes
- improve incremental update algorithm to reduce cpu usage
- podcast title should be nullable?
- change color of category text in preference screen
- add option to exit by pressing back button
- display confirm dialog: exit or playing background, live as servcie and display notification
- handle opml as input to specify podcast list
- share podcast with friend / author (add to preset)
- bluetooth
- Google+
- as text
- set default item / show notification in paused state
- start player service
- use minifyEnabled option of build.gradle
- disable logging
- fix lint warnings
- use
java.util.concurrent
instead ofjava.io.AsyncTask
- review lint.xml and enable appropriate options
- check report of code inspection of Android Studio
- enable Google App Indexing
- use
- support http auth for fetching podcast xml and episodes (#2)
- cache auth info for each host?
- support preemptive authentication: http://hc.apache.org/httpclient-3.x/authentication.html
- use username and password for podcast xml to get episode file
- ver1: simple authenticator host,port,realm,user,password,auth_method
- ver2: use AccountManager to manage host, username, password
- build podcast parser with gradle
- fix dependency
- commons-io
- okhttp3 (linked with podcast_parser)
- fix dependency
- sort episodes by pubdate
- fix sort crash
- or sort on database
- add test
- fix sort crash
- just add podcast url without check (preference)?
- use database to manage loaded episodes
- display mark which is already played, new item etc...
- to reduce reload of podcast
- show description of playing episode
- save podcast list and updated time as state
- add/mark listened item list
- add score thershold preference dialog
- add preference to display pubdate as "X days before"
- save latest few item to savedInstanceState
- filter not listened item only (preference)
- move state to service
- remove array adapter contents?
- use large notification
- change notification icon for Android4.0
- show both podcast title and episode title
- avoid flicker when button on notification pressed
- write additional podcast url to sd card?
- add confirm dialog to open web site
- improve UI to add podcast URL
- update main activity when setting is changed
- reset playing position after podcast selection is changed
- optimize initialization of podplayer
- setContentView takes long time
- Autoload: load when create activity or when podcast list setting is changed
- play episode which is clicked while preparing other episode
- add error handling
- write user guide?
- display playing icon in group of expandable list
The podplayer uses the following software, resource and tool.
- Pull To Refresh for Android Copyright (c) 2011 Johan Nilsson
- Glide
- realm/realm-java
- Meterial icons
- Gesture data is built with GestureBuilder sample application of android (legacy/GestureBuilder)
Copyright (c) 2012-2021 Takashi Masuyama. All rights reserved.
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.
Android, MediaPlayer, Podcast, AsyncTask, PullToRefresh, Gesture, Gradle, Spoon, FalconSpoon, Robotium, Glide, Travis CI
Takashi Masuyama < [email protected] > http://mamewo.ddo.jp/