3

一時停止と再開のステータスでオーディオを作成するためのアプリケーションを実装する必要があり、アプリを開始するとオーディオが開始され、エミュレータの戻るボタンを押すとオーディオ音楽は一時停止状態になりますが、アクティビティが戻ってくると停止した状態からフォアグラウンドに戻ると、私のオーディオ音楽は再開されません。これが私のコードです。

public class Audio_Activity extends Activity 
{
    private  MediaPlayer mp;
    Button btnStartStop ;
    Button btnChapter ;
    Button btnOne;
    Button btnTwo;
    Button btnThree;
    Button btnFour;
    Button btnFive;
    int length;


    ImageView imgVw;
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.audio);
        init();

        mp=MediaPlayer.create(Audio_Activity.this,R.raw.ennamo_yadho);
        Log.e("Song is playing","in  Mediya Player ");

        if(mp!=null)
        {
                mp.setLooping(false);
                mp.start();
                btnChapter.setEnabled(false);
                System.out.println("B4 button Click!!!!");
        }

        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp) 
            {
                mp.stop();
                mp.release();
                btnChapter.setEnabled(true);
                System.out.println("Music is over and Button is enable !!!!!!");
            }
        });


        btnStartStop.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View arg0) 
            {
                if(mp.isPlaying())
                {
                    if(mp!=null)
                    {
                            mp.pause();
                    }

                }

                else
                {
                    // Resume song
                    if(mp!=null)
                    {
                            mp.start();
                    }
                }
            }
        });


        btnOne.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v) 
            {
                imgVw.setImageResource(R.raw.chocklate);
                }
            }
        );

        btnTwo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                imgVw.setImageResource(R.raw.creame);
            }
        });

        btnThree.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                imgVw.setImageResource(R.raw.schocklate);

            }
        });

        btnFour.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                imgVw.setImageResource(R.raw.pinapple);

            }
        });

        btnFive.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                imgVw.setImageResource(R.raw.strobery);

            }
        });
    }

     @Override
        protected void onResume() 
        {
            super.onResume();
            System.out.println("Activity is Resume !!!");
        }

    @Override
    protected void onStart() 
    {
        super.onStart(); 
        System.out.println("Activity is Started !!!");
    }


     @Override
        protected void onRestart() {
            super.onRestart();
            System.out.println("Activity is Re-Started !!!");
            if(mp.isPlaying())
            {
                if(mp!=null)
                {
                    length=mp.getCurrentPosition();
                    mp.seekTo(length);
                    mp.start();
                }
            }

        }



        @Override
        protected void onPause() {
            super.onPause();
            System.out.println("Activity is Pause!!!");
        }

        @Override
        protected void onStop() {
            super.onStop();
            System.out.println("Activity is Stop !!!");
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            System.out.println("Activity is Destroyed !!!");
        }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) 
        { //Back key pressed
           //Things to Do
            if(mp!= null)
            {
                if(mp.isPlaying())
                {
                    mp.pause();
                    //mp=null;
                }
            }
            finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

}
4

2 に答える 2

0

バックグラウンド再生、一時停止、停止、または通知をクリックしてアクティビティを開くには、android MediaPlaybackService を使用する必要があります。戻るボタンをクリックすると、オーディオ再生を制御するために、PendingIntent がボタン クリック イベントまたは通知バーのボタンにバインドされます。

このGist コードを AudioPlayer に使用するか、 MediaPlaybackServiceクラスを使用するか、このowncloudコードをリバース エンジニアリングしてみてください。

于 2014-05-06T04:03:32.943 に答える
-1

あなたのコードは正しくありません。戻るボタンなどを気にする必要はありませんが、アクティビティのライフサイクルです。でオーディオを一時停止し、onPause()で再開する必要がありますonResume()。したがって、コードを にonPause()移動し、コードを削除してonKeyDown()、コードを から に移動します。そして、必要のないすべてのメソッド、 lineなどを削除しますonRestart()onResume()onDestroy()onStart()

于 2013-07-08T08:42:37.763 に答える