Board logo

標題: MyRecorder [打印本頁]

作者: ray    時間: 2012-11-19 20:44     標題: MyRecorder

main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3.   xmlns:android="http://schemas.android.com/apk/res/android"
  4.   android:orientation="vertical"
  5.   android:layout_width="fill_parent"
  6.   android:layout_height="fill_parent"
  7.   android:background="#FFFFFFFF">
  8.   <LinearLayout
  9.   android:id="@+id/LinearLayout01"
  10.   android:layout_width="wrap_content"
  11.   android:layout_height="wrap_content">
  12.   <Button
  13.   android:id="@+id/RecBtn"
  14.   android:layout_width="fill_parent"
  15.   android:layout_height="wrap_content"
  16.   android:text="@string/RecLabel">
  17.   </Button>
  18.   <Button
  19.   android:id="@+id/StopBtn"
  20.   android:layout_width="fill_parent"
  21.   android:layout_height="wrap_content"
  22.   android:text="@string/StopLabel">
  23.   </Button>
  24.   <Button
  25.   android:id="@+id/PlayBtn"
  26.   android:layout_width="fill_parent"
  27.   android:layout_height="wrap_content"
  28.   android:text="@string/PlayLabel">
  29.   </Button>
  30.   <Button
  31.   android:id="@+id/DelBtn"
  32.   android:layout_width="fill_parent"
  33.   android:layout_height="wrap_content"
  34.   android:text="@string/DelLabel">
  35.   </Button>
  36.   </LinearLayout>
  37.   <TextView
  38.   android:id="@+id/TextView01"
  39.   android:layout_width="wrap_content"
  40.   android:layout_height="wrap_content"
  41.   android:textColor="#FF000000">
  42.   </TextView>
  43. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-19 20:44

strings.xml
  1. <resources>
  2.     <string name="app_name">MyRecorder</string>
  3.     <string name="menu_settings">Settings</string>
  4.     <string name="title_activity_main">MainActivity</string>
  5.         <string name="RecLabel">錄音</string>
  6.           <string name="StopLabel">停止</string>
  7.           <string name="PlayLabel">播放</string>
  8.           <string name="DelLabel">刪除</string>
  9. </resources>
複製代碼

作者: ray    時間: 2012-11-19 21:05

  1. private TextView myTextView;
  2.         private String strTempFile = "MyVoice_";
  3.         private File myRecAudioFile;
  4.         private File myRecAudioDir;
  5.         private File myPlayFile;
複製代碼

作者: ray    時間: 2012-11-19 21:11

  1. private ListView myListView;
  2.         private ArrayList<String> recordFiles;
  3.         private ArrayAdapter<String> adapter;
  4.        
  5.         private MediaRecorder mMediaRecorder;
  6.         private boolean sdCardExist;
  7.         private boolean isStopRecord;
複製代碼

作者: ray    時間: 2012-11-19 21:16

  1. <ListView
  2.       android:id="@+id/ListView01"
  3.       android:layout_width="wrap_content"
  4.           android:layout_height="wrap_content"
  5.       android:background="#FF000000">
  6.   </ListView>
複製代碼

作者: ray    時間: 2012-11-19 21:18

  1. recButton = (Button) findViewById(R.id.RecBtn);
  2.         stopButton = (Button) findViewById(R.id.StopBtn);
  3.         playButton = (Button) findViewById(R.id.PlayBtn);
  4.         delButton = (Button) findViewById(R.id.DelBtn);
  5.         myListView = (ListView) findViewById(R.id.ListView01);
  6.         myTextView = (TextView) findViewById(R.id.TextView01);
複製代碼

作者: ray    時間: 2012-11-19 21:21

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CheckedTextView
  3.   xmlns:android="http://schemas.android.com/apk/res/android"
  4.   android:layout_width="fill_parent"
  5.   android:layout_height="fill_parent"
  6.   android:textColor="#FFFFFFFF" />
複製代碼

作者: ray    時間: 2012-11-19 21:30

  1. //getRecordFiles();
  2.         adapter = new ArrayAdapter<String>(this,R.layout.list,recordFiles);
  3.         myListView.setAdapter(adapter);
複製代碼

作者: ray    時間: 2012-11-21 19:04

[attach]634[/attach]
作者: ray    時間: 2012-11-21 19:18

sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
作者: ray    時間: 2012-11-21 19:22

  1. if(sdCardExist)
  2.                 myRecAudioDir = Environment.getExternalStorageDirectory();
  3.         
複製代碼

作者: ray    時間: 2012-11-21 19:35

  1. private void getRecordFiles()
  2.     {
  3.             recordFiles = new ArrayList<String>();
  4.             if(sdCardExist)
  5.             {
  6.                     File[] files = myRecAudioDir.listFiles();
  7.                     if(files != null)
  8.                     {
  9.                             for(int i=0;i<files.length;i++)
  10.                             {
  11.                                     if(files[i].getName().indexOf(".") >= 0)
  12.                                     {
  13.                                             String fileS = files[i].getName().substring(files[i].getName().indexOf("."));
  14.                                             if(fileS.toLowerCase().equals(".amr"))
  15.                                             {
  16.                                                     recordFiles.add(files[i].getName());
  17.                                             }
  18.                                     }
  19.                             }
  20.                     }
  21.             }
  22.     }
複製代碼

作者: ray    時間: 2012-11-21 19:54

  1. recButton.setOnClickListener(new View.OnClickListener()
  2.         {
  3.                 public void onClick(View v)
  4.                 {
  5.                        
  6.                 }
  7.         }
  8.         );
複製代碼

作者: ray    時間: 2012-11-21 20:05

  1. try
  2.                         {
  3.                                
  4.                         }
  5.                         catch(Exception e)
  6.                         {
  7.                                 e.printStackTrace();
  8.                         }
複製代碼

作者: ray    時間: 2012-11-21 20:13

  1. if(!sdCardExist)
  2.                                 {
  3.                                         Toast.makeText(MainActivity.this, "please insert sd card...", Toast.LENGTH_LONG).show();
  4.                                 }
複製代碼

作者: ray    時間: 2012-11-21 20:20

  1. myRecAudioFile = File.createTempFile(strTempFile, ".amr", myRecAudioDir);
複製代碼

作者: ray    時間: 2012-11-21 20:27

  1. mMediaRecorder = new MediaRecorder();
  2.                                 mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  3.                                 mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
  4.                                 mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
複製代碼

作者: ray    時間: 2012-11-21 20:34

  1. mMediaRecorder.setOutputFile(myRecAudioFile.getAbsolutePath());
  2.                                 mMediaRecorder.prepare();
  3.                                 mMediaRecorder.start();
複製代碼

作者: ray    時間: 2012-11-21 20:39

  1. myTextView.setText("錄音中...");
  2.                                
  3.                                 recButton.setEnabled(false);
  4.                                 stopButton.setEnabled(true);
  5.                                 playButton.setEnabled(false);
  6.                                 delButton.setEnabled(false);
  7.                                
  8.                                 isStopRecord = false;
複製代碼

作者: ray    時間: 2012-11-21 20:43

  1. stopButton.setOnClickListener(new View.OnClickListener(){
  2.                 public void onClick(View v)
  3.                 {
  4.                        
  5.                 }
  6.         });
複製代碼

作者: ray    時間: 2012-11-21 20:56

  1. if(myRecAudioFile != null)
  2.                         {
  3.                                 mMediaRecorder.stop();
  4.                                 adapter.add(myRecAudioFile.getName());
  5.                                 mMediaRecorder.release();
  6.                                
  7.                         }
複製代碼

作者: ray    時間: 2012-11-21 21:03

  1. mMediaRecorder = null;
  2.                                 myTextView.setText("Stop:"+myRecAudioFile.getName());
  3.                                 recButton.setEnabled(true);
  4.                                 stopButton.setEnabled(false);
  5.                                 playButton.setEnabled(true);
  6.                                 delButton.setEnabled(true);
  7.                                 isStopRecord = true;
複製代碼

作者: ray    時間: 2012-11-21 21:05

  1. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
複製代碼

作者: ray    時間: 2012-11-21 21:28

  1. myListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
  2.         {
  3.                 public void onItemClick(AdapterView<?> av,View v,int arg1,long arg2)
  4.                 {}
  5.                 });
複製代碼

作者: ray    時間: 2012-11-21 21:28

  1. myListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
  2.         {
  3.                 public void onItemClick(AdapterView<?> av,View v,int arg1,long arg2)
  4.                 {}
  5.                 });
複製代碼

作者: ray    時間: 2012-11-21 21:35

  1. playButton.setEnabled(true);
  2.                         delButton.setEnabled(true);
  3.                        
  4.                         myPlayFile = new File(myRecAudioDir.getAbsoluteFile()
  5.                                         + File.separator
  6.                                         + ((CheckedTextView)v).getText());
複製代碼

作者: ray    時間: 2012-11-21 21:37

  1. myTextView.setText("Choice:"+((CheckedTextView)v).getText());
複製代碼

作者: ray    時間: 2012-11-21 21:41

  1. playButton.setOnClickListener(new View.OnClickListener()
  2.         {
  3.                         public void onClick(View v)
  4.                         {
  5.                                 if(myPlayFile != null && myPlayFile.exists())
  6.                                 {
  7.                                         MediaPlayer mplay = MediaPlayer.create(null, Uri.fromFile(myPlayFile));
  8.                                         mplay.start();
  9.                                 }
  10.                         }
  11.                 });
複製代碼

作者: ray    時間: 2012-11-23 18:49

  1. delButton.setOnClickListener(new View.OnClickListener()
  2.         {
  3.                         public void onClick(View v)
  4.                         {
  5.                                 if(myPlayFile != null)
  6.                                 {
  7.                                         adapter.remove(myPlayFile.getName());
  8.                                         if(myPlayFile.exists())
  9.                                         {
  10.                                                 myPlayFile.delete();
  11.                                                 myTextView.setText("delete ok...");
  12.                                         }
  13.                                         else
  14.                                                 myTextView.setText("file not found...");
  15.                                 }
  16.                         }
  17.                 });
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2