Blog purpose for android basic example for android app developer. any query please my contact

Monday 13 April 2020

android audio recorder source code

android audio recorder source code

In this Tutorial, today learn android audio recorder source code. Android Studio Provide an Audio Recording Features follow the site from developer google    

 android audio recorder is one of the most basic features of any smartphone and it has been there since and before smartphones came into existence. It is quite a simple utility that enables users to record their voice or any other sound for that matter and the recording gets stored locally and can be listened to any time in the future as per the requirement. So here is an Audio Recording in Android Example.

In this post, we are going to explore how to implement the voice recording feature in an android application. I hope you’re excited to learn it. So, without any further delay, let’s get started with it

 

MediaRecorder myAudioRecorder = new MediaRecorder();

Now you will set the source, output, and encoding format and output file. Their syntax is given below.


myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);

myAudioRecorder.setOutputFile(outputFile);

 

After specifying the audio source and format and its output file, we can then call the two basic methods prepare and start to start recording the audio.

 

myAudioRecorder.prepare();

myAudioRecorder.start();

 

This robot SDK offers a number of mechanisms for the execution of sound recording and playback. The section has seen at two of these, in the structure of the MediaPlayer and MediaRecorder courses. Having covered the concept of using these techniques, the section went through the creation of an information program designed to show and then make back sound. In the way of working with sound at Android, the section also looked at the steps needed in ensuring that the device on which the program is going gets the microphone before attempting to record audio. The usage of outer memory in the form of the SD card was also hidden.

 

If you have the android audio recorder from the Google device, you will change it from keeping audio recordings on the action controls page, where through the `` manage process '' form, I personally saw the audio clip shown by my Android  studio.




1.MainActivity.java:

package com.akash.audiocapture;


import android.media.MediaPlayer;

import android.media.MediaRecorder;


import android.os.Environment;


import android.os.Bundle;

import android.view.View;


import android.widget.Button;

import android.widget.Toast;


import java.io.IOException;

import java.util.Random;


import static android.Manifest.permission.RECORD_AUDIO;

import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;


import android.content.pm.PackageManager;


import androidx.appcompat.app.AppCompatActivity;

import androidx.core.app.ActivityCompat;

import androidx.core.content.ContextCompat;


public class MainActivity extends AppCompatActivity {


    Button buttonStart, buttonStop, buttonPlayLastRecordAudio,

            buttonStopPlayingRecording ;

    String AudioSavePathInDevice = null;

    MediaRecorder mediaRecorder ;

    Random random ;

    String RandomAudioFileName = "Audio_Record";

    public static final int RequestPermissionCode = 1;

    MediaPlayer mediaPlayer ;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        buttonStart = (Button) findViewById(R.id.button);

        buttonStop = (Button) findViewById(R.id.button2);

        buttonPlayLastRecordAudio = (Button) findViewById(R.id.button3);

        buttonStopPlayingRecording = (Button)findViewById(R.id.button4);


        buttonStop.setEnabled(false);

        buttonPlayLastRecordAudio.setEnabled(false);

        buttonStopPlayingRecording.setEnabled(false);


        random = new Random();


        buttonStart.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {


                if(checkPermission()) {


                    AudioSavePathInDevice =

                            Environment.getExternalStorageDirectory().getAbsolutePath() + "/" +

                                    CreateRandomAudioFileName(5) + "AudioRecording.3gp";


                    MediaRecorderReady();


                    try {

                        mediaRecorder.prepare();

                        mediaRecorder.start();

                    } catch (IllegalStateException e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                    } catch (IOException e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                    }


                    buttonStart.setEnabled(false);

                    buttonStop.setEnabled(true);


                    Toast.makeText(MainActivity.this, "Recording started",

                            Toast.LENGTH_LONG).show();

                } else {

                    requestPermission();

                }


            }

        });


        buttonStop.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                mediaRecorder.stop();

                buttonStop.setEnabled(false);

                buttonPlayLastRecordAudio.setEnabled(true);

                buttonStart.setEnabled(true);

                buttonStopPlayingRecording.setEnabled(false);


                Toast.makeText(MainActivity.this, "Recording Completed",

                        Toast.LENGTH_LONG).show();

            }

        });


        buttonPlayLastRecordAudio.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) throws IllegalArgumentException,

                    SecurityException, IllegalStateException {


                buttonStop.setEnabled(false);

                buttonStart.setEnabled(false);

                buttonStopPlayingRecording.setEnabled(true);


                mediaPlayer = new MediaPlayer();

                try {

                    mediaPlayer.setDataSource(AudioSavePathInDevice);

                    mediaPlayer.prepare();

                } catch (IOException e) {

                    e.printStackTrace();

                }


                mediaPlayer.start();

                Toast.makeText(MainActivity.this, "Recording Playing",

                        Toast.LENGTH_LONG).show();

            }

        });


        buttonStopPlayingRecording.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                buttonStop.setEnabled(false);

                buttonStart.setEnabled(true);

                buttonStopPlayingRecording.setEnabled(false);

                buttonPlayLastRecordAudio.setEnabled(true);


                if(mediaPlayer != null){

                    mediaPlayer.stop();

                    mediaPlayer.release();

                    MediaRecorderReady();

                }

            }

        });


    }


    public void MediaRecorderReady(){

        mediaRecorder=new MediaRecorder();

        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

        mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);

        mediaRecorder.setOutputFile(AudioSavePathInDevice);

    }


    public String CreateRandomAudioFileName(int string){

        StringBuilder stringBuilder = new StringBuilder( string );

        int i = 0 ;

        while(i < string ) {

            stringBuilder.append(RandomAudioFileName.

                    charAt(random.nextInt(RandomAudioFileName.length())));


            i++ ;

        }

        return stringBuilder.toString();

    }


    private void requestPermission() {

        ActivityCompat.requestPermissions(MainActivity.this, new

                String[]{WRITE_EXTERNAL_STORAGE, RECORD_AUDIO}, RequestPermissionCode);

    }


    @Override

    public void onRequestPermissionsResult(int requestCode,

                                           String permissions[], int[] grantResults) {

        switch (requestCode) {

            case RequestPermissionCode:

                if (grantResults.length> 0) {

                    boolean StoragePermission = grantResults[0] ==

                            PackageManager.PERMISSION_GRANTED;

                    boolean RecordPermission = grantResults[1] ==

                            PackageManager.PERMISSION_GRANTED;


                    if (StoragePermission && RecordPermission) {

                        Toast.makeText(MainActivity.this, "Permission Granted",

                                Toast.LENGTH_LONG).show();

                    }

                }

                break;

        }

    }


    public boolean checkPermission() {

        int result = ContextCompat.checkSelfPermission(getApplicationContext(),

                WRITE_EXTERNAL_STORAGE);

        int result1 = ContextCompat.checkSelfPermission(getApplicationContext(),

                RECORD_AUDIO);

        return result == PackageManager.PERMISSION_GRANTED &&

                result1 == PackageManager.PERMISSION_GRANTED;

    }

}




2.activity_main.xml:


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="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"

    android:background="@color/colorAccent">


    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/imageView"

        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true"

        android:src="@drawable/ic_launcher"/>


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Record"

        android:id="@+id/button"

        android:layout_below="@+id/imageView"

        android:layout_alignParentLeft="true"

        android:layout_marginTop="37dp"

        />


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="STOP"

        android:id="@+id/button2"

        android:layout_alignTop="@+id/button"

        android:layout_centerHorizontal="true"

        />


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Play"

        android:id="@+id/button3"

        android:layout_alignTop="@+id/button2"

        android:layout_alignParentRight="true"

        android:layout_alignParentEnd="true"

        />


    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="STOP PLAYING RECORDING "

        android:id="@+id/button4"

        android:layout_below="@+id/button2"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="10dp"

        />

</RelativeLayout>



3.AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.akash.audiocapture">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <uses-permission android:name="android.permission.STORAGE" />

    <application

        android:allowBackup="true"

        android:icon="@mipmap/ic_launcher"

        android:label="@string/app_name"

        android:roundIcon="@mipmap/ic_launcher_round"

        android:supportsRtl="true"

        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>


</manifest>



4.Output:


android audio recorder source code



android audio recorder source code



No comments:

Post a Comment