1
0
Fork 0
forked from len0rd/rockbox
Commit graph

105 commits

Author SHA1 Message Date
Thomas Martitz
9f242e7be4 android: Rewrite PCM playback without OnPlaybackPositionUpdateListener.
The old way actually mis-used the API (I misunderstood the docs) because
it specified the marker position as a "low buffer watermark" but instead of a
future playback head position.

The replacement is a simple thread that writes the data regardless of the
filling level of the buffer (write() will just block) and polls the playback
state periodically.

Change-Id: If29237cee4ce78dc42f5a8320878bab0cafe78f7
Reviewed-on: http://gerrit.rockbox.org/422
Tested-by: Dominik Riebeling <Dominik.Riebeling@gmail.com>
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-04-01 11:26:12 +02:00
Thomas Martitz
ef38221602 android: Hopefully fix a rare hang of the UI.
Sometimes (and perhaps only on some devices) Android's YesNo dialog
loses focus and is put to the background. Since the native code waits on the
result (which is then impossible to happen) it would become impossible
to further control Rockbox. This is an attempt to fix as I cannot reproduce
the problem on my device(s).

Change-Id: Iff849ff4be5e8f41922fb7d36491d860486c6441
2013-01-18 09:49:46 +01:00
Thomas Martitz
d798c721e5 android: Update to SDK r16 and ndk r8d.
SDK r17 is out, however there it only ships a x86 system image for r16 so
it's preferable.

Change-Id: Idc4d375debf407a36c2dc6421420bdbd74ab25ca
2013-01-09 10:33:08 +01:00
Thomas Martitz
5f7d5b854b android: Fix FS#12670, regressed back button behavior.
3f4be75 introduced this regression where the back button stopped working
as intended. Explicitely request the focus on the RockboxFramebuffer
object to fix.

Change-Id: Ibc67e3d02e076674a086d43c5967370c4524fd14
2012-05-13 20:20:50 +02:00
Thomas Martitz
3f4be75024 android: Bring back broken unzip progress dialog.
Change-Id: I7c788f4fcbdf15aa4955f3970db045b47207f8de
2012-04-17 17:19:31 +02:00
Thomas Martitz
76664d22df android: only output unzip log message when performing the unzip.
Change-Id: I16dda180d51832569097d7dd1866ba7f56cdf876
2012-03-25 23:26:58 +02:00
Thomas Martitz
c8317eb596 android: clean-up and some refactoring in java code.
Change-Id: I78cadb0b71bcb65a55006bf52cfe3e6cda891a38
2012-03-25 22:28:07 +02:00
Thomas Martitz
2e03c2a8b3 android: Remove hack not needed anymore (since 58e097d).
Change-Id: I3396a1245fe5fcbb5d2494bfabf8972c7617e6b1
2012-03-22 23:46:54 +01:00
Thomas Martitz
901521d6de android: lcd_update/_rect() changes
* rename some java methods (to update(), initialize())
* re-create the ByteBuffer object from the framebuffer on every update.
  This is needed now since 2c71aa9 added the possiblity for lcd_framebuffer to change.
* do so, along with the creation of the dirty Rect object, in native code.

Change-Id: Id39ea8e4b6148987c5f216a87e0ff3c8e7babe92
2012-03-22 23:26:50 +01:00
Thomas Martitz
4d2ab32339 Android: Work around an android bug.
BitmapFactory.decodeFile() fails when called outside the main thread.
Work around by running the code on the main thread. This also has the advantage
of off-loading from the Rockbox thread which should improve track skipping
delays.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30825 a1c6a512-1295-4272-9138-f99709370657
2011-10-22 15:28:09 +00:00
Dominik Riebeling
ed15d53919 Android: show Album Art in notification area.
Instead of showing the small Rockbox clef logo show the Album Art if available.
If no Album Art is available show the clef logo about the same size as the
Album Art.

- The notification area process doesn't have permissions to access the SD card.
  Therefore the image needs to be read and set as Bitmap instead of simply
  setting the Uri to it as done in the widget.
- Passing a full sized image to the Notification Manager can cause issues
  (Rockbox UI hanging, notification not updating anymore, force closes). Scale
  down the image to the same size the launcher icon has to avoid this. This
  also makes the logo shown when no Album Art is available have the same size
  which looks nicer than having different sizes. Album Art images are allowed
  to be wider since there is enough room.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30629 a1c6a512-1295-4272-9138-f99709370657
2011-10-01 20:07:57 +00:00
Björn Stenberg
27a6d519f0 Disable android status bar again, until we have a generic theme solution.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30620 a1c6a512-1295-4272-9138-f99709370657
2011-09-30 06:30:10 +00:00
Björn Stenberg
d20328609d Enable Android status bar.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30617 a1c6a512-1295-4272-9138-f99709370657
2011-09-28 19:02:30 +00:00
Dominik Riebeling
1b70a7079e Android: store resources on SD card.
On the first start Rockbox extracts libmisc.so which in fact is a zip file
holding resource files like theme bitmaps. Those can requires quite a bit of
memory.

As extended version of FS#12063 resources will now be extracted to SD card if
the file /sdcard/rockbox/rockbox-info.txt is found. This file is part of the
extracted resources and can therefore safely be used for checking.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30430 a1c6a512-1295-4272-9138-f99709370657
2011-09-04 19:07:14 +00:00
Thomas Martitz
c6ca81329a Android: Fix a few java warnings. Upgrade ndk platform to 2.0 (don't support 1.6 anymore).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30293 a1c6a512-1295-4272-9138-f99709370657
2011-08-14 08:55:16 +00:00
Thomas Martitz
b2f52477df Android: Change headphone detection to call into native.
Making a JNI call from tick tasks is not permitted as the underlying thread
is not attached to the Java VM. This is an error and crashes in the emulator
(which has stricter JNI checks enabled by default).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30173 a1c6a512-1295-4272-9138-f99709370657
2011-07-19 23:44:56 +00:00
Thomas Martitz
64b5f1c625 Android: Rework RunForegroundManager (again)
Restore pre-r29562 way of doing compatibility and adapt
it to what MediaButtonReceiver looks like. I.e. assume the new API is there,
and fall back to the old API if an exception is raised because the API isn't there.
The old API still needs to be discovered through reflection because it's removed
entirely from Honeycomb.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30165 a1c6a512-1295-4272-9138-f99709370657
2011-07-18 22:04:08 +00:00
Thomas Martitz
a5e7354b20 Android: Fix long unnoticed typo in function call, leading to the wrong function being called.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30163 a1c6a512-1295-4272-9138-f99709370657
2011-07-18 21:30:06 +00:00
Thomas Martitz
5721d4cfbf Forgot to add new class file in r30161.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30162 a1c6a512-1295-4272-9138-f99709370657
2011-07-18 21:28:02 +00:00
Thomas Martitz
02b2b285d6 Android: Slightly rework logging to logcat by offloading duplicated code to a new helper class.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30161 a1c6a512-1295-4272-9138-f99709370657
2011-07-18 21:26:03 +00:00
Thomas Martitz
33de9cdaef Android: Refactor some of the glue code.
* Cleanup RockboxService.java by moving the battery and
  headphone monitors to separate classes and detaching their instances
* Move those monitors and RockboxTelephony.java into a new
  monitors subdirectory
* Call those monitors all the same from native code by creating
  the objects there

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30160 a1c6a512-1295-4272-9138-f99709370657
2011-07-18 21:02:47 +00:00
Thomas Martitz
76b6db375a Android: Fix sporadic force closes.
Android restarts services that are killed during memory pressure.
The intent parameter is null then. This caused a null pointer exception.
Now replace this null intent with one saying we've been restarted.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30156 a1c6a512-1295-4272-9138-f99709370657
2011-07-18 18:56:29 +00:00
Thomas Martitz
dace72166e Android: Greatly simplify the pcm callback mechanism on both, the Java and the C side. Should be more reliable now (if the old wasn't already).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29963 a1c6a512-1295-4272-9138-f99709370657
2011-06-05 09:44:57 +00:00
Thomas Martitz
b9747ca206 Hopefully FS#12064 - Android: Possible fix for audio stopping on high CPU load.
It's not enterly clear what fixed it but it seems to be a combination of
increasing the buffer size and reducing the amount of code run in the callback.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29961 a1c6a512-1295-4272-9138-f99709370657
2011-06-04 20:39:56 +00:00
Dominik Riebeling
d25a61f01c Android: listen to ACTION_AUDIO_BECOMING_NOISY for headphone (FS#12097).
This event is sent before the audio is routed back to the speaker so we
get the information about the unplugged headphone notably earlier.

Decrease the debouncing of the headphone status from 1s to 0.5s to work
around audio still getting played back via the speaker due to the pause
delay by debouncing. On Android we shouldn't need the debouncing at all.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29957 a1c6a512-1295-4272-9138-f99709370657
2011-06-04 19:17:51 +00:00
Dominik Riebeling
6c22be4a3d Android: implement headphone detection thus enabling pause on unplug (FS#12097).
Listen to headphone plug events. There are currently two glitches with this:
- Android takes a while until it reports the unplug event, so there will be
  some delay until playback gets paused. This is an Android limitation.
- Rockbox debounces headphone state changes for one second. Therefore playback
  will shortly be routed to the speaker on unplug until Rockbox does the actual
  pause.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29956 a1c6a512-1295-4272-9138-f99709370657
2011-06-04 19:17:47 +00:00
Thomas Martitz
94dacca559 Rework MediaButtonReceiver a bit:
* Get rid of reflection since the lack of methods can be detected via exceptions
 * Use requestAudioFocus/abandonAudioFocus APIs on 2.2+ to play nice with other music apps.
 * Don't unregister the receiver on exit so we can receive media button presses (and startup the service) after idle poweroff (hopefully it's ok if mMediaButtonReceiver is garbage collected)

This should fix that Android calls the standard music app sometimes when those buttons are pressed.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29865 a1c6a512-1295-4272-9138-f99709370657
2011-05-13 11:26:18 +00:00
Dominik Riebeling
968db0edff Fix some whitespace errors.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29712 a1c6a512-1295-4272-9138-f99709370657
2011-04-14 17:22:52 +00:00
Björn Stenberg
ce755dd9c5 Only set volume on SYS_VOLUME_CHANGED the first time. Workaround for FS#12034.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29663 a1c6a512-1295-4272-9138-f99709370657
2011-03-31 07:04:44 +00:00
Thomas Martitz
8c46ddf9d7 Android: Implement app shutdown and thus, sleep timer.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29602 a1c6a512-1295-4272-9138-f99709370657
2011-03-16 15:17:24 +00:00
Thomas Martitz
efa9f13500 Android: Fix widget albumart display on pre-2.2 devices.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29600 a1c6a512-1295-4272-9138-f99709370657
2011-03-16 11:38:49 +00:00
Björn Stenberg
e50cc0e3d7 Listen to and follow external Android volume changes. (Based on FS#11914 by Maurus Cuelenaere)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29586 a1c6a512-1295-4272-9138-f99709370657
2011-03-14 12:25:48 +00:00
Björn Stenberg
00f75c92bf Use the pcm volume to add finer steps between every android stream volume step.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29573 a1c6a512-1295-4272-9138-f99709370657
2011-03-11 20:40:19 +00:00
Maurus Cuelenaere
78d0fdab9c Android: get rid of warnings (no functional changes)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29566 a1c6a512-1295-4272-9138-f99709370657
2011-03-11 15:46:02 +00:00
Maurus Cuelenaere
cae7560f32 Android: future-proof the RunForegroundManager code to Honeycomb
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29562 a1c6a512-1295-4272-9138-f99709370657
2011-03-11 15:45:38 +00:00
Maurus Cuelenaere
fe6faf2e2c Android port: generate initial config when none is present with dynamically
generated values depending on your environment.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29560 a1c6a512-1295-4272-9138-f99709370657
2011-03-11 15:45:22 +00:00
Antoine Cellerier
fd7375c307 Ask for track information to be resent after creating a new widget.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29553 a1c6a512-1295-4272-9138-f99709370657
2011-03-09 18:46:55 +00:00
Antoine Cellerier
64cf0dd765 Looks like Android 2.3 is more strict when enforcing permissions. Explicitly declare allowed intents under the Service tag in AndroidManifest.xml.
Remove useless rockbox intent class.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29552 a1c6a512-1295-4272-9138-f99709370657
2011-03-09 18:04:05 +00:00
Thomas Martitz
883ff8507e Android: Show cover art in the widget (including option to hide it).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29437 a1c6a512-1295-4272-9138-f99709370657
2011-02-27 20:47:44 +00:00
Thomas Martitz
f1e3f5e6c4 Android: Add a 3x3 sized widget.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29409 a1c6a512-1295-4272-9138-f99709370657
2011-02-26 21:00:38 +00:00
Thomas Martitz
e6ae867206 Android: Remove notification item on pausing too.
Technically, the difference between stop and pause isn't important enough to keep it when no music is playing. This is how other media apps also act.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29405 a1c6a512-1295-4272-9138-f99709370657
2011-02-26 20:27:00 +00:00
Thomas Martitz
eb01664804 Android: Simplify media button intent generation in the widget and cleanup RockboxService accordingly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29404 a1c6a512-1295-4272-9138-f99709370657
2011-02-26 19:54:03 +00:00
Thomas Martitz
95e24dd7a5 Android:
* Re-create RockboxFramebuffer instance with every time there's a new Activity.
* Also, allow Rockbox to be started via multimedia buttons, immediately starting playback if wanted.

We don't need to keep the fb instance around when it backround, and it makes us less depending on it and the activity (less race conditions). And this is how you usually do it in Android apps.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29384 a1c6a512-1295-4272-9138-f99709370657
2011-02-23 01:10:54 +00:00
Thomas Martitz
d6ce7fe3d4 Android: Fix some race conditions and crashes on startup.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29341 a1c6a512-1295-4272-9138-f99709370657
2011-02-19 16:42:44 +00:00
Thomas Martitz
36af29f4d8 Android: Re-attach the media button receiver when entering Rockbox.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29335 a1c6a512-1295-4272-9138-f99709370657
2011-02-19 01:31:45 +00:00
Thomas Martitz
c9c28200c0 Correct setServiceActivity implementation
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29334 a1c6a512-1295-4272-9138-f99709370657
2011-02-19 01:26:45 +00:00
Thomas Martitz
144df92bfb Android: Rewrite lcd subsystem to use the SurfaceView API.
That enables drawing from outside the apps UI thread, i.e. from within the Rockbox native thread, without needing synchronization means, and adds determinism as to when the draw happens.
It simplifies the drawing routines and adds a convinient way of detecting whether drawing should happen or not (surfaceCreated/Destroyed).
It also restores max. fps on my phone which went down drastically with the gingerbread(CM7) update.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29333 a1c6a512-1295-4272-9138-f99709370657
2011-02-19 01:13:38 +00:00
Antoine Cellerier
c0c769c5a8 Add widgets to android port.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29170 a1c6a512-1295-4272-9138-f99709370657
2011-01-29 20:47:32 +00:00
Antoine Cellerier
f716e4fded Oops, this line wasn't supposed to make it into svn.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29133 a1c6a512-1295-4272-9138-f99709370657
2011-01-24 17:27:54 +00:00
Antoine Cellerier
ef980355c8 Move android notification display format logic to java code (no functional change, this is used by FS #11902).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29132 a1c6a512-1295-4272-9138-f99709370657
2011-01-24 17:10:56 +00:00