Android - 需要暂停在特定实例播放媒体文件

时间:2013-10-06 17:22:40

标签: java android

我有一个由三个不同的按钮组成的页面PLAY |暂停|停。 玩| 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>

您的帮助得到了认可.. !!

1 个答案:

答案 0 :(得分: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)

希望有所帮助

祝福