【问题标题】:Android how can play song for 30 seconds only in mediaPlayerAndroid如何只能在mediaPlayer中播放歌曲30秒
【发布时间】:2018-03-24 06:14:05
【问题描述】:

我在 Android 上工作,我正在为音频歌曲创建一个播放器。我只想播放一首歌曲 30 秒。之后,必须关闭播放器。如果我再次按下START 按钮,它应该重新开始。

这是创建媒体播放器的代码:

    MediaPlayer mediaPlayer = new MediaPlayer();
    public void songPreview(String songURL){

        try{
        mediaPlayer=new MediaPlayer();
        mediaPlayer.setDataSource(songURL);
             mediaPlayer.prepare();
             mediaPlayer.start();

        } catch(Exception ex){
            ex.printStackTrace();
        }
    }

请建议我应该使用什么代码来播放我的歌曲只播放 30 秒后它就会停止,如果我想再次播放,那么我必须按下开始按钮。

注意:请为我提供 30 秒后停止媒体播放器的逻辑。

提前谢谢你。

【问题讨论】:

    标签: android


    【解决方案1】:

    使用 countdownTimer 来完成您的目标,您可以在其中手动将倒数计时器设置为 30 秒。当倒计时完成过程时,它将转到完成方法并执行完成方法代码 ::

        CountDownTimer cntr_aCounter = new CountDownTimer(3000, 1000) {
            public void onTick(long millisUntilFinished) {
    
                mp_xmPlayer2.start();
            }
    
            public void onFinish() {
                //code fire after finish
                   mp_xmPlayer2.stop();
            }
            };cntr_aCounter.start();
    

    【讨论】:

    • 欢迎您。我还有一个工作项目,其中一些时间限制我自动播放音频我有很多搜索,最后我找到了这个计时器。
    • 请接受最适合您的答案。它有助于让我们的社区保持成功。
    • 在此示例中,onTick() 将每秒调用一次。不过它没有效果,因为 MediaPlayer.start() 只执行一次。
    • 您的示例运行良好,我只是说 CountDownTimer 有点矫枉过正,因为每秒都会调用 onTick()。您可以使用 Handler 实现相同的目的,请参阅下面的答案。
    【解决方案2】:
    private void playSoundForXSeconds(final Uri soundUri, int seconds) {
        if(soundUri!=null) {
            final MediaPlayer mp = new MediaPlayer();
            try {
                mp.setDataSource(Settings.this, soundUri);
                mp.prepare();
                mp.start();
            }catch(Exception e) {
                e.printStackTrace();
            }
    
            Handler mHandler = new Handler();
            mHandler.postDelayed(new Runnable() {
                public void run() {
                   try {
                       mp.stop();
                   }catch(Exception e) {
                      e.printStackTrace();
                   }
                }
            }, seconds * 1000);
        }
    }
    

    【讨论】:

    • 我更喜欢这个建议,因为 Java 不是 .net,你不需要让事情正常工作,你需要努力让事情变得聪明。尤其是在安卓和其他移动平台上,做“讨厌”的事情会延长电池寿命并减慢手机速度。
    【解决方案3】:

    此方法在给定时间后跳转到曲目的末尾,并允许本机 onCompleted 回调完成其工作。您显然需要扩展代码以处理在播放完成之前触发的任何暂停事件。

        private static void startMedia(final MediaPlayer mediaPlayer, @Nullable Integer previewDuration) {
        mediaPlayer.start();
    
        if( previewDuration != null) {
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mediaPlayer.seekTo(mediaPlayer.getDuration());
                }
            }, previewDuration);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      相关资源
      最近更新 更多