編輯:Android開發實例
import java.io.IOException;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import com.google.Main;
import com.google.R;
public class IndexActivity extends Main {
/** 日志TAG */
private static final String TAG = ">>>>>>>> IndexActivity.java <<<<<<<";
/** 控制按鈕 */
private ImageButton mBt_play, mBt_pause ,mBt_stop;
/** 提示消息 */
private TextView mTextView;
/** 媒體控制類 */
private MediaPlayer mMediaPlayer;
/** 是否是暫停flag */
private boolean mIsPaused = false;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.media);
setUI();
setAction();
}
/** 獲取控件 */
private void setUI(){
mBt_pause = (ImageButton) findViewById(R.id.myButton3);
mBt_play = (ImageButton) findViewById(R.id.myButton1);
mBt_stop = (ImageButton) findViewById(R.id.myButton2);
mTextView = (TextView) findViewById(R.id.myTextView1);
setButtonEnabled(true, false, false);
}
/** 添加事件處理 */
private void setAction(){
mMediaPlayer = new MediaPlayer();
//讀取raw文件夾下的mp3文件
mMediaPlayer = MediaPlayer.create(this, R.raw.u01_2);
/* * 讀取其他文件夾下的文件使用方式
* mMediaPlayer.setDataSource(filePath)
* 來播放遠程或uri文件
*/
setListener();
}
/** * 監聽按鈕事件
*/
private void setListener(){
mBt_pause.setOnClickListener(listener);
mBt_play.setOnClickListener(listener);
mBt_stop.setOnClickListener(listener);
setMediaListener(mMediaPlayer);
}
/* * 設置media的播放完成時,釋放資源
*/
private void setMediaListener(MediaPlayer mediaPlayer){
//設置media播放完成時,釋放資源
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
/** 解除資源與mediaplayer之間的關系,讓資源可以被其他程序使用 */
try {
mMediaPlayer.release();
mTextView.setText(R.string.str_OnCompletionListener);
setButtonEnabled(true, false, false);
} catch (Exception e) {
Log.i(TAG, "str_OnCompletionListener is errror!!!");
}
}
});
/** 重寫錯誤事件 */
mediaPlayer.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
try {
/** 發生錯誤是也解除資源與mediaplayer之間的關系,讓資源可以被其他程序使用 */
mMediaPlayer.release();
mTextView.setText(R.string.str_OnErrorListener);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
try {
/** 在主程序暫停時,解除mediaplayer與資源之間的賦值關系 */
mMediaPlayer.release();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.onPause();
}
/** 監聽按鈕事件 */
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId())
{
//播放按鈕
case R.id.myButton1:
try {
if(mMediaPlayer != null)
{
mMediaPlayer.stop();
}
else {
mMediaPlayer = new MediaPlayer();
mMediaPlayer = MediaPlayer.create(IndexActivity.this,R.raw.u01_2);
}
/* * 在mediaPlayer取得播放資源和stop()之後
* 要准備playback(回放,重放)的狀態前一定要mediaPlayer.prepare();
*/
mMediaPlayer.prepare();
mMediaPlayer.start();
mTextView.setText(R.string.str_start);//顯示播放信息
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// mIsPaused = false;
//設置可以使用的按鈕
setButtonEnabled(false, true, true);
break;
//停止按鈕
case R.id.myButton2:
try {
if(mMediaPlayer!= null)
{
mMediaPlayer.stop();
mTextView.setText(R.string.str_close);
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setButtonEnabled(true, false, false);
break;
//暫停按鈕
case R.id.myButton3:
try {
if(mMediaPlayer != null)
{
if(mIsPaused == false)//要暫停當前的音樂
{
Log.i(TAG, "mIsPaused false");
mMediaPlayer.pause();
mIsPaused = true;//設置播放flag為true
mTextView.setText(R.string.str_pause);
setButtonEnabled(true, false, true);
}
else if( mIsPaused == true)//回放
{
Log.i(TAG, "mIsPaused true");
mMediaPlayer.seekTo(80000);
mIsPaused = false;
mTextView.setText(R.string.str_start);
setButtonEnabled(false, true, true);
}
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
default:
break;
}
}
};
/**
* 設置按鈕是否可用
* @param enabled1 mBt_play
* @param enabled2 mBt_pause
* @param enabled3 mBt_stop
*/
private void setButtonEnabled(boolean enabled1,boolean enabled2,boolean enabled3){
mBt_play.setEnabled(enabled1);
mBt_pause.setEnabled(enabled2);
mBt_stop.setEnabled(enabled3);
}
}
最近事情很忙,一個新項目趕著出來,但是很多功能都要重新做,一直在編寫代碼、Debug。今天因為一個新程序要使用Fragment來做,雖然以前也使用過Fragmen
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
前面文章講解了Android的藍牙基本用法,本文講得深入些,探討下藍牙方面的隱藏API。用過Android系統設置(Setting)的人都知道藍牙搜索之後可以建立