【问题标题】:how to resume my audio in Android?如何在 Android 中恢复我的音频?
【发布时间】:2014-05-06 12:20:29
【问题描述】:

我必须实现应用程序来创建具有暂停和恢复状态的音频,并且当我的应用程序启动音频时,当我按下模拟器上的后退按钮时,音频音乐处于暂停状态,但是当我的活动从停止状态回到前台我的音频音乐没有恢复。这是我的代码。

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

}

【问题讨论】:

标签: java android


【解决方案1】:

您应该使用 android MediaPlaybackService 进行后台播放、暂停、停止或只是通过单击通知来打开活动。当单击后退按钮时,它会将 PendingIntent 与按钮单击事件或通知栏上的按钮绑定以控制音频播放。

将此 Gist Code 用于 AudioPlayer,尝试使用 MediaPlaybackService 类或尝试反向工程此 owncloud 代码。

【讨论】:

    【解决方案2】:

    您的代码不正确。你不应该打扰后退按钮等,而是活动生命周期。您应该在onPause() 中暂停您的音频并在onResume() 中恢复。所以将代码移动到onPause() 并摆脱onKeyDown() 并将代码从onRestart() 移动到onResume()。并删除所有不需要的方法,onDestroy()onStart() 等行

    【讨论】:

    • 当我点击后按按钮时,我的音乐暂停,但是当我重新开始我的活动时,我的音乐没有恢复。音乐从起始位置开始,而不是从音乐暂停的当前位置开始。怎么能这样。我不明白。而且我还删除了方法 onDestroy() , onStart() , onKeyDown() 。但即使我的音乐也没有恢复。
    • 如何在 Android 中重新启动我的活动时从当前位置开始音频??请给我解决方案。
    • 为什么当我重新启动我的活动时我的音频会重新启动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多