Advertisement
Guest User

Untitled

a guest
May 31st, 2010
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. package simple.love;
  2.  
  3. import android.app.Activity;
  4. import android.content.ComponentName;
  5. import android.content.ServiceConnection;
  6. import android.media.AudioFormat;
  7. import android.media.AudioRecord;
  8. import android.media.MediaRecorder;
  9. import android.os.AsyncTask;
  10. import android.os.Bundle;
  11. import android.os.Handler;
  12. import android.os.IBinder;
  13. import android.os.Message;
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16. import android.widget.Button;
  17.  
  18. public class Simple extends Activity {
  19. SimpleService mBoundRecService;
  20. Button start,end;
  21. VolumeMeter volumeMeter;
  22. BackgroundRecorder recorder;
  23.  
  24. @Override
  25. public void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. setContentView(R.layout.main);
  28.  
  29.  
  30. volumeMeter = (VolumeMeter)findViewById(R.id.volume_meter);
  31. start = (Button) findViewById(R.id.sbut);
  32. end = (Button) findViewById(R.id.ebut);
  33. end.setOnClickListener(new OnClickListener(){
  34. public void onClick(View v) {
  35. recorder.isRecording = false;
  36. start.setVisibility(View.VISIBLE);
  37. end.setVisibility(View.GONE);
  38. }
  39. });
  40. start.setOnClickListener(new OnClickListener(){
  41. public void onClick(View v) {
  42. recorder = new BackgroundRecorder(new ClickHandler());
  43. recorder.execute();
  44. start.setVisibility(View.GONE);
  45. end.setVisibility(View.VISIBLE);
  46. }
  47. });
  48. }
  49. public class BackgroundRecorder extends AsyncTask<String,String,String> {
  50. Handler handler;
  51. boolean isRecording;
  52. BackgroundRecorder(Handler handler) {
  53. this.handler = handler;
  54. }
  55. @Override
  56. protected String doInBackground(String... params) {
  57. isRecording=true;
  58. int audioBuf = AudioRecord.getMinBufferSize(44100,
  59. AudioFormat.CHANNEL_CONFIGURATION_MONO,
  60. AudioFormat.ENCODING_PCM_16BIT) * 2;
  61.  
  62. // Set up the audio input.
  63. AudioRecord audioInput = new AudioRecord(MediaRecorder.AudioSource.MIC,
  64. 44100,
  65. AudioFormat.CHANNEL_CONFIGURATION_MONO,
  66. AudioFormat.ENCODING_PCM_16BIT,
  67. audioBuf);
  68. while(audioInput.getState() != AudioRecord.STATE_INITIALIZED){}
  69. audioInput.startRecording();
  70. byte[] read = new byte[audioBuf];
  71. while(isRecording) {
  72. audioInput.read(read, 0, read.length);
  73. Message powerMsg = new Message();
  74. float sigPower = SignalUtil.calcSigPower(read, 0, read.length);
  75. Bundle powerBundle = new Bundle();
  76. powerBundle.putFloat("power", sigPower);
  77. System.out.println("power" + sigPower);
  78. powerMsg.setData(powerBundle);
  79. handler.sendMessage(powerMsg);
  80. }
  81. audioInput.stop();
  82. return null;
  83. }
  84. }
  85.  
  86.  
  87. public class ClickHandler extends Handler {
  88. @Override
  89. public void handleMessage(Message msg) {
  90. volumeMeter.update(msg.getData().getFloat("power"));
  91. volumeMeter.invalidate();
  92. }
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement