Anular el botón de retroceso en android

Tengo que jugar un archivo mp3 y cuando chasque encendido detrás el botón en el dispositivo entonces automáticamente la canción debe parar. Así que he intentado por debajo del método dado. Pero no está funcionando.

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 puede mostrarse. Por favor, dime la solución.

Atentamente.

Gracias de antemano.

No sé si este es su problema, pero cuando usted llama onBackPressed(); En su onkeydown, usted no está regresando, por lo que el parent.onkeydown también se llama, y ​​la parte posterior 'normal' es simplemente ser 'ejecutado'.

Insertar una declaración de devolución allí por lo que no va a hacer 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); } 

Para manejar todo 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); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.