編輯:關於Android編程
本文將的是一個在線音樂播放器,文中對相應操作做了比較詳細的講解,已達到實現效果,並了解播放器原理的目的。
源代碼:
布局文件:
activity_audio_httpplayer:
package com.multimediademo7audiohttpplayer; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.MediaPlayer.OnPreparedListener; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; /** * 在線音樂播放Demo。 * */ public class AudioHTTPPLayer extends Activity implements OnCompletionListener, OnErrorListener, OnBufferingUpdateListener, OnPreparedListener, OnClickListener { private MediaPlayer mediaPlayer; private Button startButton, stopButton; private TextView statusTextView, bufferValueTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_audio_httpplayer); init(); } /** * 實例化組件。 */ private void init() { startButton = (Button) findViewById(R.id.startButton); stopButton = (Button) findViewById(R.id.stopButton); statusTextView = (TextView) findViewById(R.id.statusDisplayTextView); bufferValueTextView = (TextView) findViewById(R.id.bufferValueTextView); startButton.setOnClickListener(this); stopButton.setOnClickListener(this); statusTextView.setText("onCreate"); mediaPlayer = new MediaPlayer(); mediaPlayer.setOnCompletionListener(this); mediaPlayer.setOnErrorListener(this); mediaPlayer.setOnBufferingUpdateListener(this); mediaPlayer.setOnPreparedListener(this); statusTextView.setText("MediaPlayer created"); try { /** * 調用setDataSource();方法,並傳入想要播放的音頻文件的HTTP位置。 */ mediaPlayer .setDataSource("http://zhangmenshiting.baidu.com/data2/music/36865035/17765263198000128.mp3?xcode=81bb2569613f49564c53ca228d87e526d7ed2c9c576c829e"); } catch (Exception e) { e.printStackTrace(); } statusTextView.setText("setDataSource done"); statusTextView.setText("calling prepareAsync"); /** * 調用prepareAsync方法,它將在後台開始緩沖音頻文件並返回。 */ mediaPlayer.prepareAsync(); } /** * 當MediaPlayer正在緩沖時,將調用該Activity的onBufferingUpdate方法。 */ @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { bufferValueTextView.setText("" + percent + "%"); } /** * 當完成prepareAsync方法時,將調用onPrepared方法,表明音頻准備播放。 */ @Override public void onPrepared(MediaPlayer mp) { statusTextView.setText("onPrepared called"); startButton.setEnabled(true); } /** * 當MediaPlayer完成播放音頻文件時,將調用onCompletion方法。 * 此時設置“播放”按鈕可點擊,“暫停”按鈕不看點擊(表示可以再次播放)。 */ @Override public void onCompletion(MediaPlayer mp) { statusTextView.setText("onCompletion called"); startButton.setEnabled(true); stopButton.setEnabled(false); } /** * 當按手機上的返回鍵的時候,會自動調用系統的onKeyDown方法,而onKeyDown方法又會調用onDestroy()方法銷毀該Activity * , 此時如果onDestroy()方法不重寫,那麼正在播放的音樂是不會停止的(大家可以試一下),所以這時候要重寫onDestroy()方法, * 在該方法中 加入mediaPlayer.stop()方法,表示按返回鍵的時候,會調用mediaPlayer對象的stop方法,從而停止音樂的播放。 */ @Override protected void onDestroy() { super.onDestroy(); mediaPlayer.stop(); Log.d("zhongyao", "onDestroy()"); } /** * 如果MediaPlayer出現錯誤,將調用onError方法。 */ @Override public boolean onError(MediaPlayer mp, int what, int extra) { statusTextView.setText("onError called"); switch (what) { case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK: statusTextView .setText("MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK" + extra); break; case MediaPlayer.MEDIA_ERROR_SERVER_DIED: statusTextView.setText("MEDIA_ERROR_SERVER_DIED" + extra); break; case MediaPlayer.MEDIA_ERROR_UNKNOWN: statusTextView.setText("MEDIA_ERROR_UNKNOWN"); break; default: break; } return false; } /** * 當按下播放按鈕時,調用MediaPlayer的start方法; 當按下暫停按鈕時,將調用MediaPlayer的Pause方法。 */ @Override public void onClick(View v) { if (v == startButton) { mediaPlayer.start(); statusTextView.setText("start called"); startButton.setEnabled(false); stopButton.setEnabled(true); } else if (v == stopButton) { mediaPlayer.pause(); statusTextView.setText("pause called"); startButton.setEnabled(true); stopButton.setEnabled(false); } } }
點擊下載源碼
有時候我們需要在游戲或應用中用一些符合我們樣式的提示框(AlertDialog),以下是我在開發一個小游戲中總結出來的.希望對大家有用.先上效果圖:下面是用到的背景圖或按
ConnectivityManagerConnectivityManager作為安卓網絡連接管理類,主要功能如下:1. 通知應用網絡狀態的改變,發送廣播 ACTION:C
首先給大家展示下效果圖,感覺還不錯,請繼續往下閱讀:下拉刷新: 上劃加載 &nbs
配置AndroidMainfest.xml以友盟渠道為例,渠道信息一般都是寫在 AndroidManifest.xml文件中,代碼大約如下:如果不使用多渠道打包方法,那就