Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 簡單的錄音機

Android 簡單的錄音機

編輯:Android開發實例

今天在做一個簡單的錄音機的時候,錄音機老是無法正常實例化,不能使用,後來查找問題,一個一個的試,最後確定了,原來是兩個設置寫反了,卻造成了,無法正常工作,真是郁悶啊。找了一個教程看了一下,教程中也沒有提,這兩個不能寫反,就當給自己一個警告吧,也希望看到的人,不知道這個問題的人能記住。下面把代碼放到下面:

 

  1. package com.RecordTest;  
  2. import java.io.File;  
  3. import java.io.FilenameFilter;  
  4. import java.io.IOException;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.  
  8. import android.app.ListActivity;  
  9. import android.media.MediaRecorder;  
  10. import android.os.Bundle;  
  11. import android.os.Environment;  
  12. import android.util.Log;  
  13. import android.view.View;  
  14. import android.widget.ArrayAdapter;  
  15. import android.widget.Button;  
  16. import android.widget.Toast;  
  17.  
  18. public class RecordTest extends ListActivity {  
  19.  
  20.     Button btn1, btn2;  
  21.  
  22.     int currertindex = 0;  
  23.  
  24.     private MediaRecorder mediarecorder; // 創建錄音機  
  25.  
  26.     File recordFile = null;  
  27.     File sdcardPath = null;// 錄音文件目錄  
  28.  
  29.     String Tempfile = "Record_temp_";  
  30.     List<String> fileList = new ArrayList<String>();  
  31.  
  32.     /** Called when the activity is first created. */ 
  33.     @Override 
  34.     public void onCreate(Bundle savedInstanceState) {  
  35.         super.onCreate(savedInstanceState);  
  36.         setContentView(R.layout.main);  
  37.         if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {  
  38.             sdcardPath = Environment.getExternalStorageDirectory();  
  39.             setTitle(sdcardPath.getName());  
  40.         } else {  
  41.             Toast.makeText(RecordTest.this, "沒有SD卡", 1000).show();  
  42.         }  
  43.         getRecordList();  
  44.  
  45.         btn1 = (Button) findViewById(R.id.btn1);  
  46.  
  47.         btn2 = (Button) findViewById(R.id.btn2);  
  48.  
  49.         btn1.setOnClickListener(new View.OnClickListener() {  
  50.  
  51.             public void onClick(View v) {  
  52.                 // TODO Auto-generated method stub  
  53.                 try {  
  54.  
  55.                     recordFile = File.createTempFile(Tempfile, ".amr",  
  56.                             sdcardPath);  
  57.                     Log.i("aaaaa", "1");  
  58.                     mediarecorder = new MediaRecorder();  
  59.                     Log.i("aaaaa", "2");  
  60.                     mediarecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 設置麥克風  
  61.                     Log.i("aaaaa", "3");  
  62.                     mediarecorder  
  63.                             .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);   //設置輸出文件格式  
  64.                     Log.i("aaaaa", "4");  
  65.                     mediarecorder  
  66.                             .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); // 設置編碼格式  
  67.  
  68.                       
  69.                     Log.i("aaaaa", "5");  
  70.                     mediarecorder.setOutputFile(recordFile.getAbsolutePath()); // 使用絕對路徑進行保存文件  
  71.                     Log.i("aaaaa", "6");  
  72.                      mediarecorder.prepare();  
  73.                     mediarecorder.start();  
  74.                     Toast.makeText(RecordTest.this, "開始", Toast.LENGTH_LONG).show();  
  75.                 } catch (IOException e) {  
  76.                     // TODO Auto-generated catch block  
  77.                     e.printStackTrace();  
  78.                 }  
  79.  
  80.             }  
  81.         });  
  82.  
  83.         btn2.setOnClickListener(new View.OnClickListener() {  
  84.  
  85.             public void onClick(View v) {  
  86.                 // TODO Auto-generated method stub  
  87.                 try {  
  88.                       
  89.                     if (recordFile != null) {  
  90.                         mediarecorder.stop();  
  91.                         fileList.add(recordFile.getName());  
  92.                           
  93.                          ArrayAdapter<String> list = new 
  94.                          ArrayAdapter<String>(RecordTest.this,  
  95.                          R.layout.itemlist, R.id.listitem, fileList);  
  96.  
  97.                          setListAdapter(list);  
  98.                          mediarecorder = null;  
  99.                          Toast.makeText(RecordTest.this, "停止", Toast.LENGTH_LONG).show();  
  100.                     }  
  101.                 } catch (Exception e) {  
  102.                     Log.i("eeeee", e.getMessage());  
  103.                 }  
  104.             }  
  105.         });  
  106.     }  
  107.  
  108.     void getRecordList() {  
  109.         // 首先檢測是否存在SDCard  
  110.         try {  
  111.             File home = sdcardPath;  
  112.             fileList.clear();  
  113.             if (home.list(new Fileter()).length > 0) {  
  114.                 for (File file : home.listFiles(new Fileter())) {  
  115.                     fileList.add(file.getName());  
  116.                 }  
  117.  
  118.                 ArrayAdapter<String> list = new ArrayAdapter<String>(this,  
  119.                         R.layout.itemlist, R.id.listitem, fileList);  
  120.  
  121.                 setListAdapter(list);  
  122.  
  123.             }  
  124.         } catch (Exception e) {  
  125.             Toast.makeText(RecordTest.this, e.getMessage(), 1000).show();  
  126.         }  
  127.  
  128.     }  
  129.  
  130.     class Fileter implements FilenameFilter {  
  131.  
  132.         public boolean accept(File dir, String filename) {  
  133.             // TODO Auto-generated method stub  
  134.             return filename.equals(".amr");  
  135.         }  
  136.  
  137.     }  

在使用過程中,需要加入操作SD卡和使用錄音設備的權限,即在AndroidManifest.xml中加入: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
然後就可以使用了,如果有問題,歡迎大家指正!

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved