Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 98
#1

Запись звука. MediaRecorder. разбираю пример - Android

27.03.2016, 12:55. Просмотров 336. Ответов 2
Метки нет (Все метки)

разбираю уже готовый пример.Приложение запускается, но не могу понять, почему у меня не записывает звук, а при нажатии на Stop выбивает из него. Может подскажете - что не так??

Java
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
package com.example.zapis;
 
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 MainActivity extends Activity {
 
  private MediaRecorder mediaRecorder;
  private MediaPlayer mediaPlayer;
  private String fileName;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    fileName = Environment.getExternalStorageDirectory() + "/record.3gpp";
  }
 
  public void recordStart(View v) {
    try {
      releaseRecorder();
 
      File outFile = new File(fileName);
      if (outFile.exists()) {
        outFile.delete();
      }
 
      mediaRecorder = new MediaRecorder();
      mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
      mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
      mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
      mediaRecorder.setOutputFile(fileName);
      mediaRecorder.prepare();
      mediaRecorder.start();
    } catch (Exception e) {
      e.printStackTrace();
    }
 
  }
 
  public void recordStop(View v) {
    if (mediaRecorder != null) {
      mediaRecorder.stop();
    }
  }
 
  public void playStart(View v) {
    try {
      releasePlayer();
      mediaPlayer = new MediaPlayer();
      mediaPlayer.setDataSource(fileName);
      mediaPlayer.prepare();
      mediaPlayer.start();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  public void playStop(View v) {
    if (mediaPlayer != null) {
      mediaPlayer.stop();
    }
  }
 
  private void releaseRecorder() {
    if (mediaRecorder != null) {
      mediaRecorder.release();
      mediaRecorder = null;
    }
  }
 
  private void releasePlayer() {
    if (mediaPlayer != null) {
      mediaPlayer.release();
      mediaPlayer = null;
    }
  }
 
  @Override
  protected void onDestroy() {
    super.onDestroy();
    releasePlayer();
    releaseRecorder();
  }
 
}
activity_main.xml
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 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:orientation="vertical"
 tools:context=".MainActivity">
<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="@string/record">
</TextView>
<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="recordStart"
 android:text="@string/start">
</Button>
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="recordStop"
 android:text="@string/stop">
</Button>
</LinearLayout>
<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginTop="20dp"
 android:text="@string/play">
</TextView>
<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="playStart"
 android:text="@string/start">
</Button>
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="playStop"
 android:text="@string/stop">
</Button>
</LinearLayout>
</LinearLayout>
strings.xml
XML
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <string name="app_name">zapis</string>
    <string name="action_settings">Settings</string>
<string name="record">Record</string>
<string name="play">Play</string>
<string name="start">Start</string>
<string name="stop">Stop</string>
</resources>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2016, 12:55     Запись звука. MediaRecorder. разбираю пример
Посмотрите здесь:

Android пример
Android Воспроизведение звука (ничего не получается)
Android запись и сравнение звука с имеющимся
Android Передача звука
Android Как получить уровень громкости звука?
Android Запись звука на Андроиде
Не работает MediaRecorder Android
Android Разбираю исходник игры Пакман
Android MediaCodec - декодирование сжатого звука
Генератор звука нужной частоты Android
Запись звука unity Android
Задержка звука при стриме по wifi Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 426
27.03.2016, 14:50     Запись звука. MediaRecorder. разбираю пример #2
А не проще ли бы было выложить код ошибки.
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 98
27.03.2016, 23:00  [ТС]     Запись звука. MediaRecorder. разбираю пример #3
Да, наверное надо было и логи выложить..
Вот значит
При нажатии на Start (Recorda) :
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
03-27 19:49:47.541: E/AndroidRuntime(1034): FATAL EXCEPTION: main
03-27 19:49:47.541: E/AndroidRuntime(1034): java.lang.IllegalStateException: Could not execute method of the activity
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.view.View$1.onClick(View.java:3591)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.view.View.performClick(View.java:4084)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.view.View$PerformClick.run(View.java:16966)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.os.Handler.handleCallback(Handler.java:615)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.os.Looper.loop(Looper.java:137)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.app.ActivityThread.main(ActivityThread.java:4745)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at dalvik.system.NativeStart.main(Native Method)
03-27 19:49:47.541: E/AndroidRuntime(1034): Caused by: java.lang.reflect.InvocationTargetException
03-27 19:49:47.541: E/AndroidRuntime(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.view.View$1.onClick(View.java:3586)
03-27 19:49:47.541: E/AndroidRuntime(1034):     ... 11 more
03-27 19:49:47.541: E/AndroidRuntime(1034): Caused by: java.lang.IllegalStateException
03-27 19:49:47.541: E/AndroidRuntime(1034):     at android.media.MediaRecorder.stop(Native Method)
03-27 19:49:47.541: E/AndroidRuntime(1034):     at com.example.zapis.MainActivity.recordStop(MainActivity.java:50)
03-27 19:49:47.541: E/AndroidRuntime(1034):     ... 14 more
При нажатии Stop (Recorda)
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
03-27 19:48:42.405: W/System.err(1034): java.lang.RuntimeException: setAudioSource failed.
03-27 19:48:42.457: W/System.err(1034):     at android.media.MediaRecorder.setAudioSource(Native Method)
03-27 19:48:42.457: W/System.err(1034):     at com.example.zapis.MainActivity.recordStart(MainActivity.java:36)
03-27 19:48:42.457: W/System.err(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 19:48:42.457: W/System.err(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
03-27 19:48:42.457: W/System.err(1034):     at android.view.View$1.onClick(View.java:3586)
03-27 19:48:42.457: W/System.err(1034):     at android.view.View.performClick(View.java:4084)
03-27 19:48:42.457: W/System.err(1034):     at android.view.View$PerformClick.run(View.java:16966)
03-27 19:48:42.457: W/System.err(1034):     at android.os.Handler.handleCallback(Handler.java:615)
03-27 19:48:42.457: W/System.err(1034):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-27 19:48:42.457: W/System.err(1034):     at android.os.Looper.loop(Looper.java:137)
03-27 19:48:42.457: W/System.err(1034):     at android.app.ActivityThread.main(ActivityThread.java:4745)
03-27 19:48:42.457: W/System.err(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
03-27 19:48:42.457: W/System.err(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
03-27 19:48:42.457: W/System.err(1034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-27 19:48:42.457: W/System.err(1034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-27 19:48:42.457: W/System.err(1034):     at dalvik.system.NativeStart.main(Native Method)
Не пойму, идет ли запись с микрофона и почему выбивает при нажатии на Stop
Yandex
Объявления
27.03.2016, 23:00     Запись звука. MediaRecorder. разбираю пример
Ответ Создать тему
Опции темы

Текущее время: 02:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru