- Forum posts: 1
Jan 7, 2016, 2:35:46 PM via Website
Jan 7, 2016 2:35:46 PM via Website
I could run the example on my emulator without problems. github.com/xamarin/monodroi...ple_WorkingWithAudio/Example_WorkingWithAudio
But i want to make my own project using this code belows and i can't make it works . When i press the Record button the app stops and gives error.
CODE:
public class MainActivity : Activity
{
bool isrecording =false;
AudioRecord audRecorder =null;
byte[] audioBuffer =null;
staticstring filePath ="/data/data/Example_WorkingWithAudio.Example_WorkingWithAudio/files/testAudio.mp4";
protectedoverridevoidOnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button =FindViewById(Resource.Id.MyButton);//RECORD BUTTON
button.Click+=delegate{
isrecording =true;
this.RecordAudio();
};
Button button2 =FindViewById(Resource.Id.MyButton2);//STOP BUTTON
button2.Click+=delegate{
isrecording =false;
audRecorder.Stop();
audRecorder.Release();
};
Button button3 =FindViewById(Resource.Id.MyButton3);//PLAYBACK BUTTON
button3.Click+=delegate{
byte[] fileData =File.ReadAllBytes(filePath);
this.PlayAudioTrack(fileData);
};
}
privatevoidRecordAudio()
{
var fileStream = new FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
audioBuffer =newbyte[8000];
audRecorder =newAudioRecord(
// Hardware source of recording.
AudioSource.Mic,
// Frequency
11025,
// Mono or stereo
ChannelIn.Mono,
// Audio encoding
Android.Media.Encoding.Pcm16bit,
// Length of the audio clip.
audioBuffer.Length
);
audRecorder.StartRecording();
while(isrecording){
try
{
// Keep reading the buffer while there is audio input.
int numBytes = audRecorder.Read(audioBuffer,0, audioBuffer.Length);
fileStream.Write(audioBuffer,0, numBytes);
// Write out the audio file.
}catch(Exception ex){
Console.Out.WriteLine(ex.Message);
break;
}
}
fileStream.Close();
}
voidPlayAudioTrack(byte[] audioBuffer)
{
AudioTrack audioTrack =newAudioTrack(
// Stream type
Android.Media.Stream.Music,
// Frequency
11025,
// Mono or stereo
ChannelOut.Mono,
// Audio encoding
Android.Media.Encoding.Pcm16bit,
// Length of the audio clip.
audioBuffer.Length,
// Mode. Stream or static.
AudioTrackMode.Stream);
audioTrack.Play();
audioTrack.Write(audioBuffer,0, audioBuffer.Length);
}
}
Help would be appreciated.
Recommended editorial content
With your consent, external content is loaded here.
By clicking on the button above, you agree that external content may be displayed to you. Personal data may be transmitted to third-party providers in the process. You can find more information about this in our Privacy Policy.