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> 

    效果图:

         

    当点击录音时

     

     

  • 相关阅读:
    开发金额处理BigDecimal
    Strtuts2.3.15 bug ,可以远程执行命令
    java 获取properies资源信息
    获取程序运行所在ip
    JVM虚拟机内存和String 类型深入
    数据库表结构上下文
    properties配置文件实现DBManager
    查询功能的包装类
    通过反射生成类的utils
    jdbc反射操作
  • 原文地址:https://www.cnblogs.com/vus520/p/2593158.html
Copyright © 2011-2022 走看看