1 /* 2 * Copyright 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.widget; 18 19 import android.annotation.NonNull; 20 import android.media.MediaPlayer2; 21 import android.view.View; 22 23 interface VideoViewInterface { 24 /** 25 * Assigns the view's surface to the given MediaPlayer2 instance. 26 * 27 * @param mp MediaPlayer2 28 * @return true if the surface is successfully assigned, false if not. It will fail to assign 29 * if any of MediaPlayer2 or surface is unavailable. 30 */ 31 boolean assignSurfaceToMediaPlayer(MediaPlayer2 mp); 32 void setSurfaceListener(SurfaceListener l); 33 int getViewType(); 34 void setMediaPlayer(MediaPlayer2 mp); 35 36 /** 37 * Takes over oldView. It means that the MediaPlayer2 will start rendering on this view. 38 * The visibility of oldView will be set as {@link View.GONE}. If the view doesn't have a 39 * MediaPlayer2 instance or its surface is not available, the actual execution is deferred until 40 * a MediaPlayer2 instance is set by {@link #setMediaPlayer} or its surface becomes available. 41 * {@link SurfaceListener.onSurfaceTakeOverDone} will be called when the actual execution is 42 * done. 43 * 44 * @param oldView The view that MediaPlayer2 is currently rendering on. 45 */ 46 void takeOver(@NonNull VideoViewInterface oldView); 47 48 /** 49 * Indicates if the view's surface is available. 50 * 51 * @return true if the surface is available. 52 */ 53 boolean hasAvailableSurface(); 54 55 /** 56 * An instance of VideoViewInterface calls these surface notification methods accordingly if 57 * a listener has been registered via {@link #setSurfaceListener(SurfaceListener)}. 58 */ 59 interface SurfaceListener { 60 void onSurfaceCreated(View view, int width, int height); 61 void onSurfaceDestroyed(View view); 62 void onSurfaceChanged(View view, int width, int height); 63 void onSurfaceTakeOverDone(VideoViewInterface view); 64 } 65 } 66