2011-02-11 7 views
5

में बैक बटन ओवरराइड करें मुझे एक एमपी 3 फ़ाइल खेलनी है और डिवाइस पर बैक बटन पर क्लिक करने के बाद स्वचालित रूप से गीत बंद होना चाहिए। तो मैंने दिए गए तरीके से नीचे की कोशिश की। लेकिन यह काम नहीं कर रहा है।एंड्रॉइड

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"); 
     } 

    } 

गीत बंद नहीं हो रहा है और पिछला पृष्ठ प्रदर्शित नहीं हो सकता है। कृपया मुझे समाधान बताएं।

सर्वश्रेष्ठ सादर।

अग्रिम धन्यवाद।

+0

Handleing के लिए आप एक म्यूजिक प्लेयर या कुछ बनाने का प्रयास कर रहे हैं? –

+0

मैं रीडप्ले देने के लिए मीडिया प्लेयर मीडियाप्लेयर एमपी – Ramakrishna

उत्तर

14

मुझे नहीं पता कि यह आपकी समस्या है, लेकिन जब आप अपने ऑनकीडाउन में onBackPressed(); पर कॉल करते हैं, तो आप वापस नहीं आ रहे हैं, इसलिए parent.onkeydown भी कहा जाता है, और 'सामान्य' पीठ को 'निष्पादित' किया जा रहा है।

वहां एक रिटर्न स्टेटमेंट डालें ताकि आप मूल वर्ग से सामान्य कार्य नहीं करेंगे।

@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

धन्यवाद में कोशिश कर रहा हूं। और मैं संगीत को रोकना चाहता हूं। मैं उसे कैसे कर सकता हूँ – Ramakrishna

9

सभी कुंजी उपयोग

@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); 
}