我有一個應用程序,在主頁上我有按鈕用於瀏覽應用程序。關閉並退出我的應用程序在android
在該頁面上,我有一個「EXIT」按鈕,單擊它時應該將用戶帶到應用程序圖標所在手機的主屏幕。
但它讓我去主屏幕,但廣播仍然工作。
我該怎麼做?
我的代碼編號: -
//method for exit.
public void exitradio() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
編輯: -
我會嘗試這個
@Override
public void onClick(View v){
if(v == PlayBtn){
startradio();
}
else if(v == PauseBtn){
pauseradio();
}
else if(v == ExitBtn){
exitradio();
}
else if(v == RefreshBtn){
try {
refreshradio();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
和exitradio();
代碼: -
//method for exit.
public void exitradio() {
//finish();
System.exit(0);
}
,仍然關閉應用程序,但廣播仍然工作
我的MainActivity類別是: -
public class MainActivity extends Activity implements OnClickListener{
// Define ..............................................................
private static ProgressDialog progressDialog;
public MediaPlayer mp;
boolean isPrepared = false;
Button PlayBtn , ExitBtn , PauseBtn , RefreshBtn;
String MEDIA_PATH;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = ProgressDialog.show(MainActivity.this, "", "Buffering Radio...",true);
progressDialog.setCancelable(false);
// Declare ..............................................................
mp = new MediaPlayer();
PlayBtn = (Button)findViewById(R.id.btnPlay);
PlayBtn .setOnClickListener(this);
PauseBtn = (Button)findViewById(R.id.btnPause);
PauseBtn .setOnClickListener(this);
RefreshBtn = (Button)findViewById(R.id.btnRefresh);
RefreshBtn .setOnClickListener(this);
ExitBtn = (Button)findViewById(R.id.btnExit);
ExitBtn .setOnClickListener(this);
MEDIA_PATH = "http://radio.arabhosters.com:8015/";
// Volume Control ..............................................................
final AudioManager leftAm = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxVolume = leftAm.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = leftAm.getStreamVolume(AudioManager.STREAM_MUSIC);
SeekBar volControl = (SeekBar)findViewById(R.id.volumebar);
volControl.setMax(maxVolume);
volControl.setProgress(curVolume);
volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
leftAm.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});
}
@Override
public void onClick(View v){
if(v == PlayBtn){
startradio();
}
else if(v == PauseBtn){
pauseradio();
}
else if(v == ExitBtn){
exitradio();
}
else if(v == RefreshBtn){
try {
refreshradio();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void onCompletion(MediaPlayer mediaPlayer) {
synchronized(this){
isPrepared = false;
}
}
protected void onResume(){
super.onResume();
try {
mp.setDataSource(MEDIA_PATH);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //also consider mp.prepareAsync().
// defult start stream when start App.
mp.start();
mp.setVolume(100, 100);
progressDialog.dismiss();
}
// method for play stream after stop it.
public void startradio() {
try{
if(mp.isPlaying()){
return;
}
mp.start();
progressDialog.dismiss();
} catch(IllegalStateException ex){
ex.printStackTrace();
}
}
// method for Refresh stream.
public void refreshradio() throws IllegalArgumentException, SecurityException, IOException {
try{
if(mp.isPlaying()){
return;
}
mp.reset();
mp.setDataSource(MEDIA_PATH);
mp.prepare();
mp.start();
progressDialog.dismiss();
} catch(IllegalStateException ex){
ex.printStackTrace();
}
}
// method for pause stream.
public void pauseradio() {
mp.pause();
}
// method for check is radio paly or not stream
public boolean isPlaying() {
return mp.isPlaying();
}
// method for Looping audio if your record it - Soon :)
public boolean isLooping() {
return mp.isLooping();
}
// method for Looping audio if your record it - Soon :)
public void setLooping(boolean isLooping) {
mp.setLooping(isLooping);
}
// method for volume
public void setVolume(float volumeLeft, float volumeRight) {
mp.setVolume(volumeLeft, volumeRight);
}
// method for stop stream.
public void stopradio() {
if(mp.isPlaying()){
mp.stop();
}
mp.release();
}
//method for exit.
public void exitradio() {
//finish();
System.exit(0);
}
//method for back to main menu "Home".
public void backtomenu() {
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
和StartPoint可以類,如: -
public class StartPoint extends Activity{
ProgressBar progressBar;
private int progressBarStatus = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
progressBar = (ProgressBar)findViewById(R.id.progressBar1);
Thread timer = new Thread(){
public void run(){
try{
sleep(5000);
while(progressBarStatus < 5000){
StartPoint.this.runOnUiThread(new Runnable(){
public void run()
{
progressBar.setProgress(progressBarStatus);
progressBarStatus += 1000;
}
});
}
}catch(InterruptedException e){
e.printStackTrace();
}finally{
Intent openMainList = new Intent(StartPoint.this, com.example.kam.MainActivity.class);
startActivity(openMainList);
}
}
};
timer.start();
}
}
什麼收音機喲你在說什麼?另外,爲什麼會引入令人困惑的UI元素? Android有一個非常好的「HOME」按鈕。通過給他們一個額外的主頁按鈕,你沒有任何好處。你只是在混淆你的用戶界面。 – 2013-04-30 23:40:54
@ Dr.Dredel我怎麼能把我的UI弄得一團糟 – 2013-04-30 23:50:24