1

宿題とクローザーの 2 つの活動があります。宿題で曲を再生していますが、ボタンを押すと、メディア プレーヤーが一時停止し、クローザーが開きます。宿題の onResume 関数で、メディア プレーヤーを再度起動しようとしていますが、サウンドが再生されません。誰でもこれで私を助けることができますか?

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);

        setContentView(R.layout.activity_homework);
        AssetFileDescriptor afd;
        try {
            afd = getAssets().openFd("rev.mp3");
            mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            mediaplayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        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) {
                mediaplayer.pause();
                media_length = mediaplayer.getCurrentPosition();
                startActivity(openCloser);

            }

        });
    }

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


}
4

2 に答える 2

3

イベントonPause()ではなく、アクティビティのメソッドにメディアの状態を保存してみてください。これにより、が呼び出されるonClick()たびに、その前に が呼び出されることが保証されます (アクティビティが初めて実行される場合を除きます。この場合、は の後に呼び出されます) 。onResume()onPause()onResume()onStart()

于 2013-04-19T22:11:39.463 に答える
0

onResume()mediaplayer が null かどうかを確認してみてください。

null の場合は、 を呼び出す必要がありますmediaPlayer.prepare()

おそらく、このコードを独自の関数に入れます。

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

そうすれば、onResume()/で呼び出すことができますonCreate()onResume()nullチェックをしてみてください。null の場合は、新しい関数を呼び出して mediaPlayer を準備します。

于 2013-04-19T22:09:38.997 に答える