Example usage for android.media MediaMetadataRetriever METADATA_KEY_ALBUM

List of usage examples for android.media MediaMetadataRetriever METADATA_KEY_ALBUM

Introduction

In this page you can find the example usage for android.media MediaMetadataRetriever METADATA_KEY_ALBUM.

Prototype

int METADATA_KEY_ALBUM

To view the source code for android.media MediaMetadataRetriever METADATA_KEY_ALBUM.

Click Source Link

Document

The metadata key to retrieve the information about the album title of the data source.

Usage

From source file:com.andrew.apolloMod.service.ApolloService.java

/**
 * Notify the change-receivers that something has changed. The intent that
 * is sent contains the following data for the currently playing track: "id"
 * - Integer: the database row ID "artist" - String: the name of the artist
 * "album" - String: the name of the album "track" - String: the name of the
 * track The intent has an action that is one of
 * "com.andrew.apolloMod.metachanged" "com.andrew.apolloMod.queuechanged",
 * "com.andrew.apolloMod.playbackcomplete" "com.andrew.apolloMod.playstatechanged"
 * respectively indicating that a new track has started playing, that the
 * playback queue has changed, that playback has stopped because the last
 * file in the list has been played, or that the play-state changed
 * (paused/resumed).//from w ww .j  a v a2 s. c o  m
 */
public void notifyChange(String what) {

    Intent i = new Intent(what);
    i.putExtra("id", Long.valueOf(getAudioId()));
    i.putExtra("artist", getArtistName());
    i.putExtra("album", getAlbumName());
    i.putExtra("track", getTrackName());
    i.putExtra("playing", mIsSupposedToBePlaying);
    i.putExtra("isfavorite", isFavorite());
    sendStickyBroadcast(i);

    i = new Intent(i);
    i.setAction(what.replace(APOLLO_PACKAGE_NAME, MUSIC_PACKAGE_NAME));
    sendStickyBroadcast(i);

    if (Constants.isApi14Supported()) {
        if (what.equals(PLAYSTATE_CHANGED)) {
            mRemoteControlClient.setPlaybackState(mIsSupposedToBePlaying ? RemoteControlClient.PLAYSTATE_PLAYING
                    : RemoteControlClient.PLAYSTATE_PAUSED);
        } else if (what.equals(META_CHANGED)) {
            RemoteControlClient.MetadataEditor ed = mRemoteControlClient.editMetadata(true);
            ed.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, getTrackName());
            ed.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, getAlbumName());
            ed.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, getArtistName());
            ed.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, duration());
            Bitmap b = getAlbumBitmap();
            if (b != null) {
                ed.putBitmap(MetadataEditor.BITMAP_KEY_ARTWORK, b);
            }
            ed.apply();
        }
    }
    if (what.equals(QUEUE_CHANGED)) {
        saveQueue(true);
    } else {
        saveQueue(false);
    }
    mAppWidgetProvider1x1.notifyChange(this, what);
    mAppWidgetProvider4x1.notifyChange(this, what);
    mAppWidgetProvider4x2.notifyChange(this, what);

}

From source file:org.videolan.vlc.PlaybackService.java

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void updateRemoteControlClientMetadata() {
    if (!AndroidUtil.isICSOrLater()) // NOP check
        return;/*from  ww w. j a va2  s  . com*/

    MediaWrapper media = getCurrentMedia();
    if (mRemoteControlClient != null && media != null) {
        MetadataEditor editor = mRemoteControlClient.editMetadata(true);
        if (media.getNowPlaying() != null) {
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, "");
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, "");
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, media.getNowPlaying());
        } else {
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, "");
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, Util.getMediaAlbum(this, media));
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, Util.getMediaArtist(this, media));
        }
        editor.putString(MediaMetadataRetriever.METADATA_KEY_GENRE, Util.getMediaGenre(this, media));
        editor.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, media.getTitle());
        editor.putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, media.getLength());

        // Copy the cover bitmap because the RemonteControlClient can recycle its artwork bitmap.
        Bitmap cover = AudioUtil.getCover(this, media, 512);
        if (cover != null && cover.getConfig() != null) //In case of format not supported
            editor.putBitmap(MetadataEditor.BITMAP_KEY_ARTWORK, (cover.copy(cover.getConfig(), false)));

        editor.apply();
    }

    //Send metadata to Pebble watch
    if (media != null && mPebbleEnabled) {
        final Intent i = new Intent("com.getpebble.action.NOW_PLAYING");
        i.putExtra("artist", Util.getMediaArtist(this, media));
        i.putExtra("album", Util.getMediaAlbum(this, media));
        i.putExtra("track", media.getTitle());
        sendBroadcast(i);
    }
}

From source file:org.moire.ultrasonic.service.DownloadServiceImpl.java

private void updateRemoteControl() {
    if (!Util.isLockScreenEnabled(this)) {
        clearRemoteControl();/*from   w w w .j  av  a  2s  . c o m*/
        return;
    }

    if (remoteControlClient != null) {
        audioManager.unregisterRemoteControlClient(remoteControlClient);
        audioManager.registerRemoteControlClient(remoteControlClient);
    } else {
        setUpRemoteControlClient();
    }

    Log.i(TAG, String.format("In updateRemoteControl, playerState: %s [%d]", playerState, getPlayerPosition()));

    switch (playerState) {
    case STARTED:
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) {
            remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
        } else {
            remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING, getPlayerPosition(),
                    1.0f);
        }
        break;
    default:
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) {
            remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);
        } else {
            remoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED, getPlayerPosition(),
                    1.0f);
        }
        break;
    }

    if (currentPlaying != null) {
        MusicDirectory.Entry currentSong = currentPlaying.getSong();

        Bitmap lockScreenBitmap = FileUtil.getAlbumArtBitmap(this, currentSong, Util.getMinDisplayMetric(this),
                true);

        String artist = currentSong.getArtist();
        String album = currentSong.getAlbum();
        String title = currentSong.getTitle();
        Integer currentSongDuration = currentSong.getDuration();
        Long duration = 0L;

        if (currentSongDuration != null)
            duration = (long) currentSongDuration * 1000;

        remoteControlClient.editMetadata(true).putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, artist)
                .putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, artist)
                .putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, album)
                .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, title)
                .putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, duration)
                .putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, lockScreenBitmap).apply();
    }
}

From source file:com.adityarathi.muo.services.AudioPlaybackService.java

/**
 * Updates all remote control clients (including the lockscreen controls).
 *///ww w  . j  ava2s .  com
public void updateRemoteControlClients(SongHelper songHelper) {
    try {
        //Update the remote controls

        mRemoteControlClientCompat.editMetadata(true)
                .putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, getCurrentSong().getArtist())
                .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, getCurrentSong().getTitle())
                .putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, getCurrentSong().getAlbum())
                .putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, getCurrentMediaPlayer().getDuration())
                .putBitmap(RemoteControlClientCompat.MetadataEditorCompat.METADATA_KEY_ARTWORK,
                        getCurrentSong().getAlbumArt())

                .apply();

        if (mRemoteControlClientCompat != null) {

            if (getCurrentMediaPlayer().isPlaying())
                mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
            else
                mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);

        }

    } catch (Exception e) {
        e.printStackTrace();
    }

}

From source file:com.Duo.music.player.Services.AudioPlaybackService.java

/**
 * Updates all remote control clients (including the lockscreen controls).
 *///from ww  w  . j a  va2s. c o m
public void updateRemoteControlClients(SongHelper songHelper) {
    try {
        //Update the remote controls
        mRemoteControlClientCompat.editMetadata(true)
                .putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, getCurrentSong().getArtist())
                .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, getCurrentSong().getTitle())
                .putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, getCurrentSong().getAlbum())
                .putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, getCurrentMediaPlayer().getDuration())
                .putBitmap(RemoteControlClientCompat.MetadataEditorCompat.METADATA_KEY_ARTWORK,
                        getCurrentSong().getAlbumArt())
                .apply();

        if (mRemoteControlClientCompat != null) {

            if (getCurrentMediaPlayer().isPlaying())
                mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
            else
                mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PAUSED);

        }

    } catch (Exception e) {
        e.printStackTrace();
    }

}

From source file:com.adityarathi.muo.services.AudioPlaybackService.java

/**
 * This method combines the current cursor with the specified playlist cursor.
 * @param newCursor/*w w w  .  ja  v  a2s .  co m*/
 */
public void enqueuePlaylistCursor(Cursor newCursor) {

    String[] matrixCursorColumns = { DBAccessHelper.SONG_ARTIST, DBAccessHelper.SONG_ALBUM,
            DBAccessHelper.SONG_TITLE, DBAccessHelper.SONG_FILE_PATH, DBAccessHelper.SONG_DURATION,
            DBAccessHelper.SONG_GENRE, DBAccessHelper.SONG_ID, DBAccessHelper.SONG_ALBUM_ART_PATH,
            DBAccessHelper.SONG_SOURCE };

    //Create an empty matrix getCursor() with the specified columns.
    MatrixCursor mMatrixCursor = new MatrixCursor(matrixCursorColumns);

    //Make a copy of the old getCursor() and copy it's contents over to the matrix getCursor().
    Cursor tempCursor = getCursor();

    tempCursor.moveToFirst();
    MediaMetadataRetriever mMMDR = new MediaMetadataRetriever();
    for (int i = 0; i < tempCursor.getCount(); i++) {
        tempCursor.moveToPosition(i);

        //Check which type of getCursor() the service currently has.
        if (getCursor().getColumnIndex(DBAccessHelper.SONG_FILE_PATH) == -1) {

            //We'll have to manually extract the info from the audio file.
            /*            String songFilePath = tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.PLAYLIST_SONG_FILE_PATH));
                                
                        try {
                           mMMDR.setDataSource(songFilePath);
                        } catch (Exception e) {
                           //Skip the song if there's a problem with reading it.
                           continue;
                        }*/

            String songArtist = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
            String songAlbum = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
            String songTitle = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
            String songDuration = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
            String songGenre = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE);

            mMatrixCursor
                    .addRow(new Object[] { songArtist, songAlbum, songTitle, "", songDuration, songGenre });

        } else {

            mMatrixCursor.addRow(
                    new Object[] { tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_ARTIST)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_ALBUM)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_TITLE)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_FILE_PATH)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_DURATION)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_GENRE)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_ID)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_ALBUM_ART_PATH)),
                            tempCursor.getString(tempCursor.getColumnIndex(DBAccessHelper.SONG_SOURCE)) });

        }

    }

    tempCursor.close();

    //Copy the contents of the new getCursor() over to the MatrixCursor.
    if (newCursor.getCount() > 0) {

        String songArtist = "";
        String songAlbum = "";
        String songTitle = "";
        String filePath = "";
        String songDuration = "";
        for (int j = 0; j < newCursor.getCount(); j++) {
            /*            newCursor.moveToPosition(j);
                        filePath = newCursor.getString(newCursor.getColumnIndex(DBAccessHelper.PLAYLIST_SONG_FILE_PATH));
                                
                        try {
                           mMMDR.setDataSource(filePath);
                        } catch (Exception e) {
                           continue;
                        }*/

            //Get the metadata from the song file.
            songArtist = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
            songAlbum = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
            songTitle = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
            songDuration = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
            String songGenre = mMMDR.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE);

            mMatrixCursor.addRow(
                    new Object[] { songArtist, songAlbum, songTitle, filePath, songDuration, songGenre });

        }

    }

    mEnqueuePerformed = true;
    newCursor.close();
    mCursor = (Cursor) mMatrixCursor;
    mMatrixCursor.close();

}

From source file:org.tomahawk.tomahawk_android.services.PlaybackService.java

/**
 * Update the playback controls/views which are being shown on the lockscreen
 *//*ww  w  .  j  a  va2  s .c  om*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private void updateLockscreenControls() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        Log.d(TAG, "updateLockscreenControls()");
        // Use the media button APIs (if available) to register ourselves for media button
        // events
        MediaButtonHelper.registerMediaButtonEventReceiverCompat(mAudioManager, mMediaButtonReceiverComponent);

        if (mRemoteControlClientCompat == null) {
            Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON);
            intent.setComponent(mMediaButtonReceiverComponent);
            mRemoteControlClientCompat = new RemoteControlClientCompat(
                    PendingIntent.getBroadcast(PlaybackService.this /*context*/, 0 /*requestCode, ignored*/,
                            intent /*intent*/, 0 /*flags*/));
            RemoteControlHelper.registerRemoteControlClient(mAudioManager, mRemoteControlClientCompat);
        }

        // Use the remote control APIs (if available) to set the playback state
        if (isPlaying()) {
            mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING);
        } else {
            mRemoteControlClientCompat.setPlaybackState(RemoteControlClient.PLAYSTATE_STOPPED);
        }

        int flags = RemoteControlClient.FLAG_KEY_MEDIA_PLAY | RemoteControlClient.FLAG_KEY_MEDIA_PAUSE;
        if (hasNextEntry()) {
            flags |= RemoteControlClient.FLAG_KEY_MEDIA_NEXT;
        }
        if (hasPreviousEntry()) {
            flags |= RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS;
        }
        mRemoteControlClientCompat.setTransportControlFlags(flags);

        // Update the remote controls
        synchronized (this) {
            RemoteControlClientCompat.MetadataEditorCompat editor = mRemoteControlClientCompat
                    .editMetadata(true);
            editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST,
                    getCurrentQuery().getArtist().getPrettyName())
                    .putString(MediaMetadataRetriever.METADATA_KEY_ARTIST,
                            getCurrentQuery().getArtist().getPrettyName())
                    .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, getCurrentQuery().getPrettyName())
                    .putLong(MediaMetadataRetriever.METADATA_KEY_DURATION,
                            getCurrentQuery().getPreferredTrack().getDuration());
            if (!TextUtils.isEmpty(getCurrentQuery().getAlbum().getPrettyName())) {
                editor.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM,
                        getCurrentQuery().getAlbum().getPrettyName());
            }
            editor.apply();
            Log.d(TAG, "Setting lockscreen metadata to: " + getCurrentQuery().getArtist().getPrettyName() + ", "
                    + getCurrentQuery().getPrettyName());
        }

        Picasso.with(TomahawkApp.getContext()).cancelRequest(mLockscreenTarget);
        ImageUtils.loadImageIntoBitmap(TomahawkApp.getContext(), getCurrentQuery().getImage(),
                mLockscreenTarget, Image.getLargeImageSize(), getCurrentQuery().hasArtistImage());
    }
}

From source file:com.andrew.apollo.MusicPlaybackService.java

private static void changeRemoteControlClientTask(MusicPlaybackService musicPlaybackService, int playState,
        long position) {
    // background portion
    Bitmap albumArt = musicPlaybackService.getAlbumArt();
    // RemoteControlClient wants to recycle the bitmaps thrown at it, so we need
    // to make sure not to hand out our cache copy
    Bitmap.Config config = null;/*  ww  w. ja  v  a 2s  . com*/
    if (albumArt != null) {
        config = albumArt.getConfig();
    }
    if (config == null) {
        config = Bitmap.Config.ARGB_8888;
    }
    Bitmap bmpCopy = null;
    try {
        if (albumArt != null) {
            bmpCopy = albumArt.copy(config, false);
        }
    } catch (OutOfMemoryError e) {
        // ignore, can't do anything meaningful here
    }
    final Bitmap albumArtCopy = bmpCopy;
    final String artistName = musicPlaybackService.getArtistName();
    final String albumName = musicPlaybackService.getAlbumName();
    final String trackName = musicPlaybackService.getTrackName();
    final String albumArtistName = musicPlaybackService.getAlbumArtistName();
    final long duration = musicPlaybackService.duration();

    // MusicPlayerHandler thread portion, we can't put this as a PostContextTask
    // in Async.async.
    final WeakReference<MusicPlaybackService> musicPlaybackServiceRef = Ref.weak(musicPlaybackService);
    Runnable postExecute = () -> {
        if (!Ref.alive(musicPlaybackServiceRef)) {
            return;
        }
        MusicPlaybackService musicPlaybackService1 = musicPlaybackServiceRef.get();
        try {
            RemoteControlClient.MetadataEditor editor = musicPlaybackService1.mRemoteControlClient
                    .editMetadata(true).putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, artistName)
                    .putString(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, albumArtistName)
                    .putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, albumName)
                    .putString(MediaMetadataRetriever.METADATA_KEY_TITLE, trackName)
                    .putLong(MediaMetadataRetriever.METADATA_KEY_DURATION, duration);

            if (albumArtCopy != null) {
                editor.putBitmap(RemoteControlClient.MetadataEditor.BITMAP_KEY_ARTWORK, albumArtCopy);
            }

            editor.apply();
        } catch (Throwable t) {
            // possible NPE on android.media.RemoteControlClient$MetadataEditor.apply()
        }
        musicPlaybackService1.mRemoteControlClient.setPlaybackState(playState, position, 1.0f);
    };
    musicPlaybackService.mPlayerHandler.post(postExecute);
}