| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.cts.jank.leanback; |
| |
| import android.app.Activity; |
| import android.content.Context; |
| import android.graphics.Point; |
| import android.media.MediaMetadataRetriever; |
| import android.os.Build; |
| import android.util.DisplayMetrics; |
| import android.view.Display; |
| import android.view.WindowManager; |
| import android.widget.FrameLayout; |
| import android.widget.Toast; |
| import android.widget.VideoView; |
| |
| import java.util.HashMap; |
| |
| /** |
| * A collection of utility methods, all static. |
| */ |
| public class Utils { |
| |
| public interface MediaDimensions { |
| double MEDIA_HEIGHT = 0.95; |
| double MEDIA_WIDTH = 0.95; |
| double MEDIA_TOP_MARGIN = 0.025; |
| double MEDIA_RIGHT_MARGIN = 0.025; |
| double MEDIA_BOTTOM_MARGIN = 0.025; |
| double MEDIA_LEFT_MARGIN = 0.025; |
| } |
| |
| /* |
| * Making sure public utility methods remain static |
| */ |
| private Utils() { |
| } |
| |
| /** |
| * Returns the screen/display size |
| */ |
| public static Point getDisplaySize(Context context) { |
| WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); |
| Display display = wm.getDefaultDisplay(); |
| Point size = new Point(); |
| display.getSize(size); |
| return size; |
| } |
| |
| /** |
| * Shows a (long) toast |
| */ |
| public static void showToast(Context context, String msg) { |
| Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); |
| } |
| |
| /** |
| * Shows a (long) toast. |
| */ |
| public static void showToast(Context context, int resourceId) { |
| Toast.makeText(context, context.getString(resourceId), Toast.LENGTH_LONG).show(); |
| } |
| |
| public static int convertDpToPixel(Context ctx, int dp) { |
| float density = ctx.getResources().getDisplayMetrics().density; |
| return Math.round((float) dp * density); |
| } |
| |
| |
| /** |
| * Example for handling resizing content for overscan. Typically you won't need to resize |
| * when using the Leanback support library. |
| */ |
| public void overScan(Activity activity, VideoView videoView) { |
| DisplayMetrics metrics = new DisplayMetrics(); |
| activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); |
| int w = (int) (metrics.widthPixels * MediaDimensions.MEDIA_WIDTH); |
| int h = (int) (metrics.heightPixels * MediaDimensions.MEDIA_HEIGHT); |
| int marginLeft = (int) (metrics.widthPixels * MediaDimensions.MEDIA_LEFT_MARGIN); |
| int marginTop = (int) (metrics.heightPixels * MediaDimensions.MEDIA_TOP_MARGIN); |
| int marginRight = (int) (metrics.widthPixels * MediaDimensions.MEDIA_RIGHT_MARGIN); |
| int marginBottom = (int) (metrics.heightPixels * MediaDimensions.MEDIA_BOTTOM_MARGIN); |
| FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(w, h); |
| lp.setMargins(marginLeft, marginTop, marginRight, marginBottom); |
| videoView.setLayoutParams(lp); |
| } |
| |
| |
| public static long getDuration(String videoUrl) { |
| MediaMetadataRetriever mmr = new MediaMetadataRetriever(); |
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { |
| mmr.setDataSource(videoUrl, new HashMap<String, String>()); |
| } else { |
| mmr.setDataSource(videoUrl); |
| } |
| return Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)); |
| } |
| } |