对音频文件的操作 录音和播放
录音,并且把录影文件放在了外存储设备sdcard中:
package com.quding.widget.musicplayer;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.content.res.AssetFileDescriptor;import android.content.res.AssetManager;import android.media.MediaPlayer;import android.os.Bundle;import android.os.IBinder;import android.util.Log;public class MusicPlayerService extends Service{private MediaPlayer player;private AssetFileDescriptor asserAssetFileDescriptor;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();AssetManager assetManager = this.getAssets(); //获得一个assert资源管理器的实例try { asserAssetFileDescriptor = assetManager.openFd("run_with_myself.mp3"); //获取一个raw资源} catch (IOException e) {e.printStackTrace();}player = new MediaPlayer(); //播放assert中的文件//player = MediaPlayer.create(getApplicationContext(), R.raw.run_with_myself); //这个是播放raw中的音频文加?//player = new MediaPlayer(); //播放sdcard中的文件//try {//player.setDataSource("/sdcard/sound1.arm"); //指明路径//player.prepare(); //装载音频文件//} catch (Exception e) {//e.printStackTrace();//}Log.i("tag", "service已经存在");}@Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);if(intent != null){Log.i("tag", intent.getData().toString());int operator = Integer.parseInt(intent.getData().toString()); //operate带着具体的操作信息switch (operator) {case 1 : //打开playMusic();break;case 2 ://暂停pauseMusic();break;case 3 ://停止stopMusic();break;}}}private void playMusic() {if(player != null && !player.isPlaying()){try {//设置资源player.setDataSource(asserAssetFileDescriptor.getFileDescriptor(),asserAssetFileDescriptor.getStartOffset(),asserAssetFileDescriptor.getLength());player.prepare(); //加载资源player.start();Log.i("tag", "播放音乐");} catch (Exception e) {e.printStackTrace();} }}private void pauseMusic(){if(player != null && player.isPlaying()){player.pause();Log.i("tag", "暂停");}}private void stopMusic(){player.stop();Log.i("tag", "停止");try {player.reset(); //使mediaPlayer会回到初始化之前的地方,需要重新加载文加,player.setDataSource(asserAssetFileDescriptor.getFileDescriptor(),asserAssetFileDescriptor.getStartOffset(),asserAssetFileDescriptor.getLength());player.prepare(); //加载资源Log.i("tag", "重新加载文件");} catch (IOException ex) {ex.printStackTrace();}}}
?