zoukankan      html  css  js  c++  java
  • Android中的录音效果

    其实我们要是想实现录音效果的话,大脑里第一个想的就是先把布局写好,完事以后我们在设置录音按钮点击事件。完事创建录音对象,我们还应该想到的就是设置输出格式、设置编码格式、设置输出文件。这些主要的设置完,我们的录音代码就快完成,剩下的就是一些不怎么主要的了,记住还要设置权限。下面我们就来看看代码是怎么写的吧:

    <?xml version="1.0" encoding="utf-8"?> 
    
    <LINEARLAYOUT xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    androidrientation="vertical" 
    android:gravity="center"> 
    
    <BUTTON 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="录音" 
    android:textsize="30sp" 
    android:id="@+id/Button01">
     
    </BUTTON> 
    
    <BUTTON 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="停止" android:textsize="30sp" 
    android:id="@+id/Button02" 
    android:layout_margintop="20dp">
     
    </BUTTON> 
    
    </LINEARLAYOUT> 

    下面是main代码:

    package eoe.android; 
    
    import java.io.File; 
    import java.io.IOException; 
    import java.util.Calendar; 
    import java.util.Locale; 
    import android.app.Activity; 
    import android.media.MediaRecorder; 
    import android.os.Bundle; 
    import android.text.format.DateFormat; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.Toast; 
    
    public class MainActivity extends Activity { 
    
    private Button recordButton; 
    private Button stopButton; 
    private MediaRecorder mr; 
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    
    recordButton = (Button) this.findViewById(R.id.Button01); 
    stopButton = (Button) this.findViewById(R.id.Button02); 
    
    // 录音按钮点击事件 
    recordButton.setOnClickListener(new View.OnClickListener() { 
    
    @Override 
    public void onClick(View v) { 
    
    File file = new File("/sdcard/"  + "YY" + new DateFormat().format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".amr"); 
    
    Toast.makeText(getApplicationContext(), "正在录音,录音文件在"+file.getAbsolutePath(), Toast.LENGTH_LONG) .show(); 
    
    // 创建录音对象 
    mr = new MediaRecorder(); 
    
    // 从麦克风源进行录音 
    mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
    
    // 设置输出格式 
    mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
    
    // 设置编码格式 
    mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
    
    // 设置输出文件 
    mr.setOutputFile(file.getAbsolutePath()); 
    
    try { 
    
    // 创建文件 
    file.createNewFile(); 
    
    // 准备录制 
    mr.prepare(); 
    
    } catch (IllegalStateException e) { 
    e.printStackTrace(); 
    
    } catch (IOException e) { 
    e.printStackTrace(); 
    
    } 
    
    // 开始录制 
    mr.start(); 
    
    recordButton.setText("录音中……"); 
    
    } 
    }); 
    
    // 停止按钮点击事件 
    stopButton.setOnClickListener(new View.OnClickListener() { 
    
    @Override 
    public void onClick(View v) { 
    
    if (mr != null) { 
    
    mr.stop(); 
    mr.release(); 
    mr = null; 
    
    recordButton.setText("录音"); 
    
    Toast.makeText(getApplicationContext(), "录音完毕", Toast.LENGTH_LONG).show(); 
    
    } 
    } 
    }); 
    } 
    } 

    下面就是很重要的了,就是在AndroidManifest.xml里设置权限,不写它你就无法实现效果。

    <?xml version="1.0" encoding="utf-8"?> 
    
    <MANIFEST xmlns:android="http://schemas.android.com/apk/res/android" 
    android:versioncode="1"
     
    android:versionname="1.0"> 
    
    <APPLICATION 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:debuggable="true"> 
    
    <ACTIVITY 
    android:label="@string/app_name" 
    android:name=".MainActivity" 
    android:screenorientation="portrait" android:configchanges="orientation|keyboardHidden|keyboard"> 
    
    <INTENT -filter> 
    
    <ACTION android:name="android.intent.action.MAIN" /> 
    <CATEGORY android:name="android.intent.category.LAUNCHER" /> 
    
    </INTENT> 
    
    </ACTIVITY> 
    
    </APPLICATION> 
    
    <USES android:minsdkversion="4" -sdk /> 
    <USES android:name="android.permission.RECORD_AUDIO" -permission></USES> 
    <USES android:name="android.permission.WRITE_EXTERNAL_STORAGE" -permission></USES> 
    
    </MANIFEST> 

    效果图:

         

    当点击录音时

     

     

  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/vus520/p/2593158.html
Copyright © 2011-2022 走看看