2013-07-08 14 views
3

我必須執行應用程序來創建暫停和恢復狀態的音頻,並且當我的應用程序作爲啓動音頻時啓動,並且當我按下模擬器上的後退按鈕時,音頻音樂處於暫停狀態,但當我的活動從停止狀態回到前景,我的音頻音樂不會恢復。這是我的代碼。如何在Android中恢復我的音頻?

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

} 
+0

[請參閱參考鏈接](http://stackoverflow.com/questions/16315043/audio-is-not-playing-after-stop-serviec-in-media-player) –

+0

你是'finish()'ing ,這意味着你的'mp'被破壞。 – njzk2

回答

-1

您的代碼不正確。你不應該打擾後臺等,而是活動的生命週期。你應該暫停你的音頻onPause()並恢復到onResume()。因此,將代碼移動到onPause()並擺脫onKeyDown()並將代碼從onRestart()移至onResume()。並刪除您不需要的所有方法,行onDestroy(), onStart()

+0

當我點擊後退按鈕時,我的音樂暫停,但是當我重新開始我的活動時,我的音樂不會恢復。音樂從起始位置開始,而不是從當前音樂暫停的位置開始。如何做到這一點。不明白。我還刪除了方法onDestroy(),onStart(),onKeyDown()。但即使我的音樂不是簡歷。 – tazeen

+0

如何在Android中重新啓動我的活動時從當前位置啓動音頻?請給我這個解決方案。 – tazeen

+0

爲什麼重新開始我的活動時我的音頻會重新啓動。 – tazeen

0

您應該使用Android MediaPlaybackService進行後臺播放,暫停,停止或僅通過單擊通知打開活動。當點擊後退按鈕時,它將通過通知欄上的按鈕點擊事件或按鈕綁定PendingIntent以控制音頻播放。

使用此Gist Code的AudioPlayer,儘量o使用MediaPlaybackService類或嘗試反向工程這一owncloud代碼。