Полезные примеры Android

Полезные примеры Android
Android — Захват аудио «Audio»

В Android есть встроенный микрофон, через который вы можете записывать звук и сохранять его или воспроизводить на телефоне. Есть много способов сделать это, но наиболее распространенный способ — через класс MediaRecorder.

Android предоставляет класс MediaRecorder для записи аудио или видео. Чтобы использовать класс MediaRecorder, вы сначала создадите экземпляр класса MediaRecorder. Его синтаксис приведен ниже.

MediaRecorder myAudioRecorder = new MediaRecorder();

Теперь вы установите исходный, выходной формат, формат кодирования и выходной файл. Их синтаксис приведен ниже.

myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);

После указания источника звука и формата и его выходного файла мы можем затем вызвать два основных метода подготовки и начать запись звука.

myAudioRecorder.prepare();
myAudioRecorder.start();

Помимо этих методов, в классе MediaRecorder перечислены другие методы, которые позволяют лучше контролировать запись звука и видео.

N Метод и описание
1

setAudioSource ()

Этот метод определяет источник звука для записи.

2

setVideoSource ()

Этот метод указывает источник записываемого видео.

3

setOutputFormat ()

Этот метод определяет аудиоформат, в котором будет сохраняться звук.

4

setAudioEncoder ()

Этот метод определяет используемый аудиокодер.

5

setOutputFile ()

Этот метод настраивает путь к файлу, в котором будет храниться записанный звук.

6

stop()

Этот метод останавливает процесс записи.

7

release()

Этот метод следует вызывать, когда требуется экземпляр рекордера.

Пример

В этом примере демонстрируется класс MediaRecorder для захвата звука, а затем класс MediaPlayer для воспроизведения записанного звука.

Чтобы поэкспериментировать с этим примером, вам нужно запустить это на реальном устройстве.

Шаги Описание
1 Вы будете использовать Android studio IDE для создания Android-приложения и назовите его AudioCapture в пакете com.example.sairamkrishna.myapplication.
2 Измените файл src / MainActivity.java, чтобы добавить код AudioCapture.
3 Измените XML-файл макета res / layout / activity_main.xml, добавьте при необходимости любой компонент графического интерфейса.
4 Измените AndroidManifest.xml, чтобы добавить необходимые разрешения.
5 Запустите приложение, выберите работающее устройство Android, установите на него приложение и проверьте результаты.

Вот содержимое src / MainActivity.java

package com.example.sairamkrishna.myapplication;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
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.support.v4.app.ActivityCompat;
import android.content.pm.PackageManager;
import android.support.v4.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
Button buttonStart, buttonStop, buttonPlayLastRecordAudio, 
buttonStopPlayingRecording ;
String AudioSavePathInDevice = null;
MediaRecorder mediaRecorder ;
Random random ;
String RandomAudioFileName = "ABCDEFGHIJKLMNOP";
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();
} else {
Toast.makeText(MainActivity.this,"Permission 
Denied",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;
}
}

Вот содержимое activity_main.xml

В приведенном ниже коде abc указывает логотип учебной точки.

<?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">
<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/abc"/>
<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>

Вот содержимое Strings.xml

<resources>
<string name="app_name">My Application</string>
</resources>

Вот содержимое AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<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="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.MainActivity"
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>
</manifest>

Попробуем запустить ваше приложение. Я предполагаю, что вы подключили свое настоящее мобильное устройство Android к компьютеру. Чтобы запустить приложение из студии Android, откройте один из файлов активности вашего проекта и щелкните Значок Eclipse Runзначок « Выполнить» на панели инструментов. Перед запуском вашего приложения студия Android отобразит следующие изображения.

Теперь по умолчанию вы увидите отключенную кнопку остановки и воспроизведения. Просто нажмите кнопку «Запись», и ваше приложение начнет запись звука. Будет отображен следующий экран.

Аудио запись

Теперь просто нажмите кнопку остановки, и он сохранит записанный звук на внешнюю SD-карту. Когда вы нажимаете кнопку «Стоп», появляется следующий экран.

Кнопка остановки Android

Теперь просто нажмите кнопку воспроизведения, и записанный звук просто начнет воспроизводиться на устройстве. Следующее сообщение появляется, когда вы нажимаете кнопку воспроизведения.

Кнопка Android Play

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare