/* * 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 com.example.android.tvleanback; 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.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); // You can get the height & width like such: // int width = size.x; // int height = size.y; return size; } 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)); } }