Lập trình Android: AudioRecord (Ghi âm)
03/08/2012
FacebookTwitterDeliciousStumbleuponDiggMyspaceLinkedInZingmegovnlinkhay


Chương trình ghi âm là 1 ứng dụng đặc biệt và hữu ích trên điện thoại di động cho nên hầu hết các thế hệ smartphone hiện tại đều có sẵn chương trình ghi âm. Vấn đề đặc ra là trong 1 số ứng dụng riêng của bạn, bạn có thể cần tính năng ghi âm để phối hợp với các tính năng riêng mà bạn đã viết. Cho nên trong phần demo này tôi sẽ làm 1 ứng dụng ghi âm riêng lẻ để các bạn có thể tham khảo và xử dụng khi cần 1/ Tạo Project : Project name: AudioRecord Build Target: Android 2.3.3 Application name: AudioRecord Package name: com.dac.AudioRecord Create Activity: Record 2/ Trong file giao diện main.xml các bạn tạo 4 button như sau: PHP Code  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Nobilomo"
    />
    <Button android:id="@+id/beginBtn" android:text="Begin Recording"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="doClick" />
<Button android:id="@+id/stopBtn" android:text="Stop Recording"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="doClick" />
<Button android:id="@+id/playRecordingBtn"
android:text="Play Recording"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="doClick" />
<Button android:id="@+id/stopPlayingRecordingBtn"
android:text="Stop Playing Recording"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="doClick" />
</LinearLayout>
3/ Và trong file Record.java các bạn code xử lý:
PHP Code:
package dac.com.AudioRecord
import java.io.File;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
public class Record extends Activity {
    private MediaPlayer mediaPlayer;
    private MediaRecorder recorder;
    private String OUTPUT_FILE;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    OUTPUT_FILE = Environment.getExternalStorageDirectory() +
    "/recordaudio3.3gpp";
    }
    public void doClick(View view) {
        switch(view.getId()) {
        case R.id.beginBtn:
        try {
        beginRecording();
        } catch (Exception e) {
        e.printStackTrace();
        }
        break;
        case R.id.stopBtn:
        try {
        stopRecording();
        } catch (Exception e) {
        e.printStackTrace();
        }
        break;
        case R.id.playRecordingBtn:
            try {
            playRecording();
            } catch (Exception e) {
            e.printStackTrace();
            }
            break;
            case R.id.stopPlayingRecordingBtn:
            try {
            stopPlayingRecording();
            } catch (Exception e) {
            e.printStackTrace();
            }
            break;
            }
    }
    private void beginRecording() throws Exception {
        killMediaRecorder();
        File outFile = new File(OUTPUT_FILE);
        if(outFile.exists()) {
        outFile.delete();
        }
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(OUTPUT_FILE);
        recorder.prepare();
        recorder.start();
        }
    private void stopRecording() throws Exception {
        if (recorder != null) {
        recorder.stop();
        }
        }
    private void killMediaRecorder() {
        if (recorder != null) {
        recorder.release();
        }
        }
    private void killMediaPlayer() {
        if (mediaPlayer != null) {
        try {
        mediaPlayer.release();
        } catch (Exception e) {
        e.printStackTrace();
        }
        }
        }
    private void playRecording() throws Exception {
        killMediaPlayer();
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setDataSource(OUTPUT_FILE);
        mediaPlayer.prepare();
        mediaPlayer.start();
        }
    private void stopPlayingRecording() throws Exception {
        if(mediaPlayer != null) {
        mediaPlayer.stop();
        }
        }
    @Override
    protected void onDestroy() {
    super.onDestroy();
    killMediaRecorder();
    killMediaPlayer();
    }
}
  Vậy ta đã code xử lý cho cả 4 button và các hàm tương ứng để xử lý (xử dụng các công cụ hỗ trợ của Android). Sau đó để chạy được ứng dụng các bạn phải thêm các Permission trong file AndroidManifest.xml : PHP Code  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.dac.AudioRecord"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name" >
        <activity android:name=".Record"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
</manifest>
  Tiếp theo các bạn debug ứng dụng (có phone thì cắm vào thử không thì deploy lên máy thật để kiểm tra ứng dụng nha các bạn ) Theo laptrinhdidong