1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android 客户端倍速播放 Android MediaPlayer 在 6.0 以上版本使用倍速播放功能说明

android 客户端倍速播放 Android MediaPlayer 在 6.0 以上版本使用倍速播放功能说明

时间:2022-11-08 18:20:57

相关推荐

android 客户端倍速播放 Android MediaPlayer 在 6.0 以上版本使用倍速播放功能说明

public class FloatingPopupWindow implementsSurfaceHolder.Callback {//弹窗宽度

private static final int POPUP_WINDOW_WIDTH = 567;//弹窗高度

private static final int POPUP_WINDOW_HEIGHT = 432;privateContext mContext;privatePopupWindow mPopupWindow;privateView mPopContentView;privateRelativeLayout mFloatingLayout;

SurfaceView surfaceView;

SurfaceHolder surfaceHolder;

MediaPlayer mediaPlayer;private boolean IsDouble = false;private floatlastX;private floatlastY;publicFloatingPopupWindow(Context context) {

mContext=context;

mPopContentView= LayoutInflater.from(mContext).inflate(R.layout.popup_window_floating, null);

mPopupWindow= newPopupWindow(mPopContentView, POPUP_WINDOW_WIDTH, POPUP_WINDOW_HEIGHT);

mFloatingLayout=mPopContentView.findViewById(R.id.floating_layout);

surfaceView=mPopContentView.findViewById(R.id.surface_view);

surfaceHolder=surfaceView.getHolder();

surfaceHolder.addCallback(this);

mPopContentView.setOnTouchListener(newView.OnTouchListener() {

@Overridepublic booleanonTouch(View v, MotionEvent event) {switch(event.getAction()) {caseMotionEvent.ACTION_DOWN:if (event.getPointerCount() == 1) {

IsDouble= false;

}if (!IsDouble) {

lastX=event.getRawX();

lastY=event.getRawY();

}break;caseMotionEvent.ACTION_MOVE:if (event.getPointerCount() > 1) {

IsDouble= true;

}if (!IsDouble) {int deltaX = (int) (event.getRawX() -lastX);

lastX=event.getRawX();int deltaY = (int) (event.getRawY() -lastY);

lastY=event.getRawY();

mPopupWindow.update(deltaX+ (int) lastX - (POPUP_WINDOW_WIDTH / 2), deltaY + (int) lastY - (POPUP_WINDOW_HEIGHT / 2), -1, -1, true);

}break;

}return true;

}

});

mediaPlayer= newMediaPlayer();

}/*** 是否显示*/

public booleanisShowing() {returnmPopupWindow.isShowing();

}public voidsetPlayPath(String playPath) {try{

mediaPlayer.reset();

mediaPlayer.setDataSource(playPath);

}catch(IOException e) {

e.printStackTrace();

}

}

@Overridepublic voidsurfaceCreated(SurfaceHolder holder) {

Surface surface=holder.getSurface();

mediaPlayer.setSurface(surface);

mediaPlayer.prepareAsync();

mediaPlayer.setOnPreparedListener(newMediaPlayer.OnPreparedListener() {

@Overridepublic voidonPrepared(MediaPlayer mp) {

mp.start();//6.0及之后支持倍速,测试

if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.M) {

mp.setPlaybackParams(new PlaybackParams().setSpeed(0.75f));

}

}

});

mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener() {

@Overridepublic voidonCompletion(MediaPlayer mp) {

dismiss();

}

});

}

@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, intheight) {

}

@Overridepublic voidsurfaceDestroyed(SurfaceHolder holder) {

}private View mNowView; //当前容器里面装载的View

/*** 添加新View*/

public voidaddView(View view) {

mNowView=view;if (mFloatingLayout != null) {

mFloatingLayout.addView(view);

}

}/*** 获取当前正展现的View*/

publicView getNowView() {returnmNowView;

}/*** 移除全部的子布局*/

public voidremoveAllView() {if (mFloatingLayout != null) {

mFloatingLayout.removeAllViews();

}

}/*** 显示弹出框*/

public voidshow(View view) {if(isShowing()) {return;

}

mPopupWindow.showAtLocation(view, Gravity.NO_GRAVITY,0, 200);

}/*** 隐藏弹出框*/

public voiddismiss() {if (mPopupWindow != null) {if(mPopupWindow.isShowing()) {

mPopupWindow.dismiss();

}

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。