当前位置: 首页 > 知识库问答 >
问题:

Android:OnResume/OnPause和mediaplayer

乐正晟
2023-03-14

我有两个活动,家庭作业和更密切。我在家庭作业中播放了一首歌,但当按下一个按钮时,媒体播放器会暂停,并打开closer。在我的onPause函数中,我试图暂停媒体播放器,但它不起作用,activity越接近打开,音乐还在播放。之前,我将它设置为在activity家庭作业的按钮监听器中,媒体播放器暂停,但当我将它设置为onResume时,mediaplayer不会恢复。我想这可能是mediaplayer的范围问题,有人能帮我吗?

package com.cis.lab4;

import java.io.IOException;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Homework extends Activity {

    final MediaPlayer mediaplayer = new MediaPlayer();
    int media_length;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_homework);
        setPlayer();
        mediaplayer.start();
        Button next = (Button) findViewById(R.id.homeworkContinue);
        final Intent openCloser = new Intent(this, EndActivity.class);
        next.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                startActivity(openCloser);

            }

        });
    }

    public void onResume(Bundle savedInstanceState){
        super.onResume();
        mediaplayer.seekTo(media_length);
        mediaplayer.start();
    }

    public void onPause(Bundle savedInstanceState){
        mediaplayer.pause();
        media_length = mediaplayer.getCurrentPosition();
    }


    public void setPlayer(){
        AssetFileDescriptor afd;
        try {
            afd = getAssets().openFd("rev.mp3");
            mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            mediaplayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

共有1个答案

司空昊阳
2023-03-14

您没有正确地覆盖onPause。

请在暂停时尝试以下操作:

    @Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();

    mediaplayer.pause();
    media_length = mediaplayer.getCurrentPosition();
}

那应该很管用。您也应该对OnResume执行同样的操作。晚安.

 类似资料:
  • 我有点进退两难,不知道该怎么解决。情况是这样的... 我有一个多activity应用程序,播放音乐从它开始的时间到应用程序退出的时间。 但是,如果我使用onPause/onResume来检测activity何时被发送到后台,并在onPause中暂停音乐,在onResume中恢复播放,那么当我启动下一个activity时,音乐会短暂地“跳过”,因为调用startActivity()后,主叫activ

  • 问题内容: 现在,小部件仅具有initeState() 和dispose(),该initeState()在第一次创建小部件时被触发,而dispose()在小部件 被破坏时被触发。有没有一种方法可以检测小部件何时回到 前台?当一个小部件由于另一个 小部件刚刚被前景显示而将要进入后台时?这等效 于Android触发onResume和onPause ,以及ios触发viewWillAppear和view

  • 我的主要活动是装载不同的碎片。此外,可以从MainActivity打开设置-activity。 如果用户只是在片段之间切换,那就万事大吉了。 当打开设置-activity并返回MainActivity时,onResume和onPause会被调用两次。如果用户打开设置-activity并再次返回MainActivity,onResume和onPause将被调用三次。每次用户打开“设置-activit

  • 我有两个片段A和B。在这里,我将从A中替换片段B,然后从B中替换片段A。在这两个片段之间,我将在onPause方法和onResume方法中显示toast,但它是如何不起作用的?有人能用代码解释为什么吗?

  • 我有一个活动需要在启动时打开屏幕(如果关闭)。所以在onCreate中,我有: 使用这个与wakelock在扩频接收器的帮助下,我能够使我的活动显示,每当它从广播接收器开始。 但问题很奇怪,活动生命周期以这种方式调用,onPause()和onResume在开始活动后立即执行 创建时 开始时 继续 打开暂停 onStop(停止) 开始时 继续 所以问题出在启动和恢复调用两次时,停止时也调用,我想在

  • 在使用带有片段的时,在选项卡之间移动时不会调用我们的和方法。我们有什么办法可以从碎片中找出我们是被发现还是被隐藏? 不幸的是,我在、中有逻辑,就像在location services注册一样,在切换选项卡时永远不会停止,因为在退出整个应用程序之前,永远不会调用。