创建一个新工程LearnMediaRecord |
Copy 几个mp3文件到 |
|
Activity_main.xml |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:orientation="vertical" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="录音状态" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tvRecord" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="录音" android:onClick="doRecord" android:id="@+id/btnRecord" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止录音" android:onClick="doStopRecord" android:id="@+id/btnStopRecord" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="录音回放" android:onClick="doPlayback" android:id="@+id/btnPlayback" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止回放" android:onClick="doStopPlayback" android:id="@+id/btnStopPlayback" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="后街男孩" android:id="@+id/button1" android:onClick="songBackStreetBoy" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="冲动的惩罚" android:onClick="songChongDong" android:id="@+id/button2" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="其实你不懂我的心" android:onClick="songQiShiBudong" android:id="@+id/button3" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="一路顺风" android:id="@+id/button4" android:onClick="songYiLuShunFeng" android:layout_gravity="center_horizontal" /> </LinearLayout>
|
MainActivity.java |
package com.czg.com.learnmediarecorder; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import java.io.File; import java.io.IOException; public class MainActivity extends AppCompatActivity { TextView tvRecord; MediaPlayer player; MediaRecorder recorder; private String OUTPUT_FILE;// 外存file path @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OUTPUT_FILE= Environment.getExternalStorageDirectory().toString()+"/OutputRocord.3gpp"; tvRecord= (TextView) findViewById(R.id.tvRecord); } public void doRecord(View view) { ditchMediaRecorder(); File outFile=new File(OUTPUT_FILE); if (outFile.exists()) outFile.delete(); recorder= new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(OUTPUT_FILE); tvRecord.setText("录音中。。。"); try { recorder.prepare(); recorder.start(); } catch (IOException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(),"录音失败:"+OUTPUT_FILE,Toast.LENGTH_LONG).show(); } } private void ditchMediaRecorder() { if (recorder!=null) recorder.release(); } public void doStopRecord(View view) { if (recorder!=null) recorder.stop(); tvRecord.setText(""); } public void doPlayback(View view) { ditchMediaPlayer(); player=new MediaPlayer(); try { player.setDataSource(OUTPUT_FILE); player.prepare(); player.start(); } catch (IOException e) { e.printStackTrace(); } } private void ditchMediaPlayer() { if (player!=null){ player.release(); } } public void doStopPlayback(View view) { if (player!=null) player.stop(); } public void songBackStreetBoy(View view) { if (player!=null){ player.stop(); player.release(); } player=MediaPlayer.create(MainActivity.this,R.raw.backstreeboy); player.start(); //设置播放结束事件 player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { player.release(); //释放播放资源 } }); } public void songChongDong(View view) { if (player!=null){ player.stop(); player.release(); } player=MediaPlayer.create(MainActivity.this,R.raw.chongdongcf); player.start(); //设置播放结束事件 player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { player.release(); //释放播放资源 } }); } public void songQiShiBudong(View view) { if (player!=null){ player.stop(); player.release(); } player=MediaPlayer.create(MainActivity.this,R.raw.qishinibudong); player.start(); //设置播放结束事件 player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { player.release(); //释放播放资源 } }); } public void songYiLuShunFeng(View view) { if (player!=null){ player.stop(); player.release(); } player=MediaPlayer.create(MainActivity.this,R.raw.yilushunfeng); player.start(); //设置播放结束事件 player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { player.release(); //释放播放资源 } }); } }
|
AndroidManifest.xml中添加录音权限及sd开读写权限 |
<uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |