1395 Commits

Author SHA1 Message Date
Adrian Ulrich
5a15f52a29 Tighten lock in writeState 2017-09-24 20:27:15 +02:00
Adrian Ulrich
b62cc51689 Create notification early for headset events
Headset events are the only place where we are forced to use the startForegroundService call which requires us to call startForeground() within 5 sec.

This will *usually* work fine, but fails if the device somehow failes to be fast enough OR if there is no song available.
Having an option to create a notification in onStart() in any case avoids the ANR crash in such strange cases.
2017-09-17 13:57:31 +02:00
Adrian Ulrich
073896639a Revert cab1dc8fdd6235d1ade4733a627b870187190806 (while fixing conflicts).
The majority of people do not seem to like this feature, so lets go back to our old behaviour.
2017-09-07 21:31:20 +02:00
Adrian Ulrich
65fc2929b6 Fix ghost-seeks.
The pending seek info loaded from the state may not be used if the user hits < or > to restore the playback service.
If we keep the seek around, we would do an unexpected seek if we ever reach the saved song, which is not what we want.
2017-09-07 21:23:59 +02:00
Adrian Ulrich
674a34d6c2 Use startForegroundService on O for headset events.
The activity hack doesn't really work as it closes vanilla music if we receive an event while one of our activities is visible.
2017-09-07 21:13:02 +02:00
Adrian Ulrich
a3847edd70 Use ShortcutPseudoActivity.getIntent() in widgets. 2017-09-06 22:04:18 +02:00
Adrian Ulrich
a364b5b885 Use ShortcutPseudoActivity for headset events.
This works on Android 8 without calling startForegroundService() - ¯\_(ツ)_/¯
2017-09-06 21:55:14 +02:00
Adrian Ulrich
b79dfc49ba Reduce notification visibility modes to when_playing and always.
The NEVER didn't really work well since 5.x (we were more likely to get killed) and is broken on 8.x, so we just get rid of it.
2017-09-06 21:37:26 +02:00
Adrian Ulrich
59e98546c9 Unregister contentObserver while PlaybackService gets destroyed. 2017-09-03 15:30:03 +02:00
Adrian Ulrich
2808735a17 Set notification importance on Android 8 to LOW.
All > levels produces sound.
2017-09-03 14:50:49 +02:00
Adrian Ulrich
9fa33f6420 Use ShortcutPseudoActivity for widgets.
Android 8 does not allow us to directly start a background service, use the ShortcutPseudoActivity to do it anyway.

That's how we roll now.
2017-08-28 22:41:59 +02:00
Adrian Ulrich
4b06348059 fix notifications for android 8 2017-08-27 20:47:34 +02:00
Adrian Ulrich
d3b0436554 Sync FileProvider.java with android-7.0.0_r33 2017-08-27 19:41:52 +02:00
Adrian Ulrich
a104b68201 Use FileProvider to implement share function. 2017-08-27 19:21:22 +02:00
Adrian Ulrich
39168bc561 Add FileProvider.java (103998f0f71ce45147449044f57a6ba2618225a9) 2017-08-27 18:52:26 +02:00
Adrian Ulrich
1ad2a6fb8b Use postInvalidate instead of postInvalidateOnAnimation.
We still support android 4.0, which does not implement postInvalidateOnAnimation.
2017-08-26 09:50:18 +02:00
Adrian Ulrich
fa65bc393b add previous button to small notification 2017-08-22 21:34:26 +02:00
Adrian Ulrich
2b36ff3114 Add 'shortcuts' support 2017-08-11 21:49:31 +02:00
Adrian Ulrich
1b9bb0596d minor cover tweaks 2017-08-11 20:08:26 +02:00
Adrian Ulrich
caf24d645c improve cover artwork scaling 2017-08-10 12:39:27 +02:00
Adrian Ulrich
a44dca0d1b PlaylistDialog can handle LibraryAdapters, no need to cast to MediaAdapter 2017-08-10 10:59:14 +02:00
Adrian Ulrich
5d57fbea5b generateBitmap() doesn't like null songs.
But we may have to set a bitmap to null - just skip creating the cover if it would be null anyway.
2017-08-06 12:16:18 +02:00
Adrian Ulrich
34ad6a24b4 add help fragment 2017-08-05 13:02:56 +02:00
Adrian Ulrich
6bc3976dbb use context.getApplicationContext in MediaLibrary.
This ensures that we are not handing an Activity to our children
2017-08-05 12:28:48 +02:00
Adrian Ulrich
6bbc3800c2 Re-implement CoverView.
This implementation should hopefully drop less frames.
2017-08-03 20:35:56 +02:00
Adrian Ulrich
b308b97880 pick up ADTS files 2017-08-03 20:28:16 +02:00
Adrian Ulrich
5ccd9cb9a6 Always update album entries with new data 2017-07-16 19:32:45 +02:00
Dennis Guse
cab1dc8fdd Mark notifications showing media content as private. (#627)
* Mark notifications showing media content as private.

* Removed unnecessary setting of private/public for notifications
2017-07-05 18:52:44 +02:00
Adrian Ulrich
df853b06c3 increase precision in dpi calculation
Some devices have a density like 2.7, so we should use a float to do the calculation
2017-07-03 10:48:47 +02:00
Adrian Ulrich
53f097b469 sync with bastp 2017-07-03 10:03:05 +02:00
Adrian Ulrich
2666afd234 Wrap mirror links result in try/catch.
This seems to be racy on the receiver side and i have no real way to test it :-/
2017-07-03 09:21:25 +02:00
Adrian Ulrich
cd03f0b1f5 calculate cover sizes dynamically 2017-07-02 16:10:44 +02:00
Adrian Ulrich
0d4c8685ae handle NULLs in fastscroll alphabet.
Display a question mark if the value was NULL, this enables the fastscroller to scroll to NULL columns.
2017-07-02 15:41:13 +02:00
Adrian Ulrich
753410bbef rename getQueuePositionForSong into getQueuePositionForSongId() 2017-07-02 14:26:23 +02:00
Antic1tizen One
117572eb7c Jump to song in queue if picked just one (#624)
* Bump gradle versions needed for build

Android Studio already refuses to build it as-is,
so alter the versions required.

* Rename mode -> action for better readability

* Fix incorrect description on getByPos from timeline

* Jump to song in queue if picked one. Implements #604
2017-07-02 14:24:11 +02:00
Adrian Ulrich
023f0ef37f Workaround for samsung devices.
Looks like Samsunb broke getExternalMediaDirs() on 5.x as it tends to return a null File sometimes.

This code checks for it and falls back to the old case on total failure.
2017-06-26 19:38:06 +02:00
Adrian Ulrich
f88f96d615 default to Notification.PRIORITY_HIGH 2017-06-24 13:05:02 +02:00
Adrian Ulrich
ab91bda772 convert unixtime to string 2017-06-21 21:53:10 +02:00
Adrian Ulrich
345e45533c handle KEYCODE_SEARCH in FullPlaybackActivity 2017-06-21 21:00:11 +02:00
Adrian Ulrich
94b7566881 Handle KEYCODE_SEARCH 2017-06-19 19:07:11 +02:00
Adrian Ulrich
b9f0d2db88 force use of index on left joins to song-contributors.
SQLite versions on Android 4.x fail to pick up the index, resulting in a full table scan which is pretty horrible for performance.
We therefore change the views to force sqlite using the index.
2017-06-19 18:55:29 +02:00
Adrian Ulrich
7612febbab improve media dirs detection on newer android releases.
use getExternalMediaDirs() if available instead of guessing the path to the sd-card.
2017-06-18 18:23:08 +02:00
Adrian Ulrich
012b53e1ea also blacklist .tmp and .bin files 2017-06-10 12:38:01 +02:00
Adrian Ulrich
3481503633 Support for adding any content:// style URI 2017-06-10 12:31:26 +02:00
Adrian Ulrich
efb107b063 Fix context menues inside SlidingView for Android 7.x 2017-06-09 23:13:49 +02:00
Adrian Ulrich
c2ed38f0af Fix out of bounds error.
We might call timeline.add() with an invalid position if we skipped a song due to being unfilled.
Use 'added' instead of 'j' to calculate the queue position.
2017-06-09 09:37:03 +02:00
Adrian Ulrich
e74180f62b Display total amount of play time in stats. 2017-06-08 15:13:38 +02:00
Adrian Ulrich
db02f11963 Minor design tweaks. 2017-06-08 14:56:07 +02:00
Adrian Ulrich
a1252fd2d6 bump DB version and trigger a full clean 2017-06-08 14:01:57 +02:00
Adrian Ulrich
d6b1da50fb Fix renames
We failed to fully remove any orphaned artists, albums references, this could result in duplicate items showing up in the songs view.
2017-06-08 11:18:02 +02:00