package com.youplayer.player;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Handler;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class Player_UIManager {
private static Rect m_desRect = new Rect(0, 0, 400, 400);
private static SurfaceHolder mHolder = null;
private static int mTotal;
private static int mCurrent;
private static boolean mbIsplayer;
private static boolean ispause;
// static Handler myHandler;
public static native void fone_media_player_set_surface_view(Object surface);
Player_UIManager(){
// mbIsplayer = false;
}
/**
* set Surface
*/
public static void Uim_Set_Player_Surface(SurfaceView surfaceview)
{
if (null != surfaceview)
{
mHolder = surfaceview.getHolder();
mHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL);
}else
mHolder = null;
}
public static void Uim_set_video_display(int a_left, int a_top, int a_right, int a_bottom)
{
m_desRect.set(a_left, a_top, a_right - a_left, a_bottom - a_top);
}
/**
* 从Player_Control发来的消息, 供Player_Control调用
*/
public static void Uim_Player_Message(int type, int percentage, int arg2){
}
static int count;
public static Object Bitmapbuffer_Create(int width, int height) {
if (width > 0 && height > 0) {
try{
Object obj = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
return obj;
}
catch(Throwable e)//Exception e
{
e.printStackTrace();
return null;
}
}
return null;
}
public native static Object fone_media_player_get_description();
public native static int fone_media_player_set_audio_volume(int a_nVolume);
public native static int fone_media_player_get_audio_volume();
public native static void fone_media_player_seek_preview_init(int width, int height);
public native static void fone_media_player_seek_preview_uninit();
public native static Object fone_media_player_seek_preview();
public native static void fone_media_thumbnail_init(int a_width, int a_height);
public native static void fone_media_thumbnail_uninit();
public native static void fone_media_player_thumbnail_stop();
public native static Object fone_media_player_get_thumbnail_from_video(String MediaPath, int pos, int bpp, int width, int height);
//
public native static Object fone_media_player_get_audio_info(String MediaPath);
/** 以上是Player_Control提供给UI调用的接口,以下是自用方法 */
public static void RenderVideoFrame(Object bmp, Object srcRect)
{
if (((Bitmap) bmp != null) && (srcRect != null))
{
m_bitmap = (Bitmap) bmp;
m_srcRect = (Rect) srcRect;
SurfaceHolder holder = mHolder;
if(holder != null){
synchronized(holder){
Canvas canv = holder.lockCanvas();
if (canv != null)
{
canv.drawBitmap((Bitmap)bmp, (Rect)srcRect, m_desRect, null);
holder.unlockCanvasAndPost(canv);
}
}
}
}
}
static Bitmap m_bitmap;
static Rect m_srcRect;
public static void RenderLastFrame(Rect des)
{
Handler handler = null;
if(YouExplorer.instance != null)
handler = new Handler(YouExplorer.instance.getMainLooper());
if(handler == null)
return;
m_desRect = des;
handler.postDelayed((new Runnable(){
public void run(){
if(mHolder != null
&& m_bitmap != null
&& m_srcRect != null)
{
SurfaceHolder holder = mHolder;
synchronized(holder){
Canvas canv = null;
canv = holder.lockCanvas();
if (canv != null) {
canv.drawBitmap(m_bitmap, m_srcRect, m_desRect, null);
holder.unlockCanvasAndPost(canv);
}
}
}
}
}), 50);
}
public static void freeBitmap(){
if( m_bitmap != null ){
if( !m_bitmap.isRecycled() )
m_bitmap.recycle();
m_bitmap = null;
}
}
public static void DrawOneLineStr(Canvas canv
, String strSub
, int x
, int y
, Paint paint
, int textcolor
, int linecolor)
{
int left = x;
int delta = 2;
// draw outline
paint.setColor(linecolor);
canv.drawText(strSub, left-delta, y, paint);
canv.drawText(strSub, left, y+delta, paint);
canv.drawText(strSub, left+delta, y, paint);
canv.drawText(strSub, left, y-delta, paint);
// draw the text
paint.setColor(textcolor);
canv.drawText(strSub, left, y, paint);
}
public static Bitmap getBitmap() {
return m_bitmap;
}
}