0

我有一个由三个不同按钮组成的页面 暂停 | 停止。播放 | STOP 工作正常,但我无法在特定情况下暂停。我想通过按下暂停按钮来暂停播放。然后再次按下播放按钮从保存的实例中恢复它。

下面是 Sound.java 文件中的代码

public class Sound extends Activity {

    MediaPlayer mp = null;
    String play = "Play!";      
    String stop = "Stop!";
    String pause = "Pause";     
    int length;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sound);

        final ImageButton play = (ImageButton) findViewById(R.id.idplay);
        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                managerOfSound("play");
                Toast toast_play = Toast.makeText(getBaseContext(),
                        "Playing First", Toast.LENGTH_SHORT);
                toast_play.show();

            } // END onClick()
        });

final ImageButton pause = (ImageButton) findViewById(R.id.idpause);
        pause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                managerOfSound("pause");
                Toast toast_pause = Toast.makeText(getBaseContext(),
"Pausing Morning Bhajan-Aarati", Toast.LENGTH_SHORT);
                toast_pause.show();

            } // END onClick()
        });


        final ImageButton stop = (ImageButton) findViewById(R.id.idstop);
        stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mp != null) {
                    mp.stop();
                    mp.reset();
                    Toast toast_stop = Toast.makeText(getBaseContext(),
                            "Stopping First",
                            Toast.LENGTH_SHORT);
                    toast_stop.show();
                }
            } // END onClick()
        });


    /** Manager of Sounds **/
    protected void managerOfSound(String theText) {
if (mp != null){
        mp.reset();
        mp.release();
        }
        if (theText == "play")
            mp = MediaPlayer.create(this, R.raw.goodbye);
        else if (theText == "pause" && mp.isPlaying())
mp.pause();
            length = mp.getCurrentPosition();
            mp.seekTo(length);
            mp.start();
    }

这是我的 sound.xml 文件,

<RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <ImageButton
            android:id="@+id/idplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="65dp"
            android:layout_marginTop="20dp"
            android:background="@drawable/image_play" />
        <!-- android:text="@string/idplay" /> -->

        <ImageButton
            android:id="@+id/idpause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_toLeftOf="@+id/idstop"
            android:background="@drawable/image_pause" />

        <ImageButton
            android:id="@+id/idstop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:layout_toRightOf="@+id/idplay"
            android:background="@drawable/image_stop" />

    </RelativeLayout>

感谢您的帮助..!!

4

1 回答 1

0

我认为你的问题是这一行:

if (theText == "play")
  mp = MediaPlayer.create(this, R.raw.goodbye);
else if (theText == "pause" && mp.isPlaying())
  mp.pause();
  length = mp.getCurrentPosition();
  mp.seekTo(length);
  mp.start();´

您通过单击暂停按钮来设置长度,但您将在此 if 子句中直接重新开始。

如果之前播放过媒体,您应该检查是否单击了播放按钮,例如

if(length > 0)

然后在指定位置启动播放器。

编辑:此外,您不应使用运算符==来比较字符串。你应该更好地使用string1.equals(string2)

希望能帮助到你

最好的祝愿

于 2013-10-06T17:35:13.543 回答