2011-12-02 102 views
0

我已經構建了一個使用mp3文件的應用程序。在第一個版本中,這些文件包含在apk文件中。我現在正在製作一個在URL資源中具有mp3文件的版本。 我調整了代碼,幾乎一切正常。 問題是停止,暫停和播放的按鈕現在不工作。 這是開始流的代碼(正常工作):如何停止流媒體MP3文件

private void playAudio(String media) { 
    MediaPlayer mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

    try { 
     mediaPlayer.setDataSource(media); 
     mediaPlayer.prepare(); // might take long! (for buffering, etc) 
     mediaPlayer.start(); 

    } catch (Exception e) { 
     Log.e(TAG, "error: " + e.getMessage(), e); 
    } 
    mediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
     public void onCompletion(MediaPlayer arg0) { 
      finish(); 
     } 
    }); 

} 

這是我使用的停止等功能曾與本地文件(原始資源性)優良但現在不工作:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     Intent intent = new Intent(SpelaSaga.this, VisaIngressSaga.class); 
     Bundle bundle = new Bundle(); 
     bundle.putString("Titel", titel); 
     bundle.putInt("Position", position); 
     intent.putExtras(bundle); 
     SpelaSaga.this.startActivity(intent); 
     finish(); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

private OnClickListener button_1Listener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mediaPlayer.stop(); 
     Intent intent = new Intent(SpelaSaga.this, VisaIngressSaga.class); 
     Bundle bundle = new Bundle(); 
     bundle.putString("Titel", titel); 
     bundle.putInt("Position", position); 
     intent.putExtras(bundle); 
     SpelaSaga.this.startActivity(intent); 
     finish(); 

    } 
}; 

private OnClickListener button_2Listener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mediaPlayer.pause(); 

    } 
}; 

我環顧四周,只找到需要更多編碼的流式教程的舊版本。希望有人對如何控制流媒體有個好主意。

+0

不它執行這些命令時會拋出任何異常或任何logcat輸出? –

回答

0

我創造了非常類似的應用程序,我的代碼看起來是這樣的:

public void startSound(final String URL) { 
    bt.setText("STOP"); 
    new Thread() { 
     public void run() { 
      try { 
       Uri uri = Uri.parse(URL); 

       mp = MediaPlayer.create(PlaySound.this, uri); 
       mp.start(); 
       mp.setOnCompletionListener(new OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer arg0) { 
         bt.setEnabled(true); 
         bt.setText("SŁUCHAJ"); 
        } 
       }); 
      } catch (Exception e) { 

      } 
      myProgressDialog.dismiss(); 
     } 
    }.start(); 
} 

當我按下後退按鈕:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     try { 
      mp.stop(); 
     } catch (Exception e) { 

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

我希望,這個答案幫助你;)

+0

非常感謝你!現在它工作正常! – Christer