The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
4.3KB

  1. $$VideoApi21
  2. //==============================================================================
  3. public class MediaControllerCallback extends MediaController.Callback
  4. {
  5. private native void mediaControllerAudioInfoChanged (long host, MediaController.PlaybackInfo info);
  6. private native void mediaControllerMetadataChanged (long host, MediaMetadata metadata);
  7. private native void mediaControllerPlaybackStateChanged (long host, PlaybackState state);
  8. private native void mediaControllerSessionDestroyed (long host);
  9. MediaControllerCallback (long hostToUse)
  10. {
  11. host = hostToUse;
  12. }
  13. @Override
  14. public void onAudioInfoChanged (MediaController.PlaybackInfo info)
  15. {
  16. mediaControllerAudioInfoChanged (host, info);
  17. }
  18. @Override
  19. public void onMetadataChanged (MediaMetadata metadata)
  20. {
  21. mediaControllerMetadataChanged (host, metadata);
  22. }
  23. @Override
  24. public void onPlaybackStateChanged (PlaybackState state)
  25. {
  26. mediaControllerPlaybackStateChanged (host, state);
  27. }
  28. @Override
  29. public void onQueueChanged (List<MediaSession.QueueItem> queue) {}
  30. @Override
  31. public void onSessionDestroyed()
  32. {
  33. mediaControllerSessionDestroyed (host);
  34. }
  35. private long host;
  36. }
  37. //==============================================================================
  38. public class MediaSessionCallback extends MediaSession.Callback
  39. {
  40. private native void mediaSessionPause (long host);
  41. private native void mediaSessionPlay (long host);
  42. private native void mediaSessionPlayFromMediaId (long host, String mediaId, Bundle extras);
  43. private native void mediaSessionSeekTo (long host, long pos);
  44. private native void mediaSessionStop (long host);
  45. MediaSessionCallback (long hostToUse)
  46. {
  47. host = hostToUse;
  48. }
  49. @Override
  50. public void onPause()
  51. {
  52. mediaSessionPause (host);
  53. }
  54. @Override
  55. public void onPlay()
  56. {
  57. mediaSessionPlay (host);
  58. }
  59. @Override
  60. public void onPlayFromMediaId (String mediaId, Bundle extras)
  61. {
  62. mediaSessionPlayFromMediaId (host, mediaId, extras);
  63. }
  64. @Override
  65. public void onSeekTo (long pos)
  66. {
  67. mediaSessionSeekTo (host, pos);
  68. }
  69. @Override
  70. public void onStop()
  71. {
  72. mediaSessionStop (host);
  73. }
  74. @Override
  75. public void onFastForward() {}
  76. @Override
  77. public boolean onMediaButtonEvent (Intent mediaButtonIntent)
  78. {
  79. return true;
  80. }
  81. @Override
  82. public void onRewind() {}
  83. @Override
  84. public void onSkipToNext() {}
  85. @Override
  86. public void onSkipToPrevious() {}
  87. @Override
  88. public void onSkipToQueueItem (long id) {}
  89. private long host;
  90. }
  91. //==============================================================================
  92. public class SystemVolumeObserver extends ContentObserver
  93. {
  94. private native void mediaSessionSystemVolumeChanged (long host);
  95. SystemVolumeObserver (Activity activityToUse, long hostToUse)
  96. {
  97. super (null);
  98. activity = activityToUse;
  99. host = hostToUse;
  100. }
  101. void setEnabled (boolean shouldBeEnabled)
  102. {
  103. if (shouldBeEnabled)
  104. activity.getApplicationContext().getContentResolver().registerContentObserver (android.provider.Settings.System.CONTENT_URI, true, this);
  105. else
  106. activity.getApplicationContext().getContentResolver().unregisterContentObserver (this);
  107. }
  108. @Override
  109. public void onChange (boolean selfChange, Uri uri)
  110. {
  111. if (uri.toString().startsWith ("content://settings/system/volume_music"))
  112. mediaSessionSystemVolumeChanged (host);
  113. }
  114. private Activity activity;
  115. private long host;
  116. }
  117. VideoApi21$$