EX07_11.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:7k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex07_11;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import android.app.Activity;
  6. import android.content.Intent;
  7. import android.media.MediaRecorder;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. import android.os.Environment;
  11. import android.view.View;
  12. import android.widget.AdapterView;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.CheckedTextView;
  15. import android.widget.ImageButton;
  16. import android.widget.ListView;
  17. import android.widget.TextView;
  18. import android.widget.Toast;
  19. public class EX07_11 extends Activity
  20. {
  21.   private ImageButton myButton1;
  22.   private ImageButton myButton2;
  23.   private ImageButton myButton3;
  24.   private ImageButton myButton4;
  25.   private ListView myListView1;
  26.   private String strTempFile = "ex07_11_";
  27.   private File myRecAudioFile;
  28.   private File myRecAudioDir;
  29.   private File myPlayFile;
  30.   private MediaRecorder mMediaRecorder01;
  31.   private ArrayList<String> recordFiles;
  32.   private ArrayAdapter<String> adapter;
  33.   private TextView myTextView1;
  34.   private boolean sdCardExit;
  35.   private boolean isStopRecord;
  36.   /** Called when the activity is first created. */
  37.   @Override
  38.   public void onCreate(Bundle savedInstanceState)
  39.   {
  40.     super.onCreate(savedInstanceState);
  41.     setContentView(R.layout.main);
  42.     myButton1 = (ImageButton) findViewById(R.id.ImageButton01);
  43.     myButton2 = (ImageButton) findViewById(R.id.ImageButton02);
  44.     myButton3 = (ImageButton) findViewById(R.id.ImageButton03);
  45.     myButton4 = (ImageButton) findViewById(R.id.ImageButton04);
  46.     myListView1 = (ListView) findViewById(R.id.ListView01);
  47.     myTextView1 = (TextView) findViewById(R.id.TextView01);
  48.     myButton2.setEnabled(false);
  49.     myButton3.setEnabled(false);
  50.     myButton4.setEnabled(false);
  51.     /* 判断SD Card是否插入 */
  52.     sdCardExit = Environment.getExternalStorageState().equals(
  53.         android.os.Environment.MEDIA_MOUNTED);
  54.     /* 取得SD Card路径作为录音的文件位置 */
  55.     if (sdCardExit)
  56.       myRecAudioDir = Environment.getExternalStorageDirectory();
  57.     /* 取得SD Card目录里的所有.amr文件 */
  58.     getRecordFiles();
  59.     adapter = new ArrayAdapter<String>(this,
  60.         R.layout.my_simple_list_item, recordFiles);
  61.     /* 将ArrayAdapter添加ListView对象中 */
  62.     myListView1.setAdapter(adapter);
  63.     /* 录音 */
  64.     myButton1.setOnClickListener(new ImageButton.OnClickListener()
  65.     {
  66.       @Override
  67.       public void onClick(View arg0)
  68.       {
  69.         try
  70.         {
  71.           if (!sdCardExit)
  72.           {
  73.             Toast.makeText(EX07_11.this, "请插入SD Card",
  74.                 Toast.LENGTH_LONG).show();
  75.             return;
  76.           }
  77.           /* 创建录音频文件 */
  78.           myRecAudioFile = File.createTempFile(strTempFile, ".amr",
  79.               myRecAudioDir);
  80.           mMediaRecorder01 = new MediaRecorder();
  81.           /* 设置录音来源为麦克风 */
  82.           mMediaRecorder01
  83.               .setAudioSource(MediaRecorder.AudioSource.MIC);
  84.           mMediaRecorder01
  85.               .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
  86.           mMediaRecorder01
  87.               .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
  88.           mMediaRecorder01.setOutputFile(myRecAudioFile
  89.               .getAbsolutePath());
  90.           mMediaRecorder01.prepare();
  91.           mMediaRecorder01.start();
  92.           myTextView1.setText("录音中");
  93.           myButton2.setEnabled(true);
  94.           myButton3.setEnabled(false);
  95.           myButton4.setEnabled(false);
  96.           isStopRecord = false;
  97.         }
  98.         catch (IOException e)
  99.         {
  100.           // TODO Auto-generated catch block
  101.           e.printStackTrace();
  102.         }
  103.       }
  104.     });
  105.     /* 停止 */
  106.     myButton2.setOnClickListener(new ImageButton.OnClickListener()
  107.     {
  108.       @Override
  109.       public void onClick(View arg0)
  110.       {
  111.         // TODO Auto-generated method stub
  112.         if (myRecAudioFile != null)
  113.         {
  114.           /* 停止录音 */
  115.           mMediaRecorder01.stop();
  116.           mMediaRecorder01.release();
  117.           mMediaRecorder01 = null;
  118.           /* 将录音频文件名给Adapter */
  119.           adapter.add(myRecAudioFile.getName());
  120.           myTextView1.setText("停止:" + myRecAudioFile.getName());
  121.           myButton2.setEnabled(false);
  122.           isStopRecord = true;
  123.         }
  124.       }
  125.     });
  126.     /* 播放 */
  127.     myButton3.setOnClickListener(new ImageButton.OnClickListener()
  128.     {
  129.       @Override
  130.       public void onClick(View arg0)
  131.       {
  132.         // TODO Auto-generated method stub
  133.         if (myPlayFile != null && myPlayFile.exists())
  134.         {
  135.           /* 打开播放的程序 */
  136.           openFile(myPlayFile);
  137.         }
  138.       }
  139.     });
  140.     /* 删除 */
  141.     myButton4.setOnClickListener(new ImageButton.OnClickListener()
  142.     {
  143.       @Override
  144.       public void onClick(View arg0)
  145.       {
  146.         // TODO Auto-generated method stub
  147.         if (myPlayFile != null)
  148.         {
  149.           /* 先将Adapter删除文件名 */
  150.           adapter.remove(myPlayFile.getName());
  151.           /* 删除文件 */
  152.           if (myPlayFile.exists())
  153.             myPlayFile.delete();
  154.           myTextView1.setText("完成删除");
  155.         }
  156.       }
  157.     });
  158.     myListView1.setOnItemClickListener
  159.     (new AdapterView.OnItemClickListener()
  160.     {
  161.       @Override
  162.       public void onItemClick(AdapterView<?> arg0, View arg1,
  163.           int arg2, long arg3)
  164.       {
  165.         /* 当有点击档名时将删除及播放按钮Enable */
  166.         myButton3.setEnabled(true);
  167.         myButton4.setEnabled(true);
  168.         myPlayFile = new File(myRecAudioDir.getAbsolutePath()
  169.             + File.separator
  170.             + ((CheckedTextView) arg1).getText());
  171.         myTextView1.setText("你选的是:"
  172.             + ((CheckedTextView) arg1).getText());
  173.       }
  174.     });
  175.   }
  176.   @Override
  177.   protected void onStop()
  178.   {
  179.     if (mMediaRecorder01 != null && !isStopRecord)
  180.     {
  181.       /* 停止录音 */
  182.       mMediaRecorder01.stop();
  183.       mMediaRecorder01.release();
  184.       mMediaRecorder01 = null;
  185.     }
  186.     super.onStop();
  187.   }
  188.   private void getRecordFiles()
  189.   {
  190.     recordFiles = new ArrayList<String>();
  191.     if (sdCardExit)
  192.     {
  193.       File files[] = myRecAudioDir.listFiles();
  194.       if (files != null)
  195.       {
  196.         for (int i = 0; i < files.length; i++)
  197.         {
  198.           if (files[i].getName().indexOf(".") >= 0)
  199.           {
  200.             /* 只取.amr文件 */
  201.             String fileS = files[i].getName().substring(
  202.                 files[i].getName().indexOf("."));
  203.             if (fileS.toLowerCase().equals(".amr"))
  204.               recordFiles.add(files[i].getName());
  205.           }
  206.         }
  207.       }
  208.     }
  209.   }
  210.   /* 打开播放录音文件的程序 */
  211.   private void openFile(File f)
  212.   {
  213.     Intent intent = new Intent();
  214.     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  215.     intent.setAction(android.content.Intent.ACTION_VIEW);
  216.     String type = getMIMEType(f);
  217.     intent.setDataAndType(Uri.fromFile(f), type);
  218.     startActivity(intent);
  219.   }
  220.   private String getMIMEType(File f)
  221.   {
  222.     String end = f.getName().substring(
  223.         f.getName().lastIndexOf(".") + 1, f.getName().length())
  224.         .toLowerCase();
  225.     String type = "";
  226.     if (end.equals("mp3") || end.equals("aac") || end.equals("aac")
  227.         || end.equals("amr") || end.equals("mpeg")
  228.         || end.equals("mp4"))
  229.     {
  230.       type = "audio";
  231.     }
  232.     else if (end.equals("jpg") || end.equals("gif")
  233.         || end.equals("png") || end.equals("jpeg"))
  234.     {
  235.       type = "image";
  236.     }
  237.     else
  238.     {
  239.       type = "*";
  240.     }
  241.     type += "/*";
  242.     return type;
  243.   }
  244. }