編輯:關於Android編程
MediaPlayer通過如下兩個靜態方法來加載指定的音頻:
1、static MediaPlayer create(Context context,Uri uri):從指定的Uri來裝載音頻文件,並返回新創建的MediaPlayer對象;
2、static MediaPlayer create(Context context,int resid):從resid資源ID對應的資源文件中裝載音頻文件,並返回新創建的MediaPlayer對象
一般如果要加載多個文件來循環播放音頻文件可以通過MediaPlayer的setDataSource()方法來裝載指定的音頻文件
1、setDataSource(String path):指定裝載path路徑代表的文件。
2、setDataSource(FileDescriptor fd,long offset,long length):指定裝載fd所代表的文件中從offset開始、長度為length的文件內容;
3、setDataSource(FileDescriptor fd):指定裝載fd所代表的文件
4、setDataSource(Context context ,Uri uri):指定裝載uri所代表的文件。
MediaPlayer通過如下幾個來進行播放控制:
1、prepare():准備音頻文件;真正的裝載音頻文件,相當於緩存
2、start():開始或恢復播放
3、stop():停止播放
4、pause():暫停播放
5、reset():重置為初始狀態
6、release():MediaPlayer對象不再使用才去釋放mp所占有的資源。不是一首歌完了之後要用的,而是你不再使用mp之後才調用,比如退出
tart和stop之間循環的流程應該是:reset()-->setDataSource(path)-->prepare()-->start()-->stop()--reset()-->重來上述流程一遍
實例

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">
package com.android.xiong.mediaplayers;
import java.io.IOException;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class MainActivity extends Activity {
private Button start, stop, pre, reset;
private SeekBar seekbar1;
private MediaPlayer mediaPlayer;
boolean isperson;
int currentPlay = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
pre = (Button) findViewById(R.id.pre);
reset = (Button) findViewById(R.id.reset);
seekbar1 = (SeekBar) findViewById(R.id.seekbar1);
mediaPlayer = MediaPlayer.create(this, R.raw.hello);
SeekBarChage seekbar = new SeekBarChage();
seekbar1.setOnSeekBarChangeListener(seekbar);
// 設置進度條
seekbar1.setMax(mediaPlayer.getDuration());
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//判斷是否正在播放
if (mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(0);
} else {
mediaPlayer = MediaPlayer.create(MainActivity.this,
R.raw.hello);
mediaPlayer.start();
}
seekbar1.setProgress(0);
//更新進度
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if (isperson == true)
return;
seekbar1.setProgress(mediaPlayer.getCurrentPosition());
}
}, 0, 10);
}
});
reset.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(0);
} else {
mediaPlayer = MediaPlayer.create(MainActivity.this,
R.raw.hello);
mediaPlayer.start();
}
seekbar1.setProgress(0);
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mediaPlayer.stop();
}
});
pre.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mediaPlayer.pause();
}
});
}
class SeekBarChage implements OnSeekBarChangeListener {
// 當拖動條發生變化時調用該方法
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
// 當用戶滑動時調用調用方法
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isperson = true;
}
// 鼠標松開時調用該方法
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
currentPlay = seekBar.getProgress();
mediaPlayer.seekTo(currentPlay);
isperson = false;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
android顯示機制
前言本文是通過閱讀各種文章及代碼,總結出來的,其中難免有些地方理解得不對,歡迎大家批評指正。顯示系統基礎知識定義在一個典型的顯示系統中,一般包括CPU、GPU、displ
android利用xml實現分割線
因為沒有美工, 所以只能自己動手了。在layout文件夾裡的xml 寫方法1:在layout裡面的布局xml 文件裡加上面的代碼 <View android:lay
android-獲取網絡時間、獲取特定時區時間、時間同步的方法
最近整理出android-獲取網絡時間、獲取特定時區時間、時間同步的方法。具體如下:方法一:SimpleDateFormat dff = new SimpleDateFo
小米手環來電不震動解決辦法
大家購買小米手環之後使用最多的大概就是來電提醒和檢測運動量這兩個功能了,但是很多朋友說小米手環經常抽風,來電不震動。那麼小米手環來電不震動這種情況是怎麼回事