Guest User

Untitled

a guest
Jul 16th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.78 KB | None | 0 0
  1. package com.android.audiorecordtest;
  2.  
  3. import android.app.Activity;
  4. import android.widget.LinearLayout;
  5. import android.os.Bundle;
  6. import android.os.Environment;
  7. import android.view.ViewGroup;
  8. import android.widget.Button;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.content.Context;
  12. import android.util.Log;
  13. import android.media.MediaRecorder;
  14. import android.media.MediaPlayer;
  15.  
  16. import java.io.IOException;
  17.  
  18.  
  19. public class AudioRecordTest extends Activity
  20. {
  21. private static final String LOG_TAG = "AudioRecordTest";
  22. private static String mFileName = null;
  23.  
  24. private RecordButton mRecordButton = null;
  25. private MediaRecorder mRecorder = null;
  26.  
  27. private PlayButton mPlayButton = null;
  28. private MediaPlayer mPlayer = null;
  29.  
  30. private void onRecord(boolean start) {
  31. if (start) {
  32. startRecording();
  33. } else {
  34. stopRecording();
  35. }
  36. }
  37.  
  38. private void onPlay(boolean start) {
  39. if (start) {
  40. startPlaying();
  41. } else {
  42. stopPlaying();
  43. }
  44. }
  45.  
  46. private void startPlaying() {
  47. mPlayer = new MediaPlayer();
  48. try {
  49. mPlayer.setDataSource(mFileName);
  50. mPlayer.prepare();
  51. mPlayer.start();
  52. } catch (IOException e) {
  53. Log.e(LOG_TAG, "prepare() failed");
  54. }
  55. }
  56.  
  57. private void stopPlaying() {
  58. mPlayer.release();
  59. mPlayer = null;
  60. }
  61.  
  62. private void startRecording() {
  63. mRecorder = new MediaRecorder();
  64. mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  65. mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  66. mRecorder.setOutputFile(mFileName);
  67. mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  68.  
  69. try {
  70. mRecorder.prepare();
  71. } catch (IOException e) {
  72. Log.e(LOG_TAG, "prepare() failed");
  73. }
  74.  
  75. mRecorder.start();
  76. }
  77.  
  78. private void stopRecording() {
  79. mRecorder.stop();
  80. mRecorder.release();
  81. mRecorder = null;
  82. }
  83.  
  84. class RecordButton extends Button {
  85. boolean mStartRecording = true;
  86.  
  87. OnClickListener clicker = new OnClickListener() {
  88. public void onClick(View v) {
  89. onRecord(mStartRecording);
  90. if (mStartRecording) {
  91. setText("Stop recording");
  92. } else {
  93. setText("Start recording");
  94. }
  95. mStartRecording = !mStartRecording;
  96. }
  97. };
  98.  
  99. public RecordButton(Context ctx) {
  100. super(ctx);
  101. setText("Start recording");
  102. setOnClickListener(clicker);
  103. }
  104. }
  105.  
  106. class PlayButton extends Button {
  107. boolean mStartPlaying = true;
  108.  
  109. OnClickListener clicker = new OnClickListener() {
  110. public void onClick(View v) {
  111. onPlay(mStartPlaying);
  112. if (mStartPlaying) {
  113. setText("Stop playing");
  114. } else {
  115. setText("Start playing");
  116. }
  117. mStartPlaying = !mStartPlaying;
  118. }
  119. };
  120.  
  121. public PlayButton(Context ctx) {
  122. super(ctx);
  123. setText("Start playing");
  124. setOnClickListener(clicker);
  125. }
  126. }
  127.  
  128. public AudioRecordTest() {
  129. mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
  130. mFileName += "/audiorecordtest.3gp";
  131. }
  132.  
  133. @Override
  134. public void onCreate(Bundle icicle) {
  135. super.onCreate(icicle);
  136.  
  137. LinearLayout ll = new LinearLayout(this);
  138. mRecordButton = new RecordButton(this);
  139. ll.addView(mRecordButton,
  140. new LinearLayout.LayoutParams(
  141. ViewGroup.LayoutParams.WRAP_CONTENT,
  142. ViewGroup.LayoutParams.WRAP_CONTENT,
  143. 0));
  144. mPlayButton = new PlayButton(this);
  145. ll.addView(mPlayButton,
  146. new LinearLayout.LayoutParams(
  147. ViewGroup.LayoutParams.WRAP_CONTENT,
  148. ViewGroup.LayoutParams.WRAP_CONTENT,
  149. 0));
  150. setContentView(ll);
  151. }
  152.  
  153. @Override
  154. public void onPause() {
  155. super.onPause();
  156. if (mRecorder != null) {
  157. mRecorder.release();
  158. mRecorder = null;
  159. }
  160.  
  161. if (mPlayer != null) {
  162. mPlayer.release();
  163. mPlayer = null;
  164. }
  165. }
  166. }
  167.  
  168. > 06-01 11:06:18.440:
  169. > ERROR/AndroidRuntime(724): Uncaught
  170. > handler: thread main exiting due to
  171. > uncaught exception 06-01 11:06:18.449:
  172. > ERROR/AndroidRuntime(724):
  173. > java.lang.IllegalStateException 06-01
  174. > 11:06:18.449:
  175. > ERROR/AndroidRuntime(724): at
  176. > android.media.MediaRecorder.start(Native
  177. > Method) 06-01 11:06:18.449:
  178. > ERROR/AndroidRuntime(724): at
  179. > com.example.android.whereareyou.Main.startRecording(Main.java:75)
  180. > 06-01 11:06:18.449:
  181. > ERROR/AndroidRuntime(724): at
  182. > com.example.android.whereareyou.Main.onRecord(Main.java:32)
  183. > 06-01 11:06:18.449:
  184. > ERROR/AndroidRuntime(724): at
  185. > com.example.android.whereareyou.Main.access$0(Main.java:30)
  186. > 06-01 11:06:18.449:
  187. > ERROR/AndroidRuntime(724): at
  188. > com.example.android.whereareyou.Main$RecordButton$1.onClick(Main.java:89)
  189. > 06-01 11:06:18.449:
  190. > ERROR/AndroidRuntime(724): at
  191. > android.view.View.performClick(View.java:2179)
  192. > 06-01 11:06:18.449:
  193. > ERROR/AndroidRuntime(724): at
  194. > android.view.View.onTouchEvent(View.java:3828)
  195. > 06-01 11:06:18.449:
  196. > ERROR/AndroidRuntime(724): at
  197. > android.widget.TextView.onTouchEvent(TextView.java:6291)
  198. > 06-01 11:06:18.449:
  199. > ERROR/AndroidRuntime(724): at
  200. > android.view.View.dispatchTouchEvent(View.java:3368)
  201. > 06-01 11:06:18.449:
  202. > ERROR/AndroidRuntime(724): at
  203. > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
  204. > 06-01 11:06:18.449:
  205. > ERROR/AndroidRuntime(724): at
  206. > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
  207. > 06-01 11:06:18.449:
  208. > ERROR/AndroidRuntime(724): at
  209. > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
  210. > 06-01 11:06:18.449:
  211. > ERROR/AndroidRuntime(724): at
  212. > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
  213. > 06-01 11:06:18.449:
  214. > ERROR/AndroidRuntime(724): at
  215. > com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707)
  216. > 06-01 11:06:18.449:
  217. > ERROR/AndroidRuntime(724): at
  218. > com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1197)
  219. > 06-01 11:06:18.449:
  220. > ERROR/AndroidRuntime(724): at
  221. > android.app.Activity.dispatchTouchEvent(Activity.java:1993)
  222. > 06-01 11:06:18.449:
  223. > ERROR/AndroidRuntime(724): at
  224. > com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
  225. > 06-01 11:06:18.449:
  226. > ERROR/AndroidRuntime(724): at
  227. > android.view.ViewRoot.handleMessage(ViewRoot.java:1525)
  228. > 06-01 11:06:18.449:
  229. > ERROR/AndroidRuntime(724): at
  230. > android.os.Handler.dispatchMessage(Handler.java:99)
  231. > 06-01 11:06:18.449:
  232. > ERROR/AndroidRuntime(724): at
  233. > android.os.Looper.loop(Looper.java:123)
  234. > 06-01 11:06:18.449:
  235. > ERROR/AndroidRuntime(724): at
  236. > android.app.ActivityThread.main(ActivityThread.java:3948)
  237. > 06-01 11:06:18.449:
  238. > ERROR/AndroidRuntime(724): at
  239. > java.lang.reflect.Method.invokeNative(Native
  240. > Method) 06-01 11:06:18.449:
  241. > ERROR/AndroidRuntime(724): at
  242. > java.lang.reflect.Method.invoke(Method.java:521)
  243. > 06-01 11:06:18.449:
  244. > ERROR/AndroidRuntime(724): at
  245. > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
  246. > 06-01 11:06:18.449:
  247. > ERROR/AndroidRuntime(724): at
  248. > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
  249. > 06-01 11:06:18.449:
  250. > ERROR/AndroidRuntime(724): at
  251. > dalvik.system.NativeStart.main(Native
  252. > Method)
  253.  
  254. public class VoiceRecorder extends Activity {
  255. /** Called when the activity is first created. */
  256. private MediaRecorder mediaRecorder;
  257. boolean recording= false;
  258. private Button start; //Start Button to start the recordings
  259. private Button stop; // Stop button to stop the recordings
  260. @Override
  261. public void onCreate(Bundle savedInstanceState)
  262. {
  263. super.onCreate(savedInstanceState);
  264. setContentView(R.layout.voice_recorder);
  265. mediaRecorder = new MediaRecorder();
  266. start = (Button)findViewById(R.id.start);
  267.  
  268. //Activity when user click the start Button
  269. start.setOnClickListener(new View.OnClickListener() {
  270.  
  271. public void onClick(View v) {
  272. // TODO Auto-generated method stub
  273. settings();
  274. recordPrepare();
  275. mediaRecorder.start();
  276. recording = true;
  277.  
  278. }
  279.  
  280. });
  281.  
  282. //Activity when user click the stop Button
  283. stop = (Button)findViewById(R.id.stop);
  284. stop.setOnClickListener(new View.OnClickListener() {
  285.  
  286. public void onClick(View v) {
  287. // TODO Auto-generated method stub
  288.  
  289. if(recording)
  290. {
  291. mediaRecorder.stop();
  292. mediaRecorder.release();
  293. recording = false;
  294. settings();
  295. recordPrepare();
  296. }
  297.  
  298. }
  299. });
  300. }
  301. //Settings for Audio Recorder
  302. private void settings()
  303. {
  304. long name = new Date().getTime();
  305. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  306. mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
  307. mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
  308. mediaRecorder.setOutputFile("/sdcard/"+Long.toString(name)+".3gp");
  309. DataModel dbModel = new DataModel(this);
  310. Calendar cal = Calendar.getInstance();
  311. dbModel.insertMultimedia("/sdcard/"+Long.toString(name)+".3gp", Long.toString(name), cal);
  312. }
  313. //prepare the Environment for Recording
  314. private void recordPrepare()
  315. {
  316. try
  317. {
  318. mediaRecorder.prepare();
  319. }
  320. catch(IllegalStateException e)
  321. {
  322. e.printStackTrace();
  323.  
  324. }
  325. catch (IOException e)
  326. {
  327. e.printStackTrace();
  328. }
  329. }
Add Comment
Please, Sign In to add comment