Java 类android.media.RemoteController 实例源码

项目:GravityBox    文件:MusicTile.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor data) {
    mMetadata.trackTitle = data.getString(MediaMetadataRetriever.METADATA_KEY_TITLE,
            mMetadata.trackTitle);
    mMetadata.bitmap = data.getBitmap(MediaMetadataEditor.BITMAP_KEY_ARTWORK,
            mMetadata.bitmap);
    mClientIdLost = false;
    if ((mMetadata.trackTitle != null
            && !mMetadata.trackTitle.equals(mCurrentTrack))
        || (mMetadata.bitmap != null && !mMetadata.bitmap.sameAs(mCurrentBitmap))) {
        mCurrentTrack = mMetadata.trackTitle;
        mCurrentBitmap = mMetadata.bitmap;
        refreshState();
        if (DEBUG) log(getKey() + ": onClientMetadataUpdate");
    }
}
项目:Noyze    文件:RemoteControlKitKat.java   
protected void registerController() {
    AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    rController = new RemoteController(mContext, (RemoteController.OnClientUpdateListener) mContext);

    try {
        // This is a weird issue that needs more clarification.
        audioManager.registerRemoteController(rController);
    } catch (SecurityException se) {
        rController = null;
    }

    // By default an RemoteController.OnClientUpdateListener implementation will not receive bitmaps
    // for album art. Use setArtworkConfiguration(int, int) to receive images as well.
    if (null != rController) {
        Resources res = mContext.getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        final int dim = Math.max(dm.widthPixels, dm.heightPixels);
        rController.setArtworkConfiguration(dim, dim);
    }
}
项目:AcDisplay    文件:MediaController2KitKat.java   
/**
 * Updates {@link #mMetadata metadata} from given remote metadata class.
 * This also updates play state.
 *
 * @param data Object of metadata to update from, or {@code null} to clear local metadata.
 * @see #clearMetadata()
 */
private void updateMetadata(@Nullable RemoteController.MetadataEditor data) {
    if (data == null) {
        if (mMetadata.isEmpty()) return;
        mMetadata.clear();
    } else {
        mMetadata.title = data.getString(MediaMetadataRetriever.METADATA_KEY_TITLE, null);
        mMetadata.artist = data.getString(MediaMetadataRetriever.METADATA_KEY_ARTIST, null);
        mMetadata.album = data.getString(MediaMetadataRetriever.METADATA_KEY_ALBUM, null);
        mMetadata.duration = data.getLong(MediaMetadataRetriever.METADATA_KEY_DURATION, -1);
        mMetadata.bitmap = data.getBitmap(MediaMetadataEditor.BITMAP_KEY_ARTWORK, null);
        mMetadata.generateSubtitle();
    }

    notifyOnMetadataChanged();
}
项目:Noyze    文件:RemoteControlKitKat.java   
protected void registerController() {
    AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    rController = new RemoteController(mContext, (RemoteController.OnClientUpdateListener) mContext);

    try {
        // This is a weird issue that needs more clarification.
        audioManager.registerRemoteController(rController);
    } catch (SecurityException se) {
        rController = null;
    }

    // By default an RemoteController.OnClientUpdateListener implementation will not receive bitmaps
    // for album art. Use setArtworkConfiguration(int, int) to receive images as well.
    if (null != rController) {
        Resources res = mContext.getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        final int dim = Math.max(dm.widthPixels, dm.heightPixels);
        rController.setArtworkConfiguration(dim, dim);
    }
}
项目:QuickLyric    文件:NotificationListenerService.java   
@Override
@SuppressWarnings("NewApi")
public void onCreate() {
    super.onCreate();
    if (!isListeningAuthorized(this))
        return;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        mRemoteController = new WeakReference<>(new RemoteController(this, this));
        mRemoteController.get().setArtworkConfiguration(3000, 3000);
        if (!((AudioManager) getSystemService(Context.AUDIO_SERVICE)).registerRemoteController(mRemoteController.get())) {
            throw new RuntimeException("Error while registering RemoteController!");
        }
        mediaControllerCallback = new MediaControllerCallback(this);
    } else {
        startScrobblingService();
        // disableNotificationListenerService();
    }
}
项目:AcDisplay    文件:MediaService.java   
@Override
public void onCreate() {
    if (isRemoteControllerSupported()) {
        mRemoteController = new RemoteController(this, this);
        mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    }
}
项目:AcDisplay    文件:MediaController2KitKat.java   
/**
 * {@inheritDoc}
 */
public void sendMediaAction(int action) {
    if (mService == null) {
        Log.w(TAG, "Sending a media action on stopped controller.");
        return;
    }

    int keyCode;
    switch (action) {
        case ACTION_PLAY_PAUSE:
            keyCode = KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE;
            break;
        case ACTION_STOP:
            keyCode = KeyEvent.KEYCODE_MEDIA_STOP;
            break;
        case ACTION_SKIP_TO_NEXT:
            keyCode = KeyEvent.KEYCODE_MEDIA_NEXT;
            break;
        case ACTION_SKIP_TO_PREVIOUS:
            keyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS;
            break;
        default:
            throw new IllegalArgumentException();
    }

    // TODO We should think about sending these up/down events accurately with touch up/down
    // on the buttons, but in the near term this will interfere with the long press behavior.
    RemoteController rc = mService.getRemoteController();
    rc.sendMediaKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
    rc.sendMediaKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keyCode));
}
项目:AcDisplay    文件:MediaController2KitKat.java   
/**
 * {@inheritDoc}
 */
@Override
public void seekTo(long position) {
    if (mService == null) {
        Log.w(TAG, "Seeking a media on stopped controller.");
        return;
    }

    RemoteController rc = mService.getRemoteController();
    rc.seekTo(position);
}
项目:AcDisplay    文件:MediaController2KitKat.java   
/**
 * {@inheritDoc}
 */
@Override
public long getPlaybackPosition() {
    if (mService == null) {
        Log.w(TAG, "Getting a playback position on stopped controller.");
        return -1;
    }

    RemoteController rc = mService.getRemoteController();
    return rc.getEstimatedMediaPosition();
}
项目:QuickLyric    文件:NotificationListenerService.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    // isRemoteControllerPlaying = true;

    durationObject = metadataEditor.getObject(MediaMetadataRetriever.METADATA_KEY_DURATION, 1200); //allow it to pass if not present
    artist = metadataEditor.getString(MediaMetadataRetriever.METADATA_KEY_ARTIST,
            metadataEditor.getString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, ""));
    track = metadataEditor.getString(MediaMetadataRetriever.METADATA_KEY_TITLE, "");
    Bitmap artwork = metadataEditor.getBitmap(MediaMetadataEditor.BITMAP_KEY_ARTWORK, null);

    mediaControllerCallback.saveArtwork(this, artwork, artist, track);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientChange(boolean clearing) {
    ((RemoteController.OnClientUpdateListener) mController).onClientChange(clearing);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    ((RemoteController.OnClientUpdateListener) mController).onClientMetadataUpdate(metadataEditor);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientPlaybackStateUpdate(int state, long stateChangeTimeMs, long currentPosMs, float speed) {
    ((RemoteController.OnClientUpdateListener) mController).onClientPlaybackStateUpdate(state, stateChangeTimeMs, currentPosMs, speed);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientPlaybackStateUpdate(int state) {
    ((RemoteController.OnClientUpdateListener) mController).onClientPlaybackStateUpdate(state);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientTransportControlUpdate(int transportControlFlags) {
    LOGI("RemoteControlJellyBeanMR2", "onClientTransportControlUpdate(" + transportControlFlags + ")");
    ((RemoteController.OnClientUpdateListener) mController).onClientTransportControlUpdate(transportControlFlags);
}
项目:Noyze    文件:RemoteControlKitKat.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    if (null == metadataEditor) return;
    metadataChanged(mediaMetadata(metadataEditor));
}
项目:AcDisplay    文件:MediaService.java   
public RemoteController getRemoteController() {
    return mRemoteController;
}
项目:AcDisplay    文件:MediaService.java   
/**
 * Sets up external callback for client update events.
 */
public void setClientUpdateListener(@Nullable RemoteController.OnClientUpdateListener listener) {
    mExternalListener = listener;
}
项目:AcDisplay    文件:MediaService.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    if (mExternalListener != null) {
        mExternalListener.onClientMetadataUpdate(metadataEditor);
    }
}
项目:AcDisplay    文件:MediaController2KitKat.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    updateMetadata(metadataEditor);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientChange(boolean clearing) {
    ((RemoteController.OnClientUpdateListener) mController).onClientChange(clearing);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    ((RemoteController.OnClientUpdateListener) mController).onClientMetadataUpdate(metadataEditor);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientPlaybackStateUpdate(int state, long stateChangeTimeMs, long currentPosMs, float speed) {
    ((RemoteController.OnClientUpdateListener) mController).onClientPlaybackStateUpdate(state, stateChangeTimeMs, currentPosMs, speed);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientPlaybackStateUpdate(int state) {
    ((RemoteController.OnClientUpdateListener) mController).onClientPlaybackStateUpdate(state);
}
项目:Noyze    文件:MediaControllerService.java   
@Override
public void onClientTransportControlUpdate(int transportControlFlags) {
    LOGI("RemoteControlJellyBeanMR2", "onClientTransportControlUpdate(" + transportControlFlags + ")");
    ((RemoteController.OnClientUpdateListener) mController).onClientTransportControlUpdate(transportControlFlags);
}
项目:Noyze    文件:RemoteControlKitKat.java   
@Override
public void onClientMetadataUpdate(RemoteController.MetadataEditor metadataEditor) {
    if (null == metadataEditor) return;
    metadataChanged(mediaMetadata(metadataEditor));
}