2012-09-10 96 views
1

我已經爲一個音頻例子創建了一個簡單的Activity類,但問題是即使我離開應用程序,音頻文件仍然運行,我只想通過按任何手機中間的「確定/完成」按鈕。我應該在活動課中重寫哪種方法?'OK'按鈕的覆蓋方法

public class Audio extends Activity { 

    private MediaPlayer mp; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    setVolumeControlStream(AudioManager.STREAM_MUSIC); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_audio, menu); 
    return true; 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    int resId; 
    switch (keyCode) { 
    case KeyEvent.KEYCODE_DPAD_UP: 
    resId = R.raw.up; 
    break; 
    case KeyEvent.KEYCODE_DPAD_DOWN: 
    resId = R.raw.down; 
    break; 

    default: 
     return super.onKeyDown(keyCode, event); 
    } 

    // Release any resources from previous MediaPlayer 
    if (mp != null) { 
     mp.release(); 
     } 

    // Create a new MediaPlayer to play this sound 
    mp = MediaPlayer.create(this, resId); 
    mp.start(); 

    // Indicate this key was handled 
    return true; 


} 

}/// end class 
+0

接受您提問的其他問題的答案 – harshit

+1

請參閱此鏈接..它可能有助於您解決您的查詢。 [檢查此鏈接] [1]:http://nisha113a5.blogspot.in/2012/01/intercept-home-key-android.html – user1134427

回答

0

您可以處理你的onPause想要什麼()方法。或者你也可以實施 onDestroy()方法。當您按Home鍵或關閉應用程序時,它會轉到onPause()然後onDestroy()。

@Override 
protected void onPause() { 
    // stop player here 
    super.onPause(); 
} 
+0

實際上,您不需要重寫按鈕,只需在關閉應用程序時停止播放器時按照活動生命週期。看到這個鏈接的生命週期。 http://developer.android.com/reference/android/app/Activity.html – osayilgan

+0

對了對,但還沒工作..... m困惑,我在onPause方法中調用了finish()方法,無濟於事。 – Tanvir

+0

無需完成您的活動,您只需在onPause()方法內調用mediaPlayer.stop()即可。 – osayilgan

2

嘗試使用這樣的:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_HOME)) { 
    Toast.makeText(Audio.this, "You pressed the home button!", Toast.LENGTH_LONG).show(); 
    Audio.this.finish();     
    return true; 
} 
return super.onKeyDown(keyCode, event); 

}

+0

不,它不工作....按OK/HOME/BACK按鈕不會停止活動。不應該使用finish()方法來停止活動? TOAST甚至沒有出現。 – Tanvir

+0

是的,當然,你應該使用finish(),我只是試圖展示,如何覆蓋你想要的按鈕。 – slezadav

+0

對答案進行了適當的編輯。 – slezadav