Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 659|回复: 0

求助,音乐播放器如何实现快进?

[复制链接]

该用户从未签到

发表于 2011-10-22 17:35:16 | 显示全部楼层 |阅读模式
有 方法吗
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 17:35:26 | 显示全部楼层

Re:求助,音乐播放器如何实现快进

Duzpp 的帖子

将视频播放器添加新功能<快进,快退,时间显示等> package org.hqx.android.surfaceiewvedio;



import java.io.IOException;

import java.sql.Time;



import android.app.Activity;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Handler;

import android.view.KeyEvent;

import android.view.Surface;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.view.WindowManager;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ProgressBar;

import android.widget.TextView;



public class SurfaceViewVedio extends Activity {

        private SurfaceHolder hold = null;

        private SurfaceView mPreview = null;

        private MediaPlayer mp = null ;

        private Surface su = null;

        private ProgressBar progressbar  = null;

        private Button btnplay = null;

        private Button btnstoo = null;

        private TextView text1 = null;

        private TextView text2 = null;

        private Button btnPAUSED = null;

        private Button btnaddgo = null;

        private Button btnaddback = null;

      

        private MediaPlayerState        mediaPlayerState        = MediaPlayerState.STOPPED;

        private enum MediaPlayerState

        {

                STOPPED, PLAYING, PAUSED

        }

      

        private HandlerInvocation        handlerInvocation        = new HandlerInvocation();

        private Handler                                timerHandler                = new Handler();

        private final int                        updateInterval                = 500;

      

        final private String currentFilePath = "/sdcard/android/kongfu.mp4";

   

      

      

        @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        setContentView(R.layout.main);

        mPreview = (SurfaceView)this.findViewById(R.id.surface);

        btnplay = (Button)this.findViewById(R.id.butcnplay);

        btnstoo =(Button)this.findViewById(R.id.butcnstoo);

        btnPAUSED = (Button)this.findViewById(R.id.butcnpause);

        text1 =(TextView)this.findViewById(R.id.textv1);

        text2 =(TextView)this.findViewById(R.id.textv2);

        

        btnaddgo = (Button)this.findViewById(R.id.addgo);

        btnaddback = (Button)this.findViewById(R.id.addback);

        

        progressbar = (ProgressBar)this.findViewById(R.id.progress_horizontal);

        

                // requestWindowFeature(Window.FEATURE_NO_TITLE);

        

        mPreview.setOnClickListener(new OnClickListener(){   

                public void onClick(View arg0) {

                                 hold.setFixedSize(getWindowManager().getDefaultDisplay().getWidth(),

                                                          getWindowManager().getDefaultDisplay().getHeight());

                                             getWindow().setFlags(WindowManager.LayoutParams.FLAG_NO_STATUS_BAR,

                                                                         WindowManager.LayoutParams.FLAG_NO_STATUS_BAR);

                            }

                                });

        

        btnstoo.setOnClickListener(new OnClickListener(){



                        public void onClick(View arg0) {

                                mediaPlayerStop();      

                    }

        });  

        

        btnPAUSED.setOnClickListener(new OnClickListener(){



                        public void onClick(View arg0) {

                                mediaPlayerPause();      

                    }

        });  

      

        btnplay.setOnClickListener(new OnClickListener(){



                        public void onClick(View arg0) {

                                try {

                                                hold = mPreview.getHolder();

                                            su = hold.getSurface();

                                            mediaPlayerPlay();                                                        

                                } catch (IllegalArgumentException e) {

                                        // TODO Auto-generated catch block

                                        e.printStackTrace();

                                }

                    }

        });

        

        btnaddgo.setOnClickListener(new OnClickListener(){



                        public void onClick(View arg0) {

                                

                                addgo();

                        }

               

               

        });

        

        

        btnaddback.setOnClickListener(new OnClickListener(){



                        public void onClick(View arg0) {

                                addback();                                 

                        }

               

               

        });

        

    }



        @Override

        public boolean onKeyUp(int keyCode, KeyEvent event) {

                if(keyCode == KeyEvent.KEYCODE_SPACE ){

                        hold.setFixedSize(480,240);

                        return true;

                }

                return false;

        }

      

      

        private class HandlerInvocation implements Runnable

        {

                public void run()

                {

                        displayProgress();

                        timerHandler.postDelayed(handlerInvocation, updateInterval);

                }



        };

      

        private void displayProgress() {

                Time progress = new Time(mp.getCurrentPosition());

                Time remaining = new Time(mp.getDuration()-mp.getCurrentPosition());

                text1.setText(progress.toString());

                text2.setText("-"+remaining.toString());

               

                int progressValue = 0;

                if(mp.getDuration()>0){

                        progressValue = progressbar.getMax()*mp.getCurrentPosition()/mp.getDuration();

                }

                 progressbar.setProgress(progressValue);

               

        }

      

        private void mediaPlayerPause()

        {

                mp.pause();

                mediaPlayerState = MediaPlayerState.PAUSED;

                timerHandler.removeCallbacks(handlerInvocation);

                displayProgress();

        }

      

        private void addgo()

        {

                if(mediaPlayerState != MediaPlayerState.STOPPED){

                        mp.seekTo(mp.getCurrentPosition()+20);

                        mp.start();

                        timerHandler.postDelayed(handlerInvocation, updateInterval);

                }

                else{

                        timerHandler.removeCallbacks(handlerInvocation);

                        displayProgress();

                }

        }

      

        private void addback()

        {

                if(mediaPlayerState != MediaPlayerState.STOPPED){

                        mp.seekTo(mp.getCurrentPosition()-20);

                        mp.start();

                        timerHandler.postDelayed(handlerInvocation, updateInterval);

                }

                else{

                        timerHandler.removeCallbacks(handlerInvocation);

                        displayProgress();

                }

        }

        private void mediaPlayerStop()

        {

                mp.stop();

                mediaPlayerState = MediaPlayerState.STOPPED;

                timerHandler.removeCallbacks(handlerInvocation);

                displayProgress();

        }

      

        private void mediaPlayerPlay()

        {

                if (mediaPlayerState == MediaPlayerState.STOPPED)

                {

                        mediaPlayerInitialise(currentFilePath);

                        mediaPlayerState = MediaPlayerState.PLAYING;

                        timerHandler.postDelayed(handlerInvocation, updateInterval);

                }

                else{

                mp.seekTo(mp.getCurrentPosition());

                mp.start();

                mediaPlayerState = MediaPlayerState.PLAYING;

                timerHandler.postDelayed(handlerInvocation, updateInterval);

                }      

        }

      

      

        private void mediaPlayerInitialise(String filePath)

        {

                mediaPlayerState = MediaPlayerState.STOPPED;

                mp = new MediaPlayer();

                mp.setOnCompletionListener(new MediaPlayerCompletionListener());

                try

                {   

                        mp.setDisplay(su);

                        mp.setDataSource(filePath);

                        mp.prepare();

                        mp.start();

                        displayProgress();

                }

                catch (IOException e)

                {

                        // TODO: Handle this exception better

                        e.printStackTrace();

                        assert (false);

                }

        }

      

        private class MediaPlayerCompletionListener implements MediaPlayer.OnCompletionListener

        {

                public void onCompletion(MediaPlayer mediaPlayer)

                {

                        mediaPlayerStop();

                }

        }

      

}
[/code]
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 17:35:32 | 显示全部楼层

Re:求助,音乐播放器如何实现快进

thanks.....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-9 21:26 , Processed in 0.336803 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表