2013-04-30 46 views
-6

我有一个应用程序,在主页上我有按钮用于浏览应用程序。关闭并退出我的应用程序在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(); 
} 

} 
+4

什么收音机哟你在说什么?另外,为什么会引入令人困惑的UI元素? Android有一个非常好的“HOME”按钮。通过给他们一个额外的主页按钮,你没有任何好处。你只是在混淆你的用户界面。 – 2013-04-30 23:40:54

+0

@ Dr.Dredel我怎么能把我的UI弄得一团糟 – 2013-04-30 23:50:24

回答

1

尝试设置监听器上的退出按钮(

在我的例子中是:btn_exit

) 您的应用程序将退出所有:)

public class testprj extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button btn_exit = (Button) findViewById(R.id.btn1); 
    btn_exit .setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
      System.exit(0); 
     } 
    }); 
    } 
} 

**

也确保了第一个活动结束后(的onStop()==>使 完成( ))

**

+0

我会试试它,但是它的同样的东西,它还在工作 – 2013-04-30 23:49:22

+0

我会更新我的文章 – 2013-04-30 23:53:39

+0

谢谢,我没有看到**还要确保第一个活动是完成(onStop()==>使finish())**现在它的工作很好谢谢 – 2013-04-30 23:59:50