2011-02-11 30 views
5

Tengo que reproducir un archivo mp3 y cuando haga clic en el botón Atrás en el dispositivo, la canción se detendrá automáticamente. Así que probé a continuación el método dado. Pero no está funcionando.Anular botón Atrás en Android

public void onCreate(Bundle icicle) { 

    super.onCreate(icicle); 

    setContentView(R.layout.audioplaying); 
     play=(ImageView)findViewById(R.id.play); 
     stop=(ImageView)findViewById(R.id.stop); 

     songid=(TextView)findViewById(R.id.songid); 
     status=(TextView)findViewById(R.id.status); 

     String s=Songs.song; 

     status.setText("Please Wait....!"); 
     mp=new MediaPlayer(); 
     try{ 
     mp.setDataSource(s); 
     mp.prepare(); 
     } 
     catch(Exception ex){ 
      Log.e("Exception",ex.getMessage()); 
     } 
     Log.e("Status","Song is going to Start"); 
     mp.start(); 
     start=true; 
     Log.e("Status","Song was Started"); 
     status.setText("Playing...!"); 
     songid.setText(s); 
     play.setOnClickListener(this); 

     stop.setOnClickListener(this); 

    } 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 
      && keyCode == KeyEvent.KEYCODE_BACK 
      && event.getRepeatCount() == 0) { 
     Log.d("CDA", "onKeyDown Called"); 

     onBackPressed(); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

public void onBackPressed() { 
    Log.d("CDA", "onBackPressed Called"); 
    audioStreamer.stop(); 
    audioStreamer.getMediaPlayer().stop(); 
    if(start) 
    { 
    mp.stop(); 
    start=false; 
    } 
    else{ 
     Intent setIntent = new Intent(AudioPlay1.this,Songs.class); 
     startActivity(setIntent); 
     finish(); 
    } 
    Intent setIntent = new Intent(AudioPlay1.this,Songs.class); 
    startActivity(setIntent); 
    finish(); 
    return; 

} 
    @Override 
    public void onClick(View v) { 
     if(v.equals(play)){ 
     try{ 
     mp.prepare(); 
     } 
     catch(Exception ex){Log.e("Exception in onclick",ex.toString());} 
     mp.start(); 
     start=true; 
     Log.e("Status","Song was Started again"); 
     status.setText("Playing...!"); 

     } 

     if(v.equals(stop)){ 

     mp.stop(); 
     start=false; 
     Log.e("Status","Song was stopped"); 
     status.setText("Song was Stopped"); 
     } 

    } 

la canción no se detiene y la página anterior no se puede mostrar. Por favor dime la solución.

Atentamente.

Gracias de antemano.

+0

¿Estás tratando de crear un reproductor musical o algo? –

+0

estoy intentando en el reproductor de medios MediaPlayer mp – Ramakrishna

Respuesta

14

No sé si este es su problema, pero cuando llama al onBackPressed(); en su onkeydown, no regresa, por lo que también se llama al parent.onkeydown, y la parte posterior 'normal' acaba de 'ejecutarse'.

Inserta una declaración de retorno allí para que no hagas la función normal de la clase padre.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 
      && keyCode == KeyEvent.KEYCODE_BACK 
      && event.getRepeatCount() == 0) { 
     Log.d("CDA", "onKeyDown Called"); 

     onBackPressed(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

gracias por dar la reproducción. Y también quiero detener la música. Cómo puedo hacer eso – Ramakrishna

9

para Handleing Todo el uso clave

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { //Back key pressed 
     //Things to Do 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
Cuestiones relacionadas