CĂN BẢN
INTENTS
GIAO DIỆN
CÁC KHÁI NIỆM
VÍ DỤ
TÀI LIỆU
HỌC LẬP TRÌNH ANDROID
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách sử dụng Android MediaRecorder

Nếu bạn muốn phát triển một ứng dụng Android có khả năng ghi âm hoặc quay video, thì Android MediaRecorder là một công cụ quan trọng để giúp bạn thực hiện điều đó.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm, vai trò, các thuộc tính và phương thức của Android MediaRecorder, những lưu ý khi sử dụng nó, và cung cấp một ví dụ cụ thể về cách sử dụng nó.

1. Tìm hiểu về MediaRecorder trong Android

Android MediaRecorder là một lớp cung cấp các phương thức để ghi âm và quay video trên thiết bị Android. Nó cho phép ứng dụng của bạn có thể chụp hình ảnh hoặc ghi âm trên thiết bị của người dùng, rồi lưu lại dưới dạng tệp để sau này có thể xem lại hoặc chia sẻ.

2. Các thuộc tính của MediaRecorder trong Android

Android MediaRecorder cung cấp một số thuộc tính và phương thức để bạn có thể tùy chỉnh và điều khiển quá trình ghi âm hoặc quay video.

Bài viết này được đăng tại [free tuts .net]

Các thuộc tính của Android MediaRecorder:

  • setAudioSource(int source) - thiết lập nguồn âm thanh cho việc ghi âm (vd: microphone).
  • setVideoSource(int source) - thiết lập nguồn video cho việc quay video (vd: camera).
  • setOutputFormat(int format) - thiết lập định dạng của tệp được ghi lại (vd: MPEG-4).
  • setAudioEncoder(int encoder) - thiết lập bộ mã hóa âm thanh (vd: AAC).
  • setVideoEncoder(int encoder) - thiết lập bộ mã hóa video (vd: H.264).
  • setOutputFile(FileDescriptor fd) - thiết lập tệp đích để lưu trữ âm thanh hoặc video.

Các phương thức của Android MediaRecorder:

  • prepare() - chuẩn bị MediaRecorder để bắt đầu quá trình ghi âm hoặc quay video.
  • start() - bắt đầu quá trình ghi âm hoặc quay video.
  • stop() - kết thúc quá trình ghi âm hoặc quay video.
  • reset() - đặt lại MediaRecorder về trạng thái ban đầu.
  • release() - giải phóng tài nguyên của MediaRecorder.

3. Những lưu ý khi sử dụng MediaRecorder trong Android

Khi sử dụng Android MediaRecorder, bạn cần lưu ý một số điểm sau đây để đảm bảo rằng quá trình ghi âm hoặc quay video diễn ra đúng và ổn định:

  • Luôn kiểm tra trạng thái của MediaRecorder trước khi bắt đầu ghi âm hoặc quay video. Nếu trạng thái không chính xác, bạn cần đặt lại nó về trạng thái ban đầu trước khi tiếp tục.
  • Hạn chế sử dụng nhiều MediaRecorder trong cùng một thời điểm, vì điều này có thể gây ra sự cố và làm giảm hiệu suất của ứng dụng.
  • Nếu ứng dụng của bạn đang chạy trên các phiên bản Android cũ hơn, bạn cần cẩn thận khi sử dụng MediaRecorder vì nó có thể không hoạt động chính xác trên những phiên bản này.
  • Nếu ứng dụng của bạn sử dụng nhiều loại nguồn âm thanh hoặc video khác nhau, bạn cần đảm bảo rằng MediaRecorder được thiết lập đúng để có thể xử lý chúng.

4. Ví dụ minh họa về MediaRecorder trong Android

Dưới đây là ví dụ minh họa về MediaRecorder trong Android:

File: activity_main.xml

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:paddingBottom="@dimen/activity_vertical_margin"  
    android:paddingLeft="@dimen/activity_horizontal_margin"  
    android:paddingRight="@dimen/activity_horizontal_margin"  
    android:paddingTop="@dimen/activity_vertical_margin"  
    tools:context=".MainActivity" >  
  
    <Button  
        android:id="@+id/button1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignParentLeft="true"  
        android:layout_alignParentTop="true"  
        android:layout_marginLeft="68dp"  
        android:layout_marginTop="50dp"  
        android:text="Start Recording"  
        android:onClick="startRecording"  
         />  
  
    <Button  
        android:id="@+id/button2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignLeft="@+id/button1"  
        android:layout_below="@+id/button1"  
        android:layout_marginTop="64dp"  
        android:text="Stop Recording"   
        android:onClick="stopRecording"  
        />  
  
</RelativeLayout>  

File: MainActivity.java

package com.javatpoint.mediarecorder;  
import java.io.File;  
import java.io.IOException;  
import android.app.Activity;  
import android.content.ContentResolver;  
import android.content.ContentValues;  
import android.content.Intent;  
import android.media.MediaRecorder;  
import android.net.Uri;  
import android.os.Bundle;  
import android.os.Environment;  
import android.provider.MediaStore;  
import android.util.Log;  
import android.view.View;  
import android.widget.Button;  
import android.widget.Toast;  
  
public class MainActivity extends Activity {  
      MediaRecorder recorder;  
      File audiofile = null;  
      static final String TAG = "MediaRecording";  
      Button startButton,stopButton;  
  
      @Override  
      public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        startButton = (Button) findViewById(R.id.button1);  
        stopButton = (Button) findViewById(R.id.button2);  
      }  
  
      public void startRecording(View view) throws IOException {  
        startButton.setEnabled(false);  
        stopButton.setEnabled(true);  
        
        File dir = Environment.getExternalStorageDirectory();  
        try {  
          audiofile = File.createTempFile("sound", ".3gp", dir);  
        } catch (IOException e) {  
          Log.e(TAG, "external storage access error");  
          return;  
        }  

        recorder = new MediaRecorder();  
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);  
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
        recorder.setOutputFile(audiofile.getAbsolutePath());  
        recorder.prepare();  
        recorder.start();  
      }  
  
      public void stopRecording(View view) {  
        startButton.setEnabled(true);  
        stopButton.setEnabled(false);  
   
        recorder.stop();  
        recorder.release();  
      
        addRecordingToMediaLibrary();  
      }  
  
      protected void addRecordingToMediaLibrary() {  
          
        ContentValues values = new ContentValues(4);  
        long current = System.currentTimeMillis();  
        values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName());  
        values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));  
        values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");  
        values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());  
           
        ContentResolver contentResolver = getContentResolver();  
        Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;  
        Uri newUri = contentResolver.insert(base, values);  
  
         
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));  
        Toast.makeText(this, "Added File " + newUri, Toast.LENGTH_LONG).show();  
      }  
    }   

5. Tổng kết

Trong bài viết này, chúng ta đã tìm hiểu về Android MediaRecorder và vai trò của nó trong việc ghi âm và quay video trên thiết bị Android. Chúng ta đã đi vào chi tiết các thuộc tính và phương thức của MediaRecorder, cùng với những lưu ý khi sử dụng để đảm bảo rằng ứng dụng của bạn hoạt động đúng và ổn định. Hi vọng bạn có thể hiểu và sử dụng MediaRecorder cho những ứng dụng cần tính năng ghi âm, quay video để hỗ trợ người dùng trong việc ghi lại và chia sẻ những trải nghiệm của họ.

Cùng chuyên mục:

Tìm hiểu về vòng đời của Activity trong Android

Tìm hiểu về vòng đời của Activity trong Android

AlarmManager trong Android

AlarmManager trong Android

Menu trong Android

Menu trong Android

Fragments trong Android

Fragments trong Android

SearchView trong Android

SearchView trong Android

TabLayout trong Android

TabLayout trong Android

ViewStub trong Android

ViewStub trong Android

Image Slider trong Android

Image Slider trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

ScrollView trong Android

ScrollView trong Android

ProgressBar trong Android

ProgressBar trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Cách dùng TimePicker trong Android

Cách dùng TimePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng SeekBar trong Android

Cách dùng SeekBar trong Android

Cách dùng WebView trong Android

Cách dùng WebView trong Android

Cách dùng RatingBar trong Android

Cách dùng RatingBar trong Android

Cách dùng ListView trong Android

Cách dùng ListView trong Android

AutoCompleteTextView trong Android

AutoCompleteTextView trong Android

Spinner trong Android

Spinner trong Android

Top