Commit Graph

42 Commits

Author SHA1 Message Date
Yiwen Chen
301b5bf50c Make RingtoneManager and Ringtone class support VolumeShaper
Bug: 120789399
Test: When finish the whole change, flash into a dev phone to test first.
Change-Id: I4620fac5f1c34d37b3b33565cebbea2c091a5d08
2018-12-21 16:11:27 -08:00
Dongwon Kang
0d8fe14ad7 RingtoneManager: add @Nullable to openDefaultRingtoneUri().
Bug: 120072398
Test: make update-api
Change-Id: I9fd43ac80f643fe81b4ed16d84b4253f19899c1c
2018-11-30 16:18:44 -08:00
Jeff Sharkey
ad2c7ac087 Move away from deprecated "_data" column.
As part of the new privacy work in Q, apps no longer have access to
raw filesystem paths, since they may live outside of the current
sandbox.  Instead, we need to use CR.openFileDescriptor().

Bug: 111960973
Test: builds, boots
Change-Id: I6e52a7dcb39850d9835183c44f5f638a5bf77202
2018-10-26 14:02:51 -06:00
Dongwon Kang
c049bd26ea Add RingtoneManager.openDefaultRingtoneUri()
This enables a way for client to open ringtone cache from DE storage
area before user is unlocked.

Test: RingtoneManagerTest and MediaPlayer2Test
Bug: 112767549
Change-Id: Ica929f079dbc14f8541d92b5c9b9a0db502d3d64
2018-10-10 17:09:18 -07:00
Mathew Inwood
31a792ac29 Add @UnsupportedAppUsage annotations
For packages:
  android.media.tv
  android.media.soundtrigger
  android.media.session
  android.media.projection
  android.media.midi
  android.media.effect.effects
  android.media.effect
  android.media.browse
  android.media.audiopolicy
  android.media.audiofx
  android.media

This is an automatically generated CL. See go/UnsupportedAppUsage
for more details.

Exempted-From-Owner-Approval: Mechanical changes to the codebase
which have been approved by Android API council and announced on
android-eng@

Bug: 110868826
Test: m
Change-Id: I3bd40136d7fc948f66eca6b2d139c15e39c5a248
2018-08-17 08:54:26 +01:00
Daisuke Teranishi
2e92e5c30b Merge "Use correct filename when adding to ringtone" am: daff857ffd
am: 24062f05d3

Change-Id: Id9d89491c5604b1611b22f215827f55de98f8ac2
2018-05-24 12:18:14 -07:00
Daisuke Teranishi
ce4d67b6d0 Use correct filename when adding to ringtone
If the title of the music file includes "/", it's recognized
as a directory separator.
Use correct filename to select the file properly.

Bug: 80202253
Test: Add mp3 which title includes "/" to ringtone

Change-Id: I9bb05f6fe2d7d4dbbdf4f67db7ac6fde04707979
2018-05-24 11:39:33 +09:00
Jeff Sharkey
b18f899241 Use sendfile() and splice() to speed up copying.
There are several places across the OS where Java code is simply
copying data between two points, which requires bringing that data
out into userspace before going back into the kernel.  (That's pretty
lame.)  The patches for the recent Meltdown/Spectre security issues
have made this overhead even worse, so it's finally time to move this
copying directly into the kernel.

This change adds a couple new FileUtils.copy() methods which inspect
the given streams/FDs, and attempt to do as much optimization as
possible before falling back to a slower userspace-based copy.

Benchmarks are showing typical improvements of 44% for 32KB files,
50% for 32MB files, and 35% for 32MB pipes.

Plenty of tests are included, and there's a simple kill-switch that
can be used to enable/disable the feature if it starts causing any
trouble.  (A future CL will enable the optimizations.)

Test: bit FrameworksCoreTests:android.os.FileUtilsTest
Test: vogar --mode app_process --benchmark frameworks/base/core/tests/benchmarks/src/android/os/FileUtilsBenchmark.java
Bug: 71932978
Change-Id: I52518d529da5d961610998b9f61399064d8025cd
2018-01-31 21:47:22 -07:00
Christine Franks
8fbedbbf19 Allow ogg files to be selected as ringtones
Bug: 37891455
Test: manual - open custom phone ringtone picker in settings, navigate
to an .ogg file, and it should be selectable; select it and it should
add itself to the list of available ringtones, and play its sample
correctly.

Change-Id: I33b1ff07d0b43646c807ba0994efa4f6d8d95cae
2017-05-09 18:27:21 -07:00
Robin Lee
7af9a74431 Don't copy ringtones when profile sync goes off
Experimentally, it makes more sense to more people to have the parent
setting as an overlay not a concrete thing.

Test: make cts -j30 && cts-tradefed run cts --module CtsDevicePolicyManagerTestCases --test 'com.android.cts.devicepolicy.ManagedProfileTest#testRingtoneSyncAutoDisableRingtone' </dev/null 2>&1
Bug: 34730524
Change-Id: I5f804713def9e54921b90e4f5cea742ba8aaa685
2017-02-23 02:47:24 +00:00
Andre Lago
7bdc6d80ef [SettingsProvider] Auto disable ringtone sync
Disable the SYNC_PARENT_SOUNDS setting if a work profile ringtone is set

Test: cts-tradefed --test com.android.cts.devicepolicy.ManagedProfileTest
Bug: 30658854
Change-Id: I172f5396b47f03ac8afa365db0ec90f3a2dd0e29
2017-01-24 11:12:02 +00:00
Andre Lago
dc50b548ff [RingtoneManager] Option for cursor to list parent sounds
Modify RingtoneManager.getCursor so that the cursor returned also
retrieves the parent profile's ringtones, adding the parent's id to
those ringtones

Test: manual (use ringtone picker in associated CL)
Bug: 30658854
Change-Id: I3b52b0dc41a5a3ff1a71a89fd8a0d33023021aba
2017-01-05 19:06:35 +00:00
Andre Lago
178693a5df [RingtoneManager] API to delete custom ringtones
Given a Uri, if it is a media file in one of the external ringtone
storages, this API deletes its file and database entry.

Test: manual - associated CL
Bug: 30658854
Change-Id: I987bd18577960f9a2b02ce37a4a2d5d033d7a969
2017-01-05 19:06:34 +00:00
Andre Lago
7c8ccb3ce4 [RingtoneManager] API to add custom ringtones
So far, the only way for users to add custom ringtones was to either use
a 3rd party app or copy files to a specific directory in the storage,
and there was no API to make it easier to add custom ringtones.

This CL creates a hidden API in RingtoneManager that allows adding any
audio file as a custom ringtone, by copying that file into the ringtone
storage and asking MediaScanner to scan that file.

This API is not intended to be used by existing apps, but an associated CL
uses it in RingtonePickerActivity

Test: make && vendor/google/tools/flashall, plus manual testing with associated CL
Bug: 30658854
Change-Id: I2b291847c5430e1fc2c3fc6a351b6111a49fcbf3
2017-01-05 19:06:14 +00:00
Jean-Michel Trivi
2f7511fd06 Stream types are for volume control
Deprecate methods where stream types are not used for
  volume control operations.
Add a warning in the logs about the use of stream
  types to encourage migration to audio attributes.
Since STREAM_ACCESSIBILITY is added in O for the
  volume of a11y audio, throw an exception when
  trying to use it for playback.

Test: make offline-sdk-docs
Bug: 30955183

Change-Id: I7fcf79f1de68f217a9b19561aa1325ade169dfcf
2016-11-30 09:54:23 -08:00
TreeHugger Robot
a92a8cf905 Merge "[RingtoneManager] Remove user id from internal Uri" 2016-09-29 14:03:36 +00:00
Andre Lago
760d27149d [RingtoneManager] Remove user id from internal Uri
Prevent system ringtones from leaking with user id's on them

Test: manual
Change-Id: Ia4492c75211f9637e075450763f201bf24c5bf03
2016-09-29 13:19:21 +01:00
Robin Lee
9d5b8368d7 Media: check Settings.AUTHORITY without userId
Otherwise we'll miss a trick and not take the settings provider
shortcut for playing work ringtones.

Bug: 30658854
Change-Id: I378cabe0ba426a2c91919b3df33a525d41fe3d0d
2016-09-26 13:49:52 +00:00
Andre Lago
3fa139c7b2 [media] Separate ringtones for managed profiles
Separate the default system ringtone settings for managed profiles,
which previously used the same default ringtones as the personal profile
they belong to

Bug: 30658854
Change-Id: I22c69c7b8d31c7c424f5e00a3d9febac98b93d74
2016-08-18 09:58:26 +01:00
Jeff Sharkey
265551de72 Resolve ringtone Uris using Context user.
The Context passed in has already been tied strongly to a specific
user, so resolve Settings based on that user.

Bug: 27568161
Change-Id: I1365c25f97c4177afe592d7c9f410eab777110e7
2016-03-09 14:56:01 -07:00
Jeff Sharkey
783ee0ca87 Ask RingtonePlayer to open data for caching.
When setting default ringtones, RingtoneManager now caches the
selected media for playback before the device is unlocked.  However,
this API hasn't historically required the caller to hold storage
permissions.

To keep this working, we attempt to delegate ringtone access over
through RingtonePlayer, which is what we do for playback.  However,
because we're caching the real ringtone bits now, we need to be much
more careful about the PFDs we're willing to return.  This change
requires that they be in external storage, and that they have the
ringtone/alarm/notification bit set.

Bug: 27366059
Change-Id: I59c2adc1d1250a3eac281f190f35a7cb3119967b
2016-03-05 17:23:32 -07:00
Jeff Sharkey
97f061bb7c Don't try caching null ringtones.
Bug: 27330629
Change-Id: Id09d10d6f4a3a20782480647c68a5c94ef69e7b3
2016-02-24 09:54:16 -07:00
Jeff Sharkey
413573ac59 Offer to cache ringtones in system DE storage.
Ringtones often live on shared media, which is now encrypted with CE
keys and not available until after the user is unlocked.  To improve
the user experience while locked, cache the default ringtone,
notification sound, and alarm sound in a DE storage area.

Bug: 26730753
Change-Id: Ie6ad7790af4c87dd25759df3ed017e3b91a2fb87
2016-02-23 13:27:00 -07:00
Jean-Michel Trivi
13ceb54a19 RingtoneManager: query results depend on caller permission
When querying for ringtones, only look for ringtones on external
  storage when the caller has READ_EXTERNAL_STORAGE.
Document this behavior in the javadoc of the affected methods.

Bug 22545684

Change-Id: Iae9c9a4ccaf635da8af2ac289b6b4df1b16c5d11
2015-07-22 15:48:06 -07:00
Jean-Michel Trivi
42697ffd42 Extra for ACTION_RINGTONE_PICKER for AudioAttributes flags
Add EXTRA_RINGTONE_AUDIO_ATTRIBUTES_FLAGS to allow specifying
  AudioAttributes flags that will be used when playing the
  Ringtone.

Bug 19407114

Change-Id: I56a77d7308b21afc0766356e1b6a2d76dca21221
2015-05-20 19:14:45 -07:00
John Spurlock
6090995951 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
Mike Lockwood
322780496f Fix javadoc errors for @deprecated tags with no explanatory comment
Change-Id: I38a31facf7d4a9cd13645516f25b4305df65c618
2013-04-29 18:21:25 -07:00
Mike Lockwood
853ad6fbe3 Remove obsolete OMA-DRM support
Change-Id: Ic6008d4c9f8b9cd9fd4efec070260227af70559c
2013-04-29 16:48:13 -07:00
Jeff Sharkey
098d580cc2 Migrate ringtone playback to SystemUI.
Introduce IRingtonePlayer, which handles playback for both Ringtone
objects and Notifications. SystemUI now hosts this player, which it
registers with AudioService. It also keeps MediaPlayer instances
warm, and cleans them up after stop() or Binder death.

Move both Ringtone and NotificationManagerService to play back audio
through this new interface.

Bug: 6376128, 6350773
Change-Id: I1dcb86d16ee3c4f07cdb2248d33dcff4ead3609a
2012-04-27 14:15:05 -07:00
Jeff Sharkey
6dcf382b1b Move RINGTONE_PICKER to handle external storage.
To give RINGTONE_PICKER external storage access, move it from system
to MediaProvider.  Fix OOBE when getRingtoneUri() kicked requery().

Bug: 6346701
Change-Id: I837002eef0580b8cdd8920a27b068c745995a8a3
2012-04-25 14:56:13 -07:00
Glenn Kasten
30c918ce7f Use final on new member variables
Use final for member fields initialized to a new and that are never modified.

Change-Id: I042352c7bc21879613e7a50b1205b6923f8083cf
2012-01-27 16:13:00 -08:00
Gloria Wang
82428a862f - Retrieve is_drm in MediaMetadataRetriever.
- Add one more column in MediaStore to indicate whether a
  media file is drm-protected.
- Remove old DRM code from Ringtone
- Use the new DRM code in RingtoneManager

Change-Id: I1311fd1c04841c2cd47df6c901589966cf55a692
2011-07-01 16:52:28 -07:00
Marco Nelissen
69f593ccb7 Support for selection of silent ringtone from the ringtone picker.
This doesn't actually enable that, but adds the necessary code to make it work when enabled, and cleans up some ringtone related code.
2009-07-28 16:06:38 -07:00
Marco Nelissen
513d8068b4 am 899725b0: Make sure ringtones are sorted correctly.
Merge commit '899725b05dd5c8c51f9f802d4f0a7190532ce0a5'

* commit '899725b05dd5c8c51f9f802d4f0a7190532ce0a5':
  Make sure ringtones are sorted correctly.
2009-07-06 12:00:02 -07:00
Marco Nelissen
899725b05d Make sure ringtones are sorted correctly. 2009-07-06 10:57:01 -07:00
Dianne Hackborn
935ae463d4 AI 145994: Integrate #145778 from Donut.
Automated import of CL 145994
2009-04-13 16:11:55 -07:00
Patrick Scott
3156bb00dd AI 145870: Add a build property for the default alarm alert. Update the various
framework classes to deal with the new property. Also update various
  documentation that mentions the default ringtones.
  Use the build property as the default alert when the user has not chosen
  an alert for an alarm. This is also used if the alarm alert is null when
  the alarm fires.
  BUG=1723684

Automated import of CL 145870
2009-04-13 09:57:38 -07:00
Andy Stadler
f8a7ceaef2 AI 145778: Manual merge changes 145382-145384 from cupcake.
Automated import of CL 145778
2009-04-10 16:24:47 -07:00
The Android Open Source Project
9066cfe988 auto import from //depot/cupcake/@135843 2009-03-03 19:31:44 -08:00
The Android Open Source Project
d83a98f4ce auto import from //depot/cupcake/@135843 2009-03-03 18:28:45 -08:00
The Android Open Source Project
f013e1afd1 Code drop from //branches/cupcake/...@124589 2008-12-17 18:05:43 -08:00
The Android Open Source Project
54b6cfa9a9 Initial Contribution 2008-10-21 07:00:00 -07:00