Java 类android.media.RemoteControlClient 实例源码
项目:IdealMedia
文件:PlayerService.java
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
void registerRemoteControl(ComponentName rcvMedia) {
mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(rcvMedia);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(getApplicationContext(),
0, mediaButtonIntent, 0);
remoteControlClient = new RemoteControlClient(mediaPendingIntent);
remoteControlClient.setTransportControlFlags(
RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
);
mAudioManager.registerRemoteControlClient(remoteControlClient);
}
项目:DMAudioStreamer
文件:AudioStreamingService.java
@Override
public void onDestroy() {
super.onDestroy();
if (remoteControlClient != null) {
RemoteControlClient.MetadataEditor metadataEditor = remoteControlClient.editMetadata(true);
metadataEditor.clear();
metadataEditor.apply();
audioManager.unregisterRemoteControlClient(remoteControlClient);
}
try {
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if (mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}
} catch (Exception e) {
Log.e("tmessages", e.toString());
}
NotificationManager.getInstance().removeObserver(this, NotificationManager.audioProgressDidChanged);
NotificationManager.getInstance().removeObserver(this, NotificationManager.audioPlayStateChanged);
}
项目:GravityBox
文件:MusicTile.java
private void playbackStateUpdate(int state) {
boolean active;
switch (state) {
case RemoteControlClient.PLAYSTATE_PLAYING:
active = true;
break;
case RemoteControlClient.PLAYSTATE_ERROR:
case RemoteControlClient.PLAYSTATE_PAUSED:
default:
active = false;
break;
}
if (active != mActive) {
mActive = active;
refreshState();
if (DEBUG) log(getKey() + ": playbackStateUpdate("+state+")");
}
}
项目:EsperantoRadio
文件:Fjernbetjening.java
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void registrér() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) return;
App.audioManager.registerMediaButtonEventReceiver(fjernbetjeningReciever);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) return;
// 'det er irriterende at den ændre billedet på lock - screen, det skal være muligt at disable dette.'
if (!App.prefs.getBoolean("fjernbetjening", true)) return;
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON).setComponent(fjernbetjeningReciever);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(ApplicationSingleton.instans, 0, mediaButtonIntent, 0);
// create and register the remote control client
remoteControlClient = new RemoteControlClient(mediaPendingIntent);
remoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_NEXT
| RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
| RemoteControlClient.FLAG_KEY_MEDIA_STOP
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY
);
App.audioManager.registerRemoteControlClient(remoteControlClient);
}
项目:typhon
文件:ReadingFragment.java
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void registerRemoteControlClient(ComponentName componentName) {
audioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
Intent remoteControlIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
remoteControlIntent.setComponent(componentName);
RemoteControlClient localRemoteControlClient = new RemoteControlClient(
PendingIntent.getBroadcast(context, 0, remoteControlIntent, 0));
localRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_NEXT
| RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY
| RemoteControlClient.FLAG_KEY_MEDIA_PAUSE
);
audioManager.registerRemoteControlClient(localRemoteControlClient);
this.remoteControlClient = localRemoteControlClient;
}
项目:teardrop
文件:CompatIcs.java
/**
* Perform initialization required for RemoteControlClient.
*
* @param context A context to use.
* @param am The AudioManager service.
*/
public static void registerRemote(Context context, AudioManager am)
{
if (!MediaButtonReceiver.useHeadsetControls(context)) {
// RemoteControlClient requires MEDIA_BUTTON intent
return;
}
MediaButtonReceiver.registerMediaButton(context);
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(new ComponentName(context.getPackageName(), MediaButtonReceiver.class.getName()));
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(context, 0, mediaButtonIntent, 0);
RemoteControlClient remote = new RemoteControlClient(mediaPendingIntent);
int flags = RemoteControlClient.FLAG_KEY_MEDIA_NEXT
| RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY
| RemoteControlClient.FLAG_KEY_MEDIA_PAUSE;
remote.setTransportControlFlags(flags);
am.registerRemoteControlClient(remote);
sRemote = remote;
}
项目:teardrop
文件:CompatIcs.java
/**
* Update the remote with new metadata.
* {@link #registerRemote(Context, AudioManager)} must have been called
* first.
*
* @param context A context to use.
* @param song The song containing the new metadata.
* @param state PlaybackService state, used to determine playback state.
*/
public static void updateRemote(Context context, Song song, int state)
{
RemoteControlClient remote = sRemote;
if (remote == null)
return;
remote.setPlaybackState((state & PlaybackService.FLAG_PLAYING) != 0 ? RemoteControlClient.PLAYSTATE_PLAYING : RemoteControlClient.PLAYSTATE_PAUSED);
RemoteControlClient.MetadataEditor editor = remote.editMetadata(true);
if (song != null) {
editor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, song.artist);
editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, song.album);
editor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, song.title);
Bitmap bitmap = song.getCover(context);
if (bitmap != null) {
// Create a copy of the cover art, since RemoteControlClient likes
// to recycle what we give it.
bitmap = bitmap.copy(Bitmap.Config.RGB_565, false);
}
editor.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, bitmap);
}
editor.apply();
}
项目:vlc_android_win
文件:PlaybackService.java
/**
* A function to control the Remote Control Client. It is needed for
* compatibility with devices below Ice Cream Sandwich (4.0).
*
* @param state Playback state
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void setRemoteControlClientPlaybackState(int state) {
if (!AndroidUtil.isICSOrLater() || mRemoteControlClient == null)
return;
switch (state) {
case MediaPlayer.Event.Playing:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
break;
case MediaPlayer.Event.Paused:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
break;
case MediaPlayer.Event.Stopped:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
break;
}
}
项目:vlc_android_win
文件:PlaybackService.java
/**
* Set up the remote control and tell the system we want to be the default receiver for the MEDIA buttons
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void changeRemoteControlClient(AudioManager am, boolean acquire) {
if (acquire) {
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mRemoteControlClientReceiverComponent);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, 0);
// create and register the remote control client
mRemoteControlClient = new RemoteControlClient(mediaPendingIntent);
am.registerRemoteControlClient(mRemoteControlClient);
mRemoteControlClient.setTransportControlFlags(
RemoteControlClient.FLAG_KEY_MEDIA_PLAY |
RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |
RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
RemoteControlClient.FLAG_KEY_MEDIA_STOP);
} else {
am.unregisterRemoteControlClient(mRemoteControlClient);
mRemoteControlClient = null;
}
}
项目:Cheerleader
文件:MediaSessionWrapper.java
/**
* Propagate the playback state to the media session and the lock screen remote control.
* <p/>
* See also :
* {@link fr.tvbarthel.cheerleader.library.media.MediaSessionWrapper#PLAYBACK_STATE_STOPPED}
* {@link fr.tvbarthel.cheerleader.library.media.MediaSessionWrapper#PLAYBACK_STATE_PLAYING}
* {@link fr.tvbarthel.cheerleader.library.media.MediaSessionWrapper#PLAYBACK_STATE_PAUSED}
*
* @param state playback state.
*/
@SuppressWarnings("deprecation")
public void setPlaybackState(int state) {
switch (state) {
case PLAYBACK_STATE_STOPPED:
setRemoteControlClientPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
setMediaSessionCompatPlaybackState(PlaybackStateCompat.STATE_STOPPED);
mMediaSession.setActive(false);
break;
case PLAYBACK_STATE_PLAYING:
setRemoteControlClientPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
setMediaSessionCompatPlaybackState(PlaybackStateCompat.STATE_PLAYING);
mMediaSession.setActive(true);
break;
case PLAYBACK_STATE_PAUSED:
setRemoteControlClientPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
setMediaSessionCompatPlaybackState(PlaybackStateCompat.STATE_PAUSED);
break;
default:
Log.e(TAG, "Unknown playback state.");
break;
}
}
项目:VCL-Android
文件:PlaybackService.java
/**
* A function to control the Remote Control Client. It is needed for
* compatibility with devices below Ice Cream Sandwich (4.0).
*
* @param state Playback state
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void setRemoteControlClientPlaybackState(int state) {
if (!AndroidUtil.isICSOrLater() || mRemoteControlClient == null)
return;
switch (state) {
case MediaPlayer.Event.Playing:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
break;
case MediaPlayer.Event.Paused:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
break;
case MediaPlayer.Event.Stopped:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
break;
}
}
项目:VCL-Android
文件:PlaybackService.java
/**
* Set up the remote control and tell the system we want to be the default receiver for the MEDIA buttons
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void changeRemoteControlClient(AudioManager am, boolean acquire) {
if (acquire) {
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mRemoteControlClientReceiverComponent);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, 0);
// create and register the remote control client
mRemoteControlClient = new RemoteControlClient(mediaPendingIntent);
am.registerRemoteControlClient(mRemoteControlClient);
mRemoteControlClient.setTransportControlFlags(
RemoteControlClient.FLAG_KEY_MEDIA_PLAY |
RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |
RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
RemoteControlClient.FLAG_KEY_MEDIA_STOP);
} else {
am.unregisterRemoteControlClient(mRemoteControlClient);
mRemoteControlClient = null;
}
}
项目:Noyze
文件:RemoteControlKitKat.java
/**
* A map between {@link android.media.RemoteControlClient} flags and {@link android.media.session.PlaybackState} actions.
* @return The value to provide for {@link android.media.session.PlaybackState} for actions.
*/
private static long getPlaybackStateActions(final int transportControlFlags) {
final Map<Integer, Long> FLAG_MAP = new HashMap<>();
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_STOP, PlaybackStateCompat.ACTION_STOP);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_NEXT, PlaybackStateCompat.ACTION_SKIP_TO_NEXT);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS, PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_PAUSE, PlaybackStateCompat.ACTION_PAUSE);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_FAST_FORWARD, PlaybackStateCompat.ACTION_FAST_FORWARD);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_REWIND, PlaybackStateCompat.ACTION_REWIND);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_PLAY, PlaybackStateCompat.ACTION_PLAY);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE, PlaybackStateCompat.ACTION_PLAY_PAUSE);
FLAG_MAP.put(RemoteControlClient.FLAG_KEY_MEDIA_RATING, PlaybackStateCompat.ACTION_SET_RATING);
long actions = 0;
for (Map.Entry<Integer, Long> flags : FLAG_MAP.entrySet()) {
if ((transportControlFlags & flags.getKey()) == flags.getKey()) {
if (actions == 0)
actions = flags.getValue();
else
actions |= flags.getValue();
}
}
return actions;
}
项目:Noyze
文件:MediaProviderDelegate.java
static int getStateFromPlayState(PlayState playState) {
switch (playState) {
case BUFFERING:
return RemoteControlClient.PLAYSTATE_BUFFERING;
case ERROR:
return RemoteControlClient.PLAYSTATE_ERROR;
case FAST_FORWARDING:
return RemoteControlClient.PLAYSTATE_FAST_FORWARDING;
case PAUSED:
return RemoteControlClient.PLAYSTATE_PAUSED;
case PLAYING:
return RemoteControlClient.PLAYSTATE_PLAYING;
case REWINDING:
return RemoteControlClient.PLAYSTATE_REWINDING;
case SKIPPING_BACKWARDS:
return RemoteControlClient.PLAYSTATE_SKIPPING_BACKWARDS;
case SKIPPING_FORWARDS:
return RemoteControlClient.PLAYSTATE_SKIPPING_FORWARDS;
case STOPPED:
return RemoteControlClient.PLAYSTATE_STOPPED;
default:
return RemoteControlClient.PLAYSTATE_ERROR;
}
}
项目:Noyze
文件:PlaybackInfo.java
public boolean wasPlayingRecently() {
switch (mState) {
case RemoteControlClient.PLAYSTATE_PLAYING:
case RemoteControlClient.PLAYSTATE_FAST_FORWARDING:
case RemoteControlClient.PLAYSTATE_REWINDING:
case RemoteControlClient.PLAYSTATE_SKIPPING_FORWARDS:
case RemoteControlClient.PLAYSTATE_SKIPPING_BACKWARDS:
case RemoteControlClient.PLAYSTATE_BUFFERING:
// actively playing or about to play
return true;
case RemoteControlClient.PLAYSTATE_STOPPED:
case RemoteControlClient.PLAYSTATE_PAUSED:
case RemoteControlClient.PLAYSTATE_ERROR:
return ((SystemClock.elapsedRealtime() - mStateChangeTimeMs) < DISPLAY_TIMEOUT_MS);
default:
LOGE("PlaybackInfo", "Unknown playback state " + mState + " in wasPlayingRecently()");
return false;
}
}
项目:vlc-android
文件:PlaybackService.java
/**
* A function to control the Remote Control Client. It is needed for
* compatibility with devices below Ice Cream Sandwich (4.0).
*
* @param state Playback state
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void setRemoteControlClientPlaybackState(int state) {
if (!AndroidUtil.isICSOrLater() || mRemoteControlClient == null)
return;
switch (state) {
case MediaPlayer.Event.Playing:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
break;
case MediaPlayer.Event.Paused:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
break;
case MediaPlayer.Event.Stopped:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
break;
}
}
项目:vlc-android
文件:PlaybackService.java
/**
* Set up the remote control and tell the system we want to be the default receiver for the MEDIA buttons
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void changeRemoteControlClient(AudioManager am, boolean acquire) {
if (acquire) {
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mRemoteControlClientReceiverComponent);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, 0);
// create and register the remote control client
mRemoteControlClient = new RemoteControlClient(mediaPendingIntent);
am.registerRemoteControlClient(mRemoteControlClient);
mRemoteControlClient.setTransportControlFlags(
RemoteControlClient.FLAG_KEY_MEDIA_PLAY |
RemoteControlClient.FLAG_KEY_MEDIA_PAUSE |
RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS |
RemoteControlClient.FLAG_KEY_MEDIA_NEXT |
RemoteControlClient.FLAG_KEY_MEDIA_STOP);
} else {
am.unregisterRemoteControlClient(mRemoteControlClient);
mRemoteControlClient = null;
}
}
项目:MiBandDecompiled
文件:d.java
public void a(boolean flag, long l1, int i1)
{
if (m != null)
{
RemoteControlClient remotecontrolclient = m;
byte byte0;
float f1;
if (flag)
{
byte0 = 3;
} else
{
byte0 = 1;
}
if (flag)
{
f1 = 1.0F;
} else
{
f1 = 0.0F;
}
remotecontrolclient.setPlaybackState(byte0, l1, f1);
m.setTransportControlFlags(i1);
}
}
项目:Popeens-DSub
文件:RemoteControlClientICS.java
public void register(final Context context, final ComponentName mediaButtonReceiverComponent) {
downloadService = (DownloadService) context;
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
// build the PendingIntent for the remote control client
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mediaButtonReceiverComponent);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, mediaButtonIntent, 0);
// create and register the remote control client
mRemoteControl = new RemoteControlClient(mediaPendingIntent);
audioManager.registerRemoteControlClient(mRemoteControl);
mRemoteControl.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
mRemoteControl.setTransportControlFlags(getTransportFlags());
imageLoader = SubsonicActivity.getStaticImageLoader(context);
}
项目:Popeens-DSub
文件:RemoteControlClientICS.java
public void updateMetadata(final Context context, final MusicDirectory.Entry currentSong) {
if(mRemoteControl == null) {
return;
}
if(imageLoader == null) {
imageLoader = SubsonicActivity.getStaticImageLoader(context);
}
// Update the remote controls
RemoteControlClient.MetadataEditor editor = mRemoteControl.editMetadata(true);
updateMetadata(currentSong, editor);
editor.apply();
if (currentSong == null || imageLoader == null) {
updateAlbumArt(currentSong, null);
} else {
imageLoader.loadImage(context, this, currentSong);
}
}
项目:Popeens-DSub
文件:RemoteControlClientJB.java
@Override
public void register(final Context context, final ComponentName mediaButtonReceiverComponent) {
super.register(context, mediaButtonReceiverComponent);
mRemoteControl.setOnGetPlaybackPositionListener(new RemoteControlClient.OnGetPlaybackPositionListener() {
@Override
public long onGetPlaybackPosition() {
return downloadService.getPlayerPosition();
}
});
mRemoteControl.setPlaybackPositionUpdateListener(new RemoteControlClient.OnPlaybackPositionUpdateListener() {
@Override
public void onPlaybackPositionUpdate(final long newPosition) {
new SilentBackgroundTask<Void>(context) {
@Override
protected Void doInBackground() throws Throwable {
downloadService.seekTo((int) newPosition);
return null;
}
}.execute();
setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING, 0, 0);
}
});
}
项目:vibevault
文件:PlaybackService.java
@Override
public void onCompletion(MediaPlayer mp) {
playerStatus = STATUS_STOPPED;
if (nowPlayingPosition < (songArray.size() - 1)) {
Logging.Log(LOG_TAG,"PlaybackService completed, playing next song");
next();
}
else {
Logging.Log(LOG_TAG,"PlaybackService completed, end of playlist");
playerStatus = STATUS_STOPPED;
notificationManager.cancel(NOTIFICATION_ID);
if (updateProgressThread != null) {
updateProgressThread.interrupt();
try {
updateProgressThread.join(500);
} catch (InterruptedException e) {
}
}
notificationManager.cancel(NOTIFICATION_ID);
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
releaseResources();
sendStateChangeBroadcast();
}
}
项目:vibevault
文件:PlaybackService.java
private void stopPlayer() {
mediaPlayer.stop();
mediaPlayer.reset();
playerStatus = STATUS_STOPPED;
if (updateProgressThread != null) {
updateProgressThread.interrupt();
try {
updateProgressThread.join(500);
} catch (InterruptedException e) {
}
}
notificationManager.cancel(NOTIFICATION_ID);
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
releaseResources();
sendStateChangeBroadcast();
}
项目:MyCTFWriteUps
文件:MediaSessionCompatApi19.java
static void addNewMetadata(Bundle bundle, android.media.RemoteControlClient.MetadataEditor metadataeditor)
{
if (bundle != null)
{
if (bundle.containsKey("android.media.metadata.YEAR"))
{
metadataeditor.putLong(8, bundle.getLong("android.media.metadata.YEAR"));
}
if (bundle.containsKey("android.media.metadata.RATING"))
{
metadataeditor.putObject(101, bundle.getParcelable("android.media.metadata.RATING"));
}
if (bundle.containsKey("android.media.metadata.USER_RATING"))
{
metadataeditor.putObject(0x10000001, bundle.getParcelable("android.media.metadata.USER_RATING"));
return;
}
}
}
项目:MyCTFWriteUps
文件:TransportMediatorJellybeanMR2.java
public void refreshState(boolean flag, long l, int i)
{
if (mRemoteControl != null)
{
RemoteControlClient remotecontrolclient = mRemoteControl;
float f;
byte byte0;
if (flag)
{
byte0 = 3;
} else
{
byte0 = 1;
}
if (flag)
{
f = 1.0F;
} else
{
f = 0.0F;
}
remotecontrolclient.setPlaybackState(byte0, l, f);
mRemoteControl.setTransportControlFlags(i);
}
}
项目:Pink-Music
文件:Player.java
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private static void broadcastStateChangeToRemoteControl(String title, boolean preparing, boolean titleOrSongHaveChanged) {
try {
if (localSong == null) {
remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
} else {
remoteControlClient.setPlaybackState(preparing ? RemoteControlClient.PLAYSTATE_BUFFERING : (playing ? RemoteControlClient.PLAYSTATE_PLAYING : RemoteControlClient.PLAYSTATE_PAUSED));
if (titleOrSongHaveChanged) {
final RemoteControlClient.MetadataEditor ed = remoteControlClient.editMetadata(true);
ed.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, title);
ed.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, localSong.artist);
ed.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, localSong.album);
ed.putLong(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER, localSong.track);
ed.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, localSong.lengthMS);
//Oh!!!! METADATA_KEY_YEAR is only handled in API 19+ !!! :(
//http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/android/media/MediaMetadataEditor.java#MediaMetadataEditor.0METADATA_KEYS_TYPE
//http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.2_r1/android/media/RemoteControlClient.java#RemoteControlClient.0METADATA_KEYS_TYPE_LONG
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
ed.putLong(MediaMetadataRetriever.METADATA_KEY_YEAR, localSong.year);
ed.apply();
}
}
} catch (Throwable ex) {
ex.printStackTrace();
}
}
项目:madsonic-5.5
文件:RemoteControlClientICS.java
public void register(final Context context, final ComponentName mediaButtonReceiverComponent) {
downloadService = (DownloadService) context;
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
// build the PendingIntent for the remote control client
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mediaButtonReceiverComponent);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, mediaButtonIntent, 0);
// create and register the remote control client
mRemoteControl = new RemoteControlClient(mediaPendingIntent);
audioManager.registerRemoteControlClient(mRemoteControl);
mRemoteControl.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
mRemoteControl.setTransportControlFlags(getTransportFlags());
imageLoader = SubsonicTabActivity.getStaticImageLoader(context);
}
项目:madsonic-5.5
文件:RemoteControlClientICS.java
public void updateMetadata(final Context context, final MusicDirectory.Entry currentSong) {
if(imageLoader == null) {
imageLoader = SubsonicTabActivity.getStaticImageLoader(context);
}
// Update the remote controls
mRemoteControl.editMetadata(true)
.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, (currentSong == null) ? null : currentSong.getArtist())
.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, (currentSong == null) ? null : currentSong.getAlbum())
.putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, (currentSong == null) ? null : currentSong.getArtist())
.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, (currentSong) == null ? null : currentSong.getTitle())
.putString(MediaMetadataRetriever.METADATA_KEY_GENRE, (currentSong) == null ? null : currentSong.getGenre())
.putLong(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER, (currentSong == null) ?
0 : ((currentSong.getTrack() == null) ? 0 : currentSong.getTrack()))
.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, (currentSong == null) ?
0 : ((currentSong.getDuration() == null) ? 0 : currentSong.getDuration()))
.apply();
if (currentSong == null || imageLoader == null) {
mRemoteControl.editMetadata(true)
.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, null)
.apply();
} else {
imageLoader.loadImage(context, mRemoteControl, currentSong);
}
}
项目:madsonic-5.5
文件:RemoteControlClientJB.java
@Override
public void register(final Context context, final ComponentName mediaButtonReceiverComponent) {
super.register(context, mediaButtonReceiverComponent);
mRemoteControl.setOnGetPlaybackPositionListener(new RemoteControlClient.OnGetPlaybackPositionListener() {
@Override
public long onGetPlaybackPosition() {
return downloadService.getPlayerPosition();
}
});
mRemoteControl.setPlaybackPositionUpdateListener(new RemoteControlClient.OnPlaybackPositionUpdateListener() {
@Override
public void onPlaybackPositionUpdate(long newPosition) {
downloadService.seekTo((int) newPosition);
}
});
}
项目:madsonic-5.5
文件:ImageLoader.java
public void loadImage(Context context, RemoteControlClient remoteControl, MusicDirectory.Entry entry) {
if (entry == null || entry.getCoverArt() == null) {
setUnknownImage(remoteControl);
return;
}
Bitmap bitmap = cache.get(getKey(entry.getCoverArt(), imageSizeLarge));
if (bitmap != null) {
Drawable drawable = Util.createDrawableFromBitmap(this.context, bitmap);
setImage(remoteControl, drawable);
return;
}
setUnknownImage(remoteControl);
queue.offer(new Task(context, entry, imageSizeLarge, imageSizeLarge, false, new RemoteControlClientTaskHandler(remoteControl)));
}
项目:AntennaPodSP
文件:PlaybackService.java
@SuppressLint("NewApi")
private RemoteControlClient setupRemoteControlClient() {
if (Build.VERSION.SDK_INT < 14) {
return null;
}
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(new ComponentName(getPackageName(),
MediaButtonReceiver.class.getName()));
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(
getApplicationContext(), 0, mediaButtonIntent, 0);
remoteControlClient = new RemoteControlClient(mediaPendingIntent);
int controlFlags;
if (android.os.Build.VERSION.SDK_INT < 16) {
controlFlags = RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_NEXT;
} else {
controlFlags = RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE;
}
remoteControlClient.setTransportControlFlags(controlFlags);
return remoteControlClient;
}
项目:KureMusicPlayer
文件:ServicePlayMusic.java
/**
* Jumps to the previous song on the list.
*
* @note Remember to call `playSong()` to make the MusicPlayer
* actually play the music.
*/
public void previous(boolean userSkippedSong) {
if (serviceState != ServiceState.Paused && serviceState != ServiceState.Playing)
return;
if (userSkippedSong)
broadcastState(ServicePlayMusic.BROADCAST_EXTRA_SKIP_PREVIOUS);
// Updates Lock-Screen Widget
if (lockscreenController != null)
lockscreenController.setPlaybackState(RemoteControlClient.PLAYSTATE_SKIPPING_BACKWARDS);
currentSongPosition--;
if (currentSongPosition < 0)
currentSongPosition = songs.size() - 1;
}
项目:madsonic-5.6
文件:RemoteControlClientICS.java
public void register(final Context context, final ComponentName mediaButtonReceiverComponent) {
downloadService = (DownloadService) context;
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
// build the PendingIntent for the remote control client
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mediaButtonReceiverComponent);
PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, mediaButtonIntent, 0);
// create and register the remote control client
mRemoteControl = new RemoteControlClient(mediaPendingIntent);
audioManager.registerRemoteControlClient(mRemoteControl);
mRemoteControl.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
mRemoteControl.setTransportControlFlags(getTransportFlags());
imageLoader = SubsonicTabActivity.getStaticImageLoader(context);
}
项目:madsonic-5.6
文件:RemoteControlClientJB.java
@Override
public void register(final Context context, final ComponentName mediaButtonReceiverComponent) {
super.register(context, mediaButtonReceiverComponent);
mRemoteControl.setOnGetPlaybackPositionListener(new RemoteControlClient.OnGetPlaybackPositionListener() {
@Override
public long onGetPlaybackPosition() {
return downloadService.getPlayerPosition();
}
});
mRemoteControl.setPlaybackPositionUpdateListener(new RemoteControlClient.OnPlaybackPositionUpdateListener() {
@Override
public void onPlaybackPositionUpdate(long newPosition) {
downloadService.seekTo((int) newPosition);
setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
}
});
}
项目:madsonic-5.6
文件:ImageLoader.java
public void loadImage(Context context, RemoteControlClient remoteControl, MusicDirectory.Entry entry) {
if (entry == null || entry.getCoverArt() == null) {
setUnknownImage(remoteControl);
return;
}
Bitmap bitmap = cache.get(getKey(entry.getCoverArt(), imageSizeLarge));
if (bitmap != null && !bitmap.isRecycled()) {
Drawable drawable = Util.createDrawableFromBitmap(this.context, bitmap);
setImage(remoteControl, drawable);
return;
}
setUnknownImage(remoteControl);
queue.offer(new Task(context, entry, imageSizeLarge, imageSizeLarge, false, new RemoteControlClientTaskHandler(remoteControl)));
}
项目:VlcTest
文件:AudioService.java
/**
* A function to control the Remote Control Client. It is needed for
* compatibility with devices below Ice Cream Sandwich (4.0).
*
* @param p Playback state
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void setRemoteControlClientPlaybackState(int state) {
if (!LibVlcUtil.isICSOrLater() || mRemoteControlClient == null)
return;
switch (state) {
case EventHandler.MediaPlayerPlaying:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
break;
case EventHandler.MediaPlayerPaused:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
break;
case EventHandler.MediaPlayerStopped:
mRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
break;
}
}
项目:Orpheus
文件:MediaSessionHelper.java
@Override
void setup() {
super.setup();
mRemoteControlClient.setOnGetPlaybackPositionListener(
new RemoteControlClient.OnGetPlaybackPositionListener() {
@Override
public long onGetPlaybackPosition() {
return mService.position();
}
});
mRemoteControlClient.setPlaybackPositionUpdateListener(
new RemoteControlClient.OnPlaybackPositionUpdateListener() {
@Override
public void onPlaybackPositionUpdate(long newPositionMs) {
mService.seek(newPositionMs);
}
});
}
项目:KontestacjaPod
文件:PlayerService.java
private void refreshRemoteControlClient(int playstate) {
if (playerManager.isRunning()) {
remoteControlClient.setPlaybackState(playstate);
RemoteControlClient.MetadataEditor editor = remoteControlClient.editMetadata(false);
AbstractMediaSource ams = playerManager.getCurrentMediaSource();
editor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, ams.getTitle());
editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, ams.getSummary());
//editor.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, ams.getDuration());
//editor.putLong(MediaMetadataRetriever.METADATA_KEY_LOCATION, ams.getPosition());
editor.apply();
bluetoothNotifyChange(ams, AVRCP_ACTION_PLAYER_STATUS_CHANGED);
bluetoothNotifyChange(ams, AVRCP_ACTION_META_CHANGED);
}
}
项目:Player-by-TweekProject
文件:MusicPlaybackService.java
/**
* Initializes the remote control client
*/
private void setUpRemoteControlClient() {
if (mEnableLockscreenControls) {
if (mRemoteControlClientCompat == null) {
final Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(mMediaButtonReceiverComponent);
mRemoteControlClientCompat = new RemoteControlClientCompat(
PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent,
PendingIntent.FLAG_UPDATE_CURRENT));
RemoteControlHelper.registerRemoteControlClient(mAudioManager,
mRemoteControlClientCompat);
}
// Flags for the media transport control that this client supports.
final int flags = RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
| RemoteControlClient.FLAG_KEY_MEDIA_NEXT
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY
| RemoteControlClient.FLAG_KEY_MEDIA_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
| RemoteControlClient.FLAG_KEY_MEDIA_STOP;
mRemoteControlClientCompat.setTransportControlFlags(flags);
}
}
项目:Player-by-TweekProject
文件:MusicPlaybackService.java
/**
* Updates the lockscreen controls, if enabled.
*
* @param what The broadcast
*/
private void updateRemoteControlClient(final String what) {
if (mEnableLockscreenControls && mRemoteControlClientCompat != null) {
if (what.equals(PLAYSTATE_CHANGED)) {
// If the playstate change notify the lock screen
// controls
mRemoteControlClientCompat
.setPlaybackState(mIsSupposedToBePlaying ? RemoteControlClient.PLAYSTATE_PLAYING
: RemoteControlClient.PLAYSTATE_PAUSED);
} else if (what.equals(META_CHANGED)) {
// Update the ockscreen controls
mRemoteControlClientCompat
.editMetadata(true)
.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, getArtistName())
.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, getAlbumName())
.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, getTrackName())
.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, duration())
.putBitmap(
RemoteControlClientCompat.MetadataEditorCompat.METADATA_KEY_ARTWORK,
getAlbumArt()).apply();
}
}
}