播放raw下的音乐文件

来源:互联网 发布:linux 递归创建目录 编辑:程序博客网 时间:2024/05/19 03:26

     在开发的过程中,我们需要一些不需要用户改变的音乐或图像文件,这些文件存在安卓res/raw文件夹中,下面就介绍如何播放res/raw文件夹中的音乐。

 

   1、在res目录下新建一个raw文件夹

   2、界面上:xml文件中有一个按钮控件,当我们点击按钮时,res/raw文件夹下的音乐会被播放

   3、获取方式:res/raw下的资源我们通过R.raw.filename来获取,下面是详细代码:

  

package com.example.musicplay;import java.io.File;import java.io.InputStream;import org.apache.http.util.EncodingUtils;import android.media.MediaPlayer;import android.media.MediaPlayer.OnPreparedListener;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {String str;//判断正在播放的音乐private Button playBut;private EditText musicName;private TextView rawText;private MediaPlayer mediaPlayer,raw;private String path;private boolean pause;//context 应用有关的信息,例如:包名private int mediaPosition = 0;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);playBut = (Button)findViewById(R.id.play);mediaPlayer = new MediaPlayer();raw = MediaPlayer.create(getApplicationContext(),R.raw.tellmetellme);//播放raw资源音乐musicName = (EditText)this.findViewById(R.id.musicName);rawText = (TextView)findViewById(R.id.rawText);str = musicName.getText().toString();/** * 监听电话状态,针对电话到来,暂停音乐 *///得到电话服务TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);//设置监听telephonyManager.listen(new MyTelListener(),PhoneStateListener.LISTEN_CALL_STATE);}//电话监听private final class MyTelListener extends PhoneStateListener{public void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_RINGING://来电if(mediaPlayer.isPlaying()){mediaPosition = mediaPlayer.getCurrentPosition();mediaPlayer.pause();}break;case TelephonyManager.CALL_STATE_IDLE://电话接听完毕if(mediaPosition>0 && path!=null){paly(mediaPosition);mediaPosition = 0;}break;default:break;}}}public void mediaFun(View v){switch (v.getId()) {case R.id.play:init();break;case R.id.next:musicName.setText("zawysj.mp3");init();paly(mediaPosition);if(path!=null)playBut.setBackgroundResource(R.drawable.play);break;case R.id.top:musicName.setText("qsw.mp3");init();paly(mediaPosition);if(path!=null)playBut.setBackgroundResource(R.drawable.play);break;case R.id.repeat:if(mediaPlayer.isPlaying()){//判断是否正在播放mediaPlayer.seekTo(0);//从头开始播放}else{if(path!=null){playBut.setBackgroundResource(R.drawable.play);paly(mediaPosition);}}break;case R.id.stop:if(mediaPlayer.isPlaying()){mediaPlayer.stop();//playBut.setBackgroundResource(R.drawable.bofang);playBut.setBackgroundResource(R.drawable.pause);pause = false;}else{if(pause){mediaPlayer.stop();pause = false;}}break;case R.id.rawMusic:if(raw.isPlaying()){raw.stop();}else{raw.start();}break;case R.id.rawTxt:InputStream in = getResources().openRawResource(R.raw.text);byte[] buffer = new byte[1024];StringBuffer stringBuffer = new StringBuffer();try {while(in.read(buffer)!=-1){String encodeText = EncodingUtils.getString(buffer,"GBK");//转码stringBuffer.append(encodeText);}rawText.append(stringBuffer.toString());} catch (Exception e) {System.out.println(e.toString());}break;default:break;}}private void init(){String fileName = musicName.getText().toString();//File filePath = new File(Environment.getExternalStorageDirectory(),fileName);File filePath = new File("/mnt/sdcard/",fileName);if(filePath.exists()){path = filePath.getAbsolutePath();Toast.makeText(getApplicationContext(), path, Toast.LENGTH_LONG).show();if(mediaPlayer.isPlaying()){mediaPlayer.pause();playBut.setBackgroundResource(R.drawable.play);}else{paly(mediaPosition); playBut.setBackgroundResource(R.drawable.pause);}}else{path = null;Toast.makeText(getApplicationContext(),"文件未找到",Toast.LENGTH_SHORT).show();}}private void paly(int mediaPosition){mediaPlayer.reset();//把各项参数初始化try {mediaPlayer.setDataSource(path);mediaPlayer.prepare();//开始缓冲mediaPlayer.setOnPreparedListener(new PreparedListenner(mediaPosition));} catch (Exception e) {e.printStackTrace();} }private final class PreparedListenner implements OnPreparedListener{private int position;public PreparedListenner(int position){this.position = position;}public void onPrepared(MediaPlayer mp) {mp.start();//开始播放mediaPlayer.seekTo(position);}}}

 

 

 

   源码下载地址

http://download.csdn.net/detail/u010885095/8964017

 

1 0
原创粉丝点击