录音,并且把录影文件放在了外存储设备sdcard中:
package com.quidng.practice;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
public class RecordSound extends Activity implements OnClickListener{
private Button btnRecord,btnStop;
private MediaRecorder recorder;
private File soundFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.record_sound);
btnRecord = (Button) findViewById(R.id.record_sound_record);
btnRecord.setOnClickListener(this);
btnStop = (Button) findViewById(R.id.record_sound_stop);
btnStop.setOnClickListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
if(soundFile != null && soundFile.exists() && recorder != null){
recorder.stop(); //**停止录音**
recorder.release(); //**释放资源**
recorder = null;
}
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.record_sound_record){
try {
//直接存储到了sdcard中
soundFile = new File(Environment.getExternalStorageDirectory().getCanonicalFile() + "/sound1.amr");
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //录制的声音的来源
// recorder.setVideoSource(video_source); //录制视频
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //录制的声音的输出格式(必须在设置声音的编码格式之前设置)
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置声音的编码格式
recorder.setOutputFile(soundFile.getAbsolutePath()); //设置声音的保存位置
recorder.prepare(); //**准备录音**
recorder.start(); //**开始录音**
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else if(v.getId() == R.id.record_sound_stop){
if(soundFile != null && soundFile.exists()){
recorder.stop(); //**停止录音**
recorder.release(); //**释放资源**
recorder = null;
}
}
}
}
播放音乐:
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;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public 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已经存在");
}
@Override
public 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();
}
}
}