音频技术
1 //播放资源文件下和scdard下的音频 2 public class Main extends Activity implements OnClickListener, 3 OnCompletionListener { 4 private MediaPlayer mediaPlayer; 5 private Button btnPause; 6 7 @Override 8 public void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.main); 11 // 播放资源文件的音频 12 Button btnStart1 = (Button) findViewById(R.id.btnStart1); 13 // 播放sdcard里边的音频文件 14 Button btnStart2 = (Button) findViewById(R.id.btnStart2); 15 16 Button btnStop = (Button) findViewById(R.id.btnStop); 17 18 btnPause = (Button) findViewById(R.id.btnPause); 19 20 btnStart1.setOnClickListener(this); 21 btnStart2.setOnClickListener(this); 22 btnStop.setOnClickListener(this); 23 btnPause.setOnClickListener(this); 24 25 } 26 27 // 播放完成 28 public void onCompletion(MediaPlayer mp) { 29 mp.release(); 30 setTitle("资源已经释放"); 31 32 } 33 34 public void onClick(View view) { 35 try { 36 switch (view.getId()) { 37 case R.id.btnStart1: // 播放音频资源 38 mediaPlayer = MediaPlayer.create(this, R.raw.music); 39 mediaPlayer.setOnCompletionListener(this); 40 41 mediaPlayer.start(); 42 43 break; 44 case R.id.btnStart2:// 播放SD卡上的音频文件(/sdcard/music.mp3) 45 mediaPlayer = new MediaPlayer(); 46 mediaPlayer.setDataSource("/sdcard/music.mp3"); 47 48 mediaPlayer.prepare(); 49 mediaPlayer.start(); 50 break; 51 52 case R.id.btnStop: 53 if (mediaPlayer != null) { 54 if (mediaPlayer.isPlaying()) 55 mediaPlayer.stop(); 56 } 57 break; 58 59 case R.id.btnPause: 60 if (mediaPlayer != null) { 61 if ("播放".equals(btnPause.getText().toString())) { 62 mediaPlayer.start(); 63 btnPause.setText("暂停"); 64 65 } else if ("暂停".equals(btnPause.getText().toString())) { 66 mediaPlayer.pause(); 67 btnPause.setText("播放"); 68 } 69 } 70 break; 71 default: 72 break; 73 } 74 } catch (Exception e) { 75 // TODO: handle exception 76 } 77 } 78 }
1 //录制音频 2 public class Main extends Activity implements OnClickListener { 3 private File recordAudioFile; 4 private MediaRecorder mediaRecorder; 5 private MediaPlayer mediaPlayer; 6 7 @Override 8 public void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.main); 11 // 录制,停止,播放,删除 12 Button btnRecord = (Button) findViewById(R.id.btnRecord); 13 Button btnStop = (Button) findViewById(R.id.btnStop); 14 Button btnPlay = (Button) findViewById(R.id.btnPlay); 15 Button btnDelete = (Button) findViewById(R.id.btnDelete); 16 17 btnRecord.setOnClickListener(this); 18 btnStop.setOnClickListener(this); 19 btnPlay.setOnClickListener(this); 20 btnDelete.setOnClickListener(this); 21 22 } 23 24 public void onClick(View view) { 25 try { 26 switch (view.getId()) { 27 case R.id.btnRecord: // 录制音频 28 recordAudioFile = File.createTempFile("record", ".amr"); 29 mediaRecorder = new MediaRecorder(); 30 // 指定音频采集源--麦克风 31 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 32 // 指定录制格式 mpeg4 33 mediaRecorder 34 .setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 35 // 设置编码 36 mediaRecorder 37 .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 38 // 录制生成文件 39 mediaRecorder.setOutputFile(recordAudioFile.getAbsolutePath()); 40 mediaRecorder.prepare(); 41 mediaRecorder.start(); 42 Toast.makeText(this, "开始录音", Toast.LENGTH_LONG).show(); 43 44 break; 45 // 停止 46 case R.id.btnStop: 47 if (mediaRecorder != null) { 48 mediaRecorder.stop(); 49 mediaRecorder.release(); 50 mediaRecorder = null; 51 Toast.makeText(this, "停止录音", Toast.LENGTH_LONG).show(); 52 } 53 break; 54 // 播放 55 case R.id.btnPlay: 56 mediaPlayer = new MediaPlayer(); 57 mediaPlayer.setDataSource(recordAudioFile.getAbsolutePath()); 58 mediaPlayer.prepare(); 59 mediaPlayer.start(); 60 break; 61 // 删除 62 case R.id.btnDelete: 63 recordAudioFile.delete(); 64 break; 65 default: 66 break; 67 } 68 69 } catch (Exception e) { 70 // TODO: handle exception 71 } 72 } 73 }