package com.javen.devicemange.CrazyOne.media;import android.Manifest;import android.media.MediaRecorder;import android.os.Bundle;import android.os.Environment;import android.support.annotation.Nullable;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.javen.devicemange.R;import java.io.File;import java.io.IOException;/** * Created by Administrator on 2017/2/27 0027. * 使用MediaRecorder錄制音頻(聲音) */public class RecordSound extends AppCompatActivity implements View.OnClickListener { PRivate Button record; private Button stop; private File file; private MediaRecorder mediaRecorder; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.recordsound); initView(); requestPermission(); } /** * 申請權限 */ private void requestPermission() { String[] needPermission = { Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, }; ActivityCompat.requestPermissions(this, needPermission, 1); } private void initView() { record = (Button) findViewById(R.id.record); stop = (Button) findViewById(R.id.stop); record.setOnClickListener(this); stop.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.record: if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Toast.makeText(this, "ad卡不存在", Toast.LENGTH_SHORT).show(); return; } //創建文件 file = new File(Environment.getExternalStorageDirectory().toString() + "/sound.amr"); mediaRecorder = new MediaRecorder(); //設置錄音的聲音來源,MIC:麥克風的音頻源 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //設置錄音的聲音的格式,THREE_GPP:推薦錄音的時候用3GPP(必須在設置聲音編碼格式之前設置) mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //設置錄音的編碼格式 mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //設置錄制的音頻文件的保存位置 mediaRecorder.setOutputFile(file.getAbsolutePath()); try { mediaRecorder.prepare(); //開始錄音 mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } break; case R.id.stop: if (null != file && file.exists()) { //停止錄音 mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; } break; } }}布局xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/record" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="record"/> <Button android:id="@+id/stop" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="stop"/></LinearLayout>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"/>。。。
新聞熱點
疑難解答