安卓开发中播放3gp的代码实例
2020-03-02 13:08:00 人气 619 安卓技术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 on*(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.on*(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.*(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.*(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;
}
}
};
/**
* 设置按钮是否可用
* @Override enabled1 mBt_play
* @Override enabled2 mBt_pause
* @Override enabled3 mBt_stop
*/
private void setButtonEnabled(boolean enabled1,boolean enabled2,boolean enabled3){
mBt_play.setEnabled(enabled1);
mBt_pause.setEnabled(enabled2);
mBt_stop.setEnabled(enabled3);
}
}
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 on*(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.on*(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.*(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.*(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;
}
}
};
/**
* 设置按钮是否可用
* @Override enabled1 mBt_play
* @Override enabled2 mBt_pause
* @Override enabled3 mBt_stop
*/
private void setButtonEnabled(boolean enabled1,boolean enabled2,boolean enabled3){
mBt_play.setEnabled(enabled1);
mBt_pause.setEnabled(enabled2);
mBt_stop.setEnabled(enabled3);
}
}
暂无回复!
发表回复