Search in sources :

Example 6 with ImagePipeline

use of com.facebook.imagepipeline.core.ImagePipeline in project remusic by aa112901.

the class MainApplication method onLowMemory.

@Override
public void onLowMemory() {
    super.onLowMemory();
    ImagePipeline imagePipeline = Fresco.getImagePipeline();
    // 清空内存缓存(包括Bitmap缓存和未解码图片的缓存)
    imagePipeline.clearMemoryCaches();
// 清空硬盘缓存,一般在设置界面供用户手动清理
// imagePipeline.clearDiskCaches();
// 同时清理内存缓存和硬盘缓存
// imagePipeline.clearCaches();
}
Also used : ImagePipeline(com.facebook.imagepipeline.core.ImagePipeline)

Example 7 with ImagePipeline

use of com.facebook.imagepipeline.core.ImagePipeline in project remusic by aa112901.

the class AlbumsDetailActivity method setAlbumart.

private void setAlbumart() {
    albumTitle.setText(albumName);
    albumArtSmall.setImageURI(Uri.parse(albumPath));
    try {
        ImageRequest imageRequest = ImageRequest.fromUri(albumPath);
        // CacheKey cacheKey = DefaultCacheKeyFactory.getInstance()
        // .getEncodedCacheKey(imageRequest);
        // BinaryResource resource = ImagePipelineFactory.getInstance()
        // .getMainDiskStorageCache().getResource(cacheKey);
        // File file = ((FileBinaryResource) resource).getFile();
        // if (file != null) {
        // new setBlurredAlbumArt().execute(ImageUtils.getArtworkQuick(file, 300, 300));
        // return;
        // }
        imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(albumPath)).setProgressiveRenderingEnabled(true).build();
        ImagePipeline imagePipeline = Fresco.getImagePipeline();
        DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, AlbumsDetailActivity.this);
        dataSource.subscribe(new BaseBitmapDataSubscriber() {

            @Override
            public void onNewResultImpl(@Nullable Bitmap bitmap) {
                // No need to do any cleanup.
                if (bitmap != null) {
                    new setBlurredAlbumArt().execute(bitmap);
                }
            }

            @Override
            public void onFailureImpl(DataSource dataSource) {
            // No cleanup required here.
            }
        }, CallerThreadExecutor.getInstance());
    // drawable = Drawable.createFromStream( new URL(albumPath).openStream(),"src");
    } catch (Exception e) {
    }
}
Also used : Bitmap(android.graphics.Bitmap) ImageRequest(com.facebook.imagepipeline.request.ImageRequest) CloseableReference(com.facebook.common.references.CloseableReference) ImagePipeline(com.facebook.imagepipeline.core.ImagePipeline) BaseBitmapDataSubscriber(com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber) DataSource(com.facebook.datasource.DataSource)

Example 8 with ImagePipeline

use of com.facebook.imagepipeline.core.ImagePipeline in project remusic by aa112901.

the class SimpleWidgetProvider method pushUpdate.

// 更新所有的 widget
private synchronized void pushUpdate(final Context context, AppWidgetManager appWidgetManager, boolean updateProgress) {
    pushAction(context, MediaService.SEND_PROGRESS);
    RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.simple_control_widget_layout);
    // 将按钮与点击事件绑定
    remoteView.setOnClickPendingIntent(R.id.widget_play, getPendingIntent(context, R.id.widget_play));
    remoteView.setOnClickPendingIntent(R.id.widget_pre, getPendingIntent(context, R.id.widget_pre));
    remoteView.setOnClickPendingIntent(R.id.widget_next, getPendingIntent(context, R.id.widget_next));
    remoteView.setOnClickPendingIntent(R.id.widget_love, getPendingIntent(context, R.id.widget_love));
    remoteView.setTextViewText(R.id.widget_content, trackname == null && art == null ? "" : trackname + "-" + art);
    remoteView.setProgressBar(R.id.widget_progress, (int) duration, (int) position, false);
    isFav = false;
    long[] favlists = PlaylistsManager.getInstance(context).getPlaylistIds(IConstants.FAV_PLAYLIST);
    for (long i : favlists) {
        if (currentId == i) {
            isFav = true;
            break;
        }
    }
    if (isFav) {
        remoteView.setImageViewResource(R.id.widget_love, R.drawable.widget_unstar_selector);
    } else {
        remoteView.setImageViewResource(R.id.widget_love, R.drawable.widget_star_selector);
    }
    if (isPlaying) {
        remoteView.setImageViewResource(R.id.widget_play, R.drawable.widget_pause_selector);
    } else {
        remoteView.setImageViewResource(R.id.widget_play, R.drawable.widget_play_selector);
    }
    if (updateProgress) {
        if (albumuri == null) {
            remoteView.setImageViewResource(R.id.widget_image, R.drawable.placeholder_disk_210);
        } else {
            if (isTrackLocal) {
                Bitmap bitmap = ImageUtils.getArtworkQuick(context, Uri.parse(albumuri), 160, 160);
                if (bitmap != null) {
                    remoteView.setImageViewBitmap(R.id.widget_image, bitmap);
                } else {
                    remoteView.setImageViewResource(R.id.widget_image, R.drawable.placeholder_disk_210);
                }
            } else {
                Bitmap bitmap = albumMap.get(albumuri);
                if (bitmap != null)
                    remoteView.setImageViewBitmap(R.id.widget_image, bitmap);
            }
        }
    } else {
        if (albumuri == null) {
            remoteView.setImageViewResource(R.id.widget_image, R.drawable.placeholder_disk_210);
        } else {
            if (isTrackLocal) {
                final Bitmap bitmap = ImageUtils.getArtworkQuick(context, Uri.parse(albumuri), 160, 160);
                if (bitmap != null) {
                    remoteView.setImageViewBitmap(R.id.widget_image, bitmap);
                } else {
                    remoteView.setImageViewResource(R.id.widget_image, R.drawable.placeholder_disk_210);
                }
                albumMap.clear();
            } else {
                if (albumMap.get(albumuri) != null) {
                    remoteView.setImageViewBitmap(R.id.widget_image, albumMap.get(albumuri));
                // noBit = null;
                } else {
                    Uri uri = Uri.parse(albumuri);
                    if (uri == null) {
                        noBit = BitmapFactory.decodeResource(context.getResources(), R.drawable.placeholder_disk_210);
                        albumMap.put(albumuri, noBit);
                        pushUpdate(context, AppWidgetManager.getInstance(context), false);
                    } else {
                        ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(uri).setProgressiveRenderingEnabled(true).build();
                        ImagePipeline imagePipeline = Fresco.getImagePipeline();
                        DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, this);
                        dataSource.subscribe(new BaseBitmapDataSubscriber() {

                            @Override
                            public void onNewResultImpl(@Nullable Bitmap bitmap) {
                                // No need to do any cleanup.
                                if (bitmap != null) {
                                    noBit = bitmap.copy(bitmap.getConfig(), true);
                                    albumMap.put(albumuri, noBit);
                                }
                                pushUpdate(context, AppWidgetManager.getInstance(context), false);
                            }

                            @Override
                            public void onFailureImpl(DataSource dataSource) {
                                // No cleanup required here.
                                noBit = BitmapFactory.decodeResource(context.getResources(), R.drawable.placeholder_disk_210);
                                albumMap.put(albumuri, noBit);
                                pushUpdate(context, AppWidgetManager.getInstance(context), false);
                            }
                        }, CallerThreadExecutor.getInstance());
                    }
                }
            }
        }
    }
    // 相当于获得所有本程序创建的appwidget
    ComponentName componentName = new ComponentName(context, SimpleWidgetProvider.class);
    appWidgetManager.updateAppWidget(componentName, remoteView);
}
Also used : CloseableReference(com.facebook.common.references.CloseableReference) Uri(android.net.Uri) BaseBitmapDataSubscriber(com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber) DataSource(com.facebook.datasource.DataSource) RemoteViews(android.widget.RemoteViews) Bitmap(android.graphics.Bitmap) ImageRequest(com.facebook.imagepipeline.request.ImageRequest) ComponentName(android.content.ComponentName) ImagePipeline(com.facebook.imagepipeline.core.ImagePipeline)

Example 9 with ImagePipeline

use of com.facebook.imagepipeline.core.ImagePipeline in project remusic by aa112901.

the class MediaService method getNotification.

private Notification getNotification() {
    RemoteViews remoteViews;
    final int PAUSE_FLAG = 0x1;
    final int NEXT_FLAG = 0x2;
    final int STOP_FLAG = 0x3;
    final String albumName = getAlbumName();
    final String artistName = getArtistName();
    final boolean isPlaying = isPlaying();
    remoteViews = new RemoteViews(this.getPackageName(), R.layout.notification);
    String text = TextUtils.isEmpty(albumName) ? artistName : artistName + " - " + albumName;
    remoteViews.setTextViewText(R.id.title, getTrackName());
    remoteViews.setTextViewText(R.id.text, text);
    // 此处action不能是一样的 如果一样的 接受的flag参数只是第一个设置的值
    Intent pauseIntent = new Intent(TOGGLEPAUSE_ACTION);
    pauseIntent.putExtra("FLAG", PAUSE_FLAG);
    PendingIntent pausePIntent = PendingIntent.getBroadcast(this, 0, pauseIntent, 0);
    remoteViews.setImageViewResource(R.id.iv_pause, isPlaying ? R.drawable.note_btn_pause : R.drawable.note_btn_play);
    remoteViews.setOnClickPendingIntent(R.id.iv_pause, pausePIntent);
    Intent nextIntent = new Intent(NEXT_ACTION);
    nextIntent.putExtra("FLAG", NEXT_FLAG);
    PendingIntent nextPIntent = PendingIntent.getBroadcast(this, 0, nextIntent, 0);
    remoteViews.setOnClickPendingIntent(R.id.iv_next, nextPIntent);
    Intent preIntent = new Intent(STOP_ACTION);
    preIntent.putExtra("FLAG", STOP_FLAG);
    PendingIntent prePIntent = PendingIntent.getBroadcast(this, 0, preIntent, 0);
    remoteViews.setOnClickPendingIntent(R.id.iv_stop, prePIntent);
    // PendingIntent pendingIntent = PendingIntent.getActivity(this.getApplicationContext(), 0,
    // new Intent(this.getApplicationContext(), PlayingActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
    final Intent nowPlayingIntent = new Intent();
    // nowPlayingIntent.setAction("com.wm.remusic.LAUNCH_NOW_PLAYING_ACTION");
    nowPlayingIntent.setComponent(new ComponentName("com.wm.remusic", "com.wm.remusic.activity.PlayingActivity"));
    nowPlayingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent clickIntent = PendingIntent.getBroadcast(this, 0, nowPlayingIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    PendingIntent click = PendingIntent.getActivity(this, 0, nowPlayingIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    final Bitmap bitmap = ImageUtils.getArtworkQuick(this, getAlbumId(), 160, 160);
    if (bitmap != null) {
        remoteViews.setImageViewBitmap(R.id.image, bitmap);
        // remoteViews.setImageViewUri(R.id.image, MusicUtils.getAlbumUri(this, getAudioId()));
        mNoBit = null;
    } else if (!isTrackLocal()) {
        if (mNoBit != null) {
            remoteViews.setImageViewBitmap(R.id.image, mNoBit);
            mNoBit = null;
        } else {
            Uri uri = null;
            if (getAlbumPath() != null) {
                try {
                    uri = Uri.parse(getAlbumPath());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (getAlbumPath() == null || uri == null) {
                mNoBit = BitmapFactory.decodeResource(getResources(), R.drawable.placeholder_disk_210);
                updateNotification();
            } else {
                ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(uri).setProgressiveRenderingEnabled(true).build();
                ImagePipeline imagePipeline = Fresco.getImagePipeline();
                DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, MediaService.this);
                dataSource.subscribe(new BaseBitmapDataSubscriber() {

                    @Override
                    public void onNewResultImpl(@Nullable Bitmap bitmap) {
                        // No need to do any cleanup.
                        if (bitmap != null) {
                            mNoBit = bitmap;
                        }
                        updateNotification();
                    }

                    @Override
                    public void onFailureImpl(DataSource dataSource) {
                        // No cleanup required here.
                        mNoBit = BitmapFactory.decodeResource(getResources(), R.drawable.placeholder_disk_210);
                        updateNotification();
                    }
                }, CallerThreadExecutor.getInstance());
            }
        }
    } else {
        remoteViews.setImageViewResource(R.id.image, R.drawable.placeholder_disk_210);
    }
    if (mNotificationPostTime == 0) {
        mNotificationPostTime = System.currentTimeMillis();
    }
    if (mNotification == null) {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setContent(remoteViews).setSmallIcon(R.drawable.ic_notification).setContentIntent(click).setWhen(mNotificationPostTime);
        if (CommonUtils.isJellyBeanMR1()) {
            builder.setShowWhen(false);
        }
        mNotification = builder.build();
    } else {
        mNotification.contentView = remoteViews;
    }
    return mNotification;
}
Also used : ImageRequestBuilder(com.facebook.imagepipeline.request.ImageRequestBuilder) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) CloseableImage(com.facebook.imagepipeline.image.CloseableImage) Uri(android.net.Uri) SuppressLint(android.annotation.SuppressLint) FileNotFoundException(java.io.FileNotFoundException) RemoteException(android.os.RemoteException) IOException(java.io.IOException) DataSource(com.facebook.datasource.DataSource) BaseBitmapDataSubscriber(com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber) RemoteViews(android.widget.RemoteViews) Bitmap(android.graphics.Bitmap) ImageRequest(com.facebook.imagepipeline.request.ImageRequest) NotificationCompat(android.support.v4.app.NotificationCompat) ComponentName(android.content.ComponentName) PendingIntent(android.app.PendingIntent) ImagePipeline(com.facebook.imagepipeline.core.ImagePipeline) Nullable(android.support.annotation.Nullable)

Example 10 with ImagePipeline

use of com.facebook.imagepipeline.core.ImagePipeline in project fresco by facebook.

the class ImagePipelineNotificationFragment method createNotification.

private void createNotification() {
    final ImagePipeline imagePipeline = Fresco.getImagePipeline();
    final ImageRequest imageRequest = ImageRequest.fromUri(sampleUris().createSampleUri(ImageUriProvider.ImageSize.S));
    final DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, null);
    dataSource.subscribe(new BaseBitmapDataSubscriber() {

        @Override
        protected void onNewResultImpl(Bitmap bitmap) {
            displayNotification(bitmap);
        }

        @Override
        protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
            showToastText("Failed to fetch image directly: " + dataSource.getFailureCause());
            // In general, failing to fetch the image should not keep us from displaying the
            // notification. We proceed without the bitmap.
            displayNotification(null);
        }
    }, UiThreadImmediateExecutorService.getInstance());
}
Also used : Bitmap(android.graphics.Bitmap) ImageRequest(com.facebook.imagepipeline.request.ImageRequest) CloseableReference(com.facebook.common.references.CloseableReference) ImagePipeline(com.facebook.imagepipeline.core.ImagePipeline) BaseBitmapDataSubscriber(com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber)

Aggregations

ImagePipeline (com.facebook.imagepipeline.core.ImagePipeline)22 ImageRequest (com.facebook.imagepipeline.request.ImageRequest)17 CloseableReference (com.facebook.common.references.CloseableReference)16 Bitmap (android.graphics.Bitmap)10 DataSource (com.facebook.datasource.DataSource)10 BaseBitmapDataSubscriber (com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber)8 Uri (android.net.Uri)7 ImageRequestBuilder (com.facebook.imagepipeline.request.ImageRequestBuilder)5 CloseableImage (com.facebook.imagepipeline.image.CloseableImage)4 CloseableBitmap (com.facebook.imagepipeline.image.CloseableBitmap)3 File (java.io.File)3 FileOutputStream (java.io.FileOutputStream)3 SuppressLint (android.annotation.SuppressLint)2 ComponentName (android.content.ComponentName)2 RemoteViews (android.widget.RemoteViews)2 LatLng (com.amap.api.maps.model.LatLng)2 BinaryResource (com.facebook.binaryresource.BinaryResource)2 FileBinaryResource (com.facebook.binaryresource.FileBinaryResource)2 DiskCacheConfig (com.facebook.cache.disk.DiskCacheConfig)2 PooledByteBuffer (com.facebook.common.memory.PooledByteBuffer)2