private void EnableButtons(bool state)
 {
     WvlLogger.Log(LogType.TraceAll, "EnableButtons()");
     WvlLogger.Log(LogType.TraceValues, "isRecording : " + isRecording.ToString() + " - isPlaying : " + isPlaying.ToString());
     if (isRecording || isPlaying)
     {
         WvlLogger.Log(LogType.TraceAll, "EnableButtons : case 1 ");
         EnableButton(Resource.Id.btnStart, !state);
         EnableButton(Resource.Id.btnStop, state);
         if (hasRecord)
         {
             EnableButton(Resource.Id.btnPlay, !state);
         }
         else
         {
             EnableButton(Resource.Id.btnPlay, false);
         }
     }
     else
     {
         WvlLogger.Log(LogType.TraceAll, "EnableButtons : case 2 ");
         EnableButton(Resource.Id.btnStart, !state);
         EnableButton(Resource.Id.btnStop, state);
         if (hasRecord)
         {
             EnableButton(Resource.Id.btnPlay, !state);
             EnableButton(Resource.Id.btnSendWav, !state);
         }
         else
         {
             EnableButton(Resource.Id.btnPlay, state);
             EnableButton(Resource.Id.btnSendWav, state);
         }
     }
 }
        private void SetButtonHandlers()
        {
            WvlLogger.Log(LogType.TraceAll, "SetButtonHandlers()");
            ((Button)FindViewById(Resource.Id.btnStart)).Click += delegate
            {
                WvlLogger.Log(LogType.TraceAll, "Start Recording clicked");
                EnableButtons(true);
                StartRecording();
            };

            ((Button)FindViewById(Resource.Id.btnStop)).Click += delegate
            {
                WvlLogger.Log(LogType.TraceAll, "Start Recording clicked");
                EnableButtons(false);
                StopRecording();
            };

            ((Button)FindViewById(Resource.Id.btnSendWav)).Click += async delegate
            {
                WvlLogger.Log(LogType.TraceAll, "Send Wav clicked");
                EnableButtons(false);
                var wvlService = new WvlService();
                if (wavFileName != "")
                {
                    await wvlService.PostAudioFile(wavFileName);

                    //var res = await wvlService.PostTest();
                }
            };
        }
        //public void AppenData(int[] data)
        public void UpdateHeatmapDataSeries(int[] data)
        {
            WvlLogger.Log(LogType.TraceAll, "UpdateHeatmapDataSeries()");
            //WvlLogger.Log(LogType.TraceAll,"UpdateHeatmapDataSeries - Width : " + width.ToString() + " - Height : " + height.ToString());
            WvlLogger.Log(LogType.TraceValues, "UpdateHeatmapDataSeries() - Data before Array.Copy() : " + Data.Sum().ToString());

            var spectrogramSize = width * height;
            var fftSize         = data.Length;
            var offset          = spectrogramSize - fftSize;

            xChart2count = samplesUpdatedCount * data.Length;

            WvlLogger.Log(LogType.TraceValues, "UpdateHeatmapDataSeries() - set offset : " + offset.ToString());

            try
            {
                Array.Copy(Data, fftSize, Data, 0, offset);
                Array.Copy(data, 0, Data, offset, fftSize);
                WvlLogger.Log(LogType.TraceValues, "UpdateHeatmapDataSeries() - Data after Array.Copy() : " + Data.Sum().ToString());

                heatmapSeries.UpdateZValues(Data);
                WvlLogger.Log(LogType.TraceAll, "UpdateSamplesDataSeries() - UpdateZValues()");
            }
            catch (Exception e)
            {
                WvlLogger.Log(LogType.TraceExceptions, "UpdateSamplesDataSeries() - exception : " + e.ToString());
            }
        }
        private void DeleteTempFile()
        {
            WvlLogger.Log(LogType.TraceAll, "DeleteTempFile()");
            File file = new File(GetTempFilename());

            file.Delete();
        }
        private void WriteWaveFileHeader(FileOutputStream fos, long totalAudioLen,
                                         long totalDataLen, long longSampleRate, int channels, long byteRate)
        {
            WvlLogger.Log(LogType.TraceAll, "WriteWaveFileHeader()");
            try
            {
                byte[] header = new byte[44];

                header[0]  = (byte)'R'; // RIFF/WAVE header
                header[1]  = (byte)'I';
                header[2]  = (byte)'F';
                header[3]  = (byte)'F';
                header[4]  = (byte)(totalDataLen & 0xff);
                header[5]  = (byte)((totalDataLen >> 8) & 0xff);
                header[6]  = (byte)((totalDataLen >> 16) & 0xff);
                header[7]  = (byte)((totalDataLen >> 24) & 0xff);
                header[8]  = (byte)'W';
                header[9]  = (byte)'A';
                header[10] = (byte)'V';
                header[11] = (byte)'E';
                header[12] = (byte)'f'; // 'fmt ' chunk
                header[13] = (byte)'m';
                header[14] = (byte)'t';
                header[15] = (byte)' ';
                header[16] = 16; // 4 bytes: size of 'fmt ' chunk
                header[17] = 0;
                header[18] = 0;
                header[19] = 0;
                header[20] = 1; // format = 1
                header[21] = 0;
                header[22] = (byte)channels;
                header[23] = 0;
                header[24] = (byte)(longSampleRate & 0xff);
                header[25] = (byte)((longSampleRate >> 8) & 0xff);
                header[26] = (byte)((longSampleRate >> 16) & 0xff);
                header[27] = (byte)((longSampleRate >> 24) & 0xff);
                header[28] = (byte)(byteRate & 0xff);
                header[29] = (byte)((byteRate >> 8) & 0xff);
                header[30] = (byte)((byteRate >> 16) & 0xff);
                header[31] = (byte)((byteRate >> 24) & 0xff);
                header[32] = (byte)(2 * 16 / 8); // block align
                header[33] = 0;
                header[34] = (byte)RECORDER_BPP; // bits per sample
                header[35] = 0;
                header[36] = (byte)'d';
                header[37] = (byte)'a';
                header[38] = (byte)'t';
                header[39] = (byte)'a';
                header[40] = (byte)(totalAudioLen & 0xff);
                header[41] = (byte)((totalAudioLen >> 8) & 0xff);
                header[42] = (byte)((totalAudioLen >> 16) & 0xff);
                header[43] = (byte)((totalAudioLen >> 24) & 0xff);

                fos.Write(header, 0, 44);
            }
            catch (System.Exception e)
            {
                WvlLogger.Log(LogType.TraceExceptions, "WriteWaveFileHeader() - Exception: " + e.ToString());
            }
        }
        private void StartRecording()
        {
            WvlLogger.Log(LogType.TraceAll, "StartRecording()");

            //recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
            // RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize);

            recorder = new AudioRecord(AudioSource.Mic, RECORDER_SAMPLERATE, (ChannelIn)RECORDER_CHANNELS, (Android.Media.Encoding)RECORDER_AUDIO_ENCODING, bufferSize);

            int i = (int)recorder.State;

            if (i == 1)
            {
                recorder.StartRecording();
            }

            isRecording = true;

            /*
             * recordingThread = new Thread(new Runnable() {
             * @Override
             * public void run()
             * {
             *  writeAudioDataToFile();
             * }
             * },"AudioRecorder Thread");
             *      recordingThread.start();
             */

            recordingThread = new System.Threading.Thread(new ThreadStart(
                                                              WriteAudioDataToFile
                                                              ));
            recordingThread.Start();
        }
        public void PrepareHeatmapDataSeries(int[] data)
        {
            WvlLogger.Log(LogType.TraceAll, "PrepareHeatmapDataSeries()");
            int width  = 512;
            int height = 512;

            int[] Data = new int[width * height];

            //WvlLogger.Log(LogType.TraceAll,"UpdateHeatmapDataSeries - Width : " + width.ToString() + " - Height : " + height.ToString());
            WvlLogger.Log(LogType.TraceValues, "PrepareHeatmapDataSeries() - Data before Array.Copy() : " + Data.Sum().ToString());

            var spectrogramSize = width * height;
            var fftSize         = data.Length;
            var offset          = spectrogramSize - fftSize;

            WvlLogger.Log(LogType.TraceValues, "PrepareHeatmapDataSeries() - set offset : " + offset.ToString());

            try
            {
                Array.Copy(Data, fftSize, Data, 0, offset);
                Array.Copy(data, 0, Data, offset, fftSize);
                WvlLogger.Log(LogType.TraceValues, "PrepareHeatmapDataSeries() - Data after Array.Copy() : " + Data.Sum().ToString());

                //heatmapSeries.UpdateZValues(Data);
                samplesUpdated(this, new SamplesUpdatedEventArgs(Data));

                WvlLogger.Log(LogType.TraceAll, "PrepareHeatmapDataSeries() - UpdateZValues()");
            }
            catch (System.Exception e)
            {
                WvlLogger.Log(LogType.TraceExceptions, "PrepareHeatmapDataSeries() - exception : " + e.ToString());
            }
        }
示例#8
0
 private byte[] FileToByteArray2(string fullFilePath)
 {
     WvlLogger.Log(LogType.TraceAll, "FileToByteArray2()");
     byte[] bytes = System.IO.File.ReadAllBytes(fullFilePath);
     WvlLogger.Log(LogType.TraceValues, "FileToByteArray2() - bytes : " + bytes.Length.ToString());
     return(bytes);
 }
        //public int[] FFT(int[] y)
        public async Task <int[]> FFT(int[] y)
        {
            WvlLogger.Log(LogType.TraceAll, "FFT()");
            var input = new AForge.Math.Complex[y.Length];

            for (int i = 0; i < y.Length; i++)
            {
                input[i] = new AForge.Math.Complex(y[i], 0);
            }

            FourierTransform.FFT(input, FourierTransform.Direction.Forward);

            var result = new int[y.Length / 2];

            // getting magnitude
            for (int i = 0; i < y.Length / 2 - 1; i++)
            {
                var current = Math.Sqrt(input[i].Re * input[i].Re + input[i].Im * input[i].Im);
                current   = Math.Log10(current) * 10;
                result[i] = (int)current;
            }

            samplesUpdated(this, new SamplesUpdatedEventArgs(result));
            //PrepareHeatmapDataSeries(result);
            return(result);
        }
        private void UpdateFFTDataSeries(int[] fftValues)
        {
            WvlLogger.Log(LogType.TraceAll, "UpdateFFTDataSeries()");

            var xArray = new int[fftValues.Length];

            for (int i = 0; i < fftValues.Length; i++)
            {
                xArray[i] = i;
            }

            try
            {
                if (fftDataSeries.Count == 0)
                {
                    fftDataSeries.Append(xArray, fftValues);
                    WvlLogger.Log(LogType.TraceValues, "UpdateSamplesDataSeries() - xarray : " + xArray.Length.ToString() + " - fftValues : " + fftValues.Sum().ToString());
                }
                else
                {
                    fftDataSeries.UpdateRangeYAt(0, fftValues);
                    WvlLogger.Log(LogType.TraceValues, "UpdateSamplesDataSeries() - 0 - fftValues : " + fftValues.Sum().ToString());
                }
            }
            catch (Exception e)
            {
                WvlLogger.Log(LogType.TraceExceptions, "UpdateFFTDataSeries() - exception : " + e.ToString());
            }
        }
        protected async Task PlayAudioTrackAsync()
        {
            WvlLogger.Log(LogType.TraceAll, "PlayAudioTrackAsync()");
            WvlLogger.Log(LogType.TraceValues, "PlayAudioTrackAsync() - buffer.Length : " + buffer.Length.ToString());

            audioTrack = new AudioTrack(
                // Stream type
                Android.Media.Stream.Music,
                // Frequency
                44100,
                // Mono or stereo
                ChannelOut.Mono,
                // Audio encoding
                Android.Media.Encoding.Pcm16bit,
                // Length of the audio clip.
                buffer.Length,
                // Mode. Stream or static.
                AudioTrackMode.Stream);

            try
            {
                audioTrack.Play();
            }
            catch (Exception ex)
            {
                WvlLogger.Log(LogType.TraceAll, "PlayAudioTrackAsync() - audioTrack.Play() excetion : " + ex.ToString());
            }

            //await audioTrack.WriteAsync(buffer, 0, buffer.Length);
            await audioTrack.WriteAsync(buffer, 0, buffer.Length);
        }
示例#12
0
        public async Task PostAudioFile(string fileName = null)
        {
            WvlLogger.Log(LogType.TraceAll, "PostAudioFile() - fileName : " + fileName);
            using (HttpClient client = new HttpClient())
            {
                /*
                 * Stream stream = await File.OpenAsync(FileAccess.ReadWrite);
                 * var file = File.Open(fileName, FileMode.Open, FileAccess.Read);
                 */

                /*
                 * Java.IO.File file = new Java.IO.File(fileName);
                 * FileInputStream fileInputStream = new FileInputStream(file);
                 *
                 * var content = new MultipartFormDataContent();
                 * content.Add(new StreamContent(fileInputStream), "AudioFile", fileName);
                 * content.Add(new StreamContent())
                 *
                 * HttpResponseMessage response = await client.PostAsync(url, content);
                 *
                 * await response.Content.ReadAsStringAsync();
                 */

                try
                {
                    /*
                     * WvlLogger.Log(LogType.TraceAll,"PostAudioFile() - Create client.DefaultRequestHeaders");
                     * client.DefaultRequestHeaders.Clear();
                     * client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("multipart/form-data"));
                     * client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "multipart/form-data");
                     */
                    //client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");

                    WvlLogger.Log(LogType.TraceAll, "PostAudioFile() - MultipartFormDataContent");
                    fileName = FilesHelper.GetFilename();

                    byte[] b1 = FileToByteArray(fileName);
                    byte[] b2 = FileToByteArray2(fileName);


                    MultipartFormDataContent formData = new MultipartFormDataContent();
                    formData.Add(new StringContent("rotating_machine"), "machine_type");
                    formData.Add(new StringContent("My machine"), "machine_name");
                    formData.Add(new StringContent("My campaign"), "campaign_name");
                    formData.Add(new StringContent("Pierre-Christophe"), "user_name");
                    formData.Add(new ByteArrayContent(b1, 0, b1.Length), "audio_file", "audio.wav");


                    WvlLogger.Log(LogType.TraceAll, "PostAudioFile() - client.PostAsync()");
                    var responseObj = await client.PostAsync(url, formData).ConfigureAwait(false);

                    WvlLogger.Log(LogType.TraceAll, "PostAudioFile() - Response : " + responseObj.ToString());
                }
                catch (Exception ex)
                {
                    WvlLogger.Log(LogType.TraceExceptions, "PostAudioFile() - Exception : " + ex.ToString());
                }
            }
        }
        private void EnableButton(int id, bool isEnable)
        {
            WvlLogger.Log(LogType.TraceAll, "EnableButton()");
            var button = ((Button)FindViewById(id));

            WvlLogger.Log(LogType.TraceValues, "Button : " + button.ToString() + " - isEnable : " + isEnable.ToString());
            //((Button)FindViewById(id)).Enabled = isEnable;
            button.Enabled = isEnable;
        }
 public void StopPlaying()
 {
     WvlLogger.Log(LogType.TraceAll, "StopPlaying()");
     if (audioTrack != null)
     {
         audioTrack.Stop();
         audioTrack.Release();
         audioTrack = null;
     }
 }
示例#15
0
        private byte[] FileToByteArray(string fullFilePath)
        {
            WvlLogger.Log(LogType.TraceAll, "FileToByteArray()");
            FileStream fs = System.IO.File.OpenRead(fullFilePath);

            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
            fs.Close();
            WvlLogger.Log(LogType.TraceValues, "FileToByteArray() - bytes : " + bytes.Length.ToString());
            return(bytes);
        }
        //public async Task StopRecordAsync()
        public void StopRecord()
        {
            WvlLogger.Log(LogType.TraceAll, "StopRecordAsync()");
            endRecording = true;
            Thread.Sleep(250); // Give it time to drop out.

            /*
             * audioRecord.Stop();
             * audioRecord = null;
             */
        }
        private void WriteAudioDataToFile()
        {
            WvlLogger.Log(LogType.TraceAll, "WriteAudioDataToFile()");

            byte[]           data     = new byte[bufferSize];
            string           filename = GetTempFilename();
            FileOutputStream fos      = null;

            try
            {
                fos = new FileOutputStream(filename);
            }
            catch (FileNotFoundException e)
            {
                // TODO Auto-generated catch block
                //e.printStackTrace();
                WvlLogger.Log(LogType.TraceExceptions, e.ToString());
            }

            int read = 0;

            if (null != fos)
            {
                while (isRecording)
                {
                    read = recorder.Read(data, 0, bufferSize);

                    //if (AudioRecord.ERROR_INVALID_OPERATION != read)
                    if ((int)RecordStatus.ErrorInvalidOperation != read)
                    {
                        try
                        {
                            fos.Write(data);
                        }
                        catch (IOException e)
                        {
                            //e.printStackTrace();
                            WvlLogger.Log(LogType.TraceExceptions, "WriteAudioDataToFile - Exception on os.Write() : " + e.ToString());
                        }
                    }
                }

                try
                {
                    fos.Close();
                }
                catch (IOException e)
                {
                    //e.printStackTrace();
                    WvlLogger.Log(LogType.TraceExceptions, "WriteAudioDataToFile - Exception on os.Close() : " + e.ToString());
                }
            }
        }
        private void AudioService_samplesUpdated(object sender, System.EventArgs e)
        //private async void AudioService_samplesUpdated(object sender, System.EventArgs e)
        {
            WvlLogger.Log(LogType.TraceAll, "AudioService_samplesUpdated()");

            var audioService = (WavAudioService)sender;

            if (token.IsCancellationRequested)
            {
                WvlLogger.Log(LogType.TraceAll, "AudioService_samplesUpdated() - token.IsCancellationRequested");
                audioService.StopRecording();
                return;
            }

            var arguments = e as SamplesUpdatedEventArgs;

            if (arguments != null)
            {
                WvlLogger.Log(LogType.TraceAll, "AudioService_samplesUpdated() - arguments != null");
                var samples = arguments.UpdatedSamples;

                /*
                 * //if (samples.Length < samplesCount)
                 * if (samples.Length < (samplesCount / 2))
                 * {
                 *  WvlLogger.Log(LogType.TraceValues, "AudioService_samplesUpdated() - samples.Length < samplesCount - sample.Length : " + samples.Length.ToString() + " samplesCount : " + samplesCount.ToString());
                 *  return;
                 * }
                 */

                WvlLogger.Log(LogType.TraceValues, "AudioService_samplesUpdated() - sample.Length : " + samples.Length.ToString());


                /*
                 * //samplesDataSeries.YValues = samples;
                 * //UpdateSamplesDataSeries(samples);
                 *
                 * var fftValues = await audioService.FFT(samples);
                 *
                 * //fftDataSeries.YValues = fftValues;
                 * //UpdateFFTDataSeries(fftValues);
                 */
                //heatmapSeries.AppenData(fftValues);
                //UpdateHeatmapDataSeries(fftValues);
                //UpdateHeatmapDataSeries(samples);


                System.Threading.Thread thread = new System.Threading.Thread(() => UpdateHeatmapDataSeries(samples));
                thread.Priority = System.Threading.ThreadPriority.Highest;
                thread.Start();
            }
        }
        //void OnNext()
        async void OnNext()
        {
            WvlLogger.Log(LogType.TraceAll, "OnNext()");

            /*
             * short[] audioBuffer = new short[2048];
             * //short[] audioBuffer = new short[1024];
             * //audioRecord.Read(audioBuffer, 0, audioBuffer.Length);
             *
             * audioRecordCharts.Read(audioBuffer, 0, audioBuffer.Length);
             * WvlLogger.Log(LogType.TraceValues, "OnNext() - audioRecordCharts.Read() - audioBUffer : " + audioBuffer.Length.ToString());
             * int[] result = new int[audioBuffer.Length];
             * for (int i = 0; i < audioBuffer.Length; i++)
             * {
             *  result[i] = (int)audioBuffer[i];
             * }
             * bufferCount++;
             * if (cumulBufferShort != null)
             *  cumulBufferShort = ArraysHelper.Combine(cumulBufferShort, audioBuffer);
             * else
             *  cumulBufferShort = ArraysHelper.Init(audioBuffer);
             *
             * samplesUpdated(this, new SamplesUpdatedEventArgs(result));
             */

            //byte[] audioBufferDebug = new byte[2048];
            byte[] audioBufferDebug = new byte[1024];
            bufferCount++;
            audioRecord.Read(audioBufferDebug, 0, audioBufferDebug.Length);
            if (cumulBufferByte != null)
            {
                cumulBufferByte = ArraysHelper.Combine(cumulBufferByte, audioBufferDebug);
            }
            else
            {
                cumulBufferByte = ArraysHelper.Init(audioBufferDebug);
            }

            int[] bytesAsInts = Array.ConvertAll(audioBufferDebug, c => (int)c);

            samplesUpdated(this, new SamplesUpdatedEventArgs(bytesAsInts));


            /*
             * samplesUpdatedThread = new Thread(() => samplesUpdated(this, new SamplesUpdatedEventArgs(bytesAsInts)));
             * samplesUpdatedThread.Start();
             */

            //var res = FFT(bytesAsInts);
        }
        public void StopRecording()
        {
            WvlLogger.Log(LogType.TraceAll, "StopRecording()");

            if (null != audioRecord)
            {
                isRecording = false;
                if (audioRecord.State == State.Initialized)
                {
                    audioRecord.Stop();
                }
                audioRecord.Release();

                audioRecord     = null;
                recordingThread = null;
            }

            /*
             * if (null != audioRecordCharts)
             * {
             *  if (audioRecordCharts.State == State.Initialized)
             *  {
             *      audioRecordCharts.Stop();
             *
             *      // Write file after recording
             *      isWriting = true;
             *      WriteAudioDataToFileAfterRecording();
             *  }
             *  audioRecordCharts.Release();
             *
             *  audioRecordCharts = null;
             *  chartsThread = null;
             *
             *  samplesUpdatedThread = null;
             * }
             */

            /*
             * if (audioRecordCharts.State == State.Initialized)
             * {
             *  audioRecordCharts.Stop();
             *  WriteAudioDataToFileAfterRecording();
             * }
             * audioRecordCharts.Release();
             */

            CopyWaveFile(GetTempFilename(), GetFilename());
            //DeleteTempFile();
        }
示例#21
0
        /// <summary>
        /// Another test of WebService call
        /// (https://stackoverflow.com/questions/21569770/wrong-content-type-header-generated-using-multipartformdatacontent)
        /// </summary>
        /// <returns></returns>
        public async Task <string> PostTest()
        {
            WvlLogger.Log(LogType.TraceAll, "PostTest()");
            string servResp = "";
            string boundary = "----CustomBoundary" + DateTime.Now.Ticks.ToString("x");

            WvlLogger.Log(LogType.TraceAll, "PostTest() - MultipartFormDataContent");
            using (var content = new MultipartFormDataContent(boundary))
            {
                WvlLogger.Log(LogType.TraceValues, "PostTest() - MultipartFormDataContent.Headers : " + content.Headers.Count().ToString() + " // " + content.Headers.ToString());
                content.Headers.Remove("Content-Type");
                content.Headers.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=" + boundary);
                WvlLogger.Log(LogType.TraceValues, "PostTest() - MultipartFormDataContent.Headers : " + content.Headers.Count().ToString() + " // " + content.Headers.ToString());

                content.Add(new StringContent("rotating_machine"), "machine_type");
                content.Add(new StringContent("My machine"), "machine_name");
                content.Add(new StringContent("My campaign"), "campaign_name");
                content.Add(new StringContent("Pierre-Christophe"), "user_name");

                WvlLogger.Log(LogType.TraceAll, "PostTest() - HttpClientHandler");
                HttpClientHandler handler = new HttpClientHandler();
                var cookieContainer       = new CookieContainer();
                handler.CookieContainer = cookieContainer;

                WvlLogger.Log(LogType.TraceAll, "PostTest() - HttpRequestMessage");
                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://51.254.131.100/api/recordings/");
                request.Headers.ExpectContinue = false;
                request.Content = content;

                try
                {
                    WvlLogger.Log(LogType.TraceAll, "PostTest() - HttpClient");
                    var httpClient = new HttpClient(handler);
                    HttpResponseMessage response = await httpClient.SendAsync(request);

                    WvlLogger.Log(LogType.TraceValues, "PostTest() - HttpClient.SendAsync() - response : " + response.ToString());
                    response.EnsureSuccessStatusCode();

                    servResp = await response.Content.ReadAsStringAsync();
                }
                catch (Exception ex)
                {
                    WvlLogger.Log(LogType.TraceExceptions, "PostTest() - Exception : " + ex.ToString());
                }
            }

            return(servResp);
        }
        private void CopyWaveFile(string inFilename, string outFilename)
        {
            WvlLogger.Log(LogType.TraceAll, "CopyWaveFile()");

            FileInputStream  fis = null;
            FileOutputStream fos = null;


            long totalAudioLen  = 0;
            long totalDataLen   = totalAudioLen + 36;
            long longSampleRate = RECORDER_SAMPLERATE;
            //int channels = 2;
            int  channels = 1;
            long byteRate = RECORDER_BPP * RECORDER_SAMPLERATE * channels / 8;

            byte[] data = new byte[bufferSize];

            try
            {
                fis           = new FileInputStream(inFilename);
                fos           = new FileOutputStream(outFilename);
                totalAudioLen = fis.Channel.Size();
                totalDataLen  = totalAudioLen + 36;

                WvlLogger.Log(LogType.TraceValues, "CopyWaveFile() - File size: " + totalDataLen.ToString());

                WriteWaveFileHeader(fos, totalAudioLen, totalDataLen,
                                    longSampleRate, channels, byteRate);

                while (fis.Read(data) != -1)
                {
                    fos.Write(data);
                }

                fis.Close();
                fos.Close();
            }
            catch (Java.IO.FileNotFoundException e)
            {
                //e.printStackTrace();
                WvlLogger.Log(LogType.TraceExceptions, "CopyWaveFile() - FileNotFoundException: " + e.ToString());
            }
            catch (Java.IO.IOException e)
            {
                //e.printStackTrace();
                WvlLogger.Log(LogType.TraceExceptions, "CopyWaveFile() - IOException: " + e.ToString());
            }
        }
示例#23
0
        void OnNext()
        {
            WvlLogger.Log(LogType.TraceAll, "OnNext()");
            //short[] audioBuffer = new short[2048];
            short[] audioBuffer = new short[1024];
            WvlLogger.Log(LogType.TraceValues, "OnNext() - audioRecord.Read - audioBuffer.Length : " + audioBuffer.Length.ToString());
            audioRecord.Read(audioBuffer, 0, audioBuffer.Length);

            int[] result = new int[audioBuffer.Length];

            for (int i = 0; i < audioBuffer.Length; i++)
            {
                result[i] = (int)audioBuffer[i];
            }

            samplesUpdated(this, new SamplesUpdatedEventArgs(result));
        }
        private string GetFilename()
        {
            WvlLogger.Log(LogType.TraceAll, "GetFilename()");
            string filepath = Android.OS.Environment.ExternalStorageDirectory.Path;
            File   file     = new File(filepath, AUDIO_RECORDER_FOLDER);

            if (!file.Exists())
            {
                file.Mkdirs();
            }

            var result = (file.AbsolutePath + "/" + DateTime.Now.Millisecond.ToString() + AUDIO_RECORDER_FILE_EXT_WAV);

            wavFileName = result;
            WvlLogger.Log(LogType.TraceAll, "GetFilename() : " + result);
            return(result);
        }
        void OnNext()
        {
            WvlLogger.Log(LogType.TraceAll, "OnNext()");
            short[] audioBuffer = new short[2048];
            audioRecord.Read(audioBuffer, 0, audioBuffer.Length);

            int[] result = new int[audioBuffer.Length];
            for (int i = 0; i < audioBuffer.Length; i++)
            {
                result[i] = (int)audioBuffer[i];
            }

            // stop button debug

            /*
             * samplesUpdated(this, new SamplesUpdatedEventArgs(result));
             */
        }
        private void InitFirstChart()
        {
            WvlLogger.Log(LogType.TraceAll, "InitFirstChart()");

            var xAxis = new NumericAxis(this)
            {
                AutoRange          = AutoRange.Always,
                DrawMajorBands     = false,
                DrawLabels         = false,
                DrawMajorTicks     = false,
                DrawMinorTicks     = false,
                DrawMajorGridLines = false,
                DrawMinorGridLines = false,
                AxisTitle          = "Time (seconds)"
            };

            var yAxis = new NumericAxis(this)
            {
                AutoRange          = AutoRange.Never,
                VisibleRange       = new DoubleRange(short.MinValue, short.MaxValue),
                DrawMajorBands     = false,
                DrawLabels         = false,
                DrawMajorTicks     = false,
                DrawMinorTicks     = false,
                DrawMajorGridLines = false,
                DrawMinorGridLines = false,
                AxisTitle          = "Freq (hZ)"
            };

            samplesDataSeries = new XyDataSeries <int, int> {
                FifoCapacity = new Java.Lang.Integer(500000)
            };
            var rs = new FastLineRenderableSeries {
                DataSeries = samplesDataSeries
            };

            using (Surface.SuspendUpdates())
            {
                Surface.XAxes.Add(xAxis);
                Surface.YAxes.Add(yAxis);
                Surface.RenderableSeries.Add(rs);
            }
        }
        public async Task StartPlaying()
        {
            WvlLogger.Log(LogType.TraceAll, "StartPlaying()");

            string       filePath     = GetTempFilename();
            FileStream   fileStream   = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            BinaryReader binaryReader = new BinaryReader(fileStream);
            long         totalBytes   = new System.IO.FileInfo(filePath).Length;

            buffer = binaryReader.ReadBytes((Int32)totalBytes);
            fileStream.Close();
            fileStream.Dispose();
            binaryReader.Close();

            WvlLogger.Log(LogType.TraceValues, "StartPlaying() - " +
                          " fileStream: " + fileStream.Name +
                          " totalBytes: " + totalBytes.ToString());
            await PlayAudioTrackAsync();
        }
示例#28
0
        async Task Post3(string fileName)
        {
            WvlLogger.Log(LogType.TraceAll, "Post3()");
            using (var client = new HttpClient())
            {
                using (var content = new MultipartFormDataContent())
                {
                    WvlLogger.Log(LogType.TraceAll, "Post3() - KeyValuePair");
                    var values = new []
                    {
                        new KeyValuePair <string, string>("rotating_machine", "machine_type"),
                        new KeyValuePair <string, string>("My machine", "machine_name"),
                        new KeyValuePair <string, string>("My campaign", "campaign"),
                        new KeyValuePair <string, string>("Pierre-Christophe", "user_name"),
                    };

                    foreach (var keyValuePair in values)
                    {
                        content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
                    }

                    WvlLogger.Log(LogType.TraceAll, "Post3() - fileContent");
                    var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
                    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "audio.wav"
                    };
                    content.Add(fileContent);

                    try
                    {
                        WvlLogger.Log(LogType.TraceAll, "Post3() - PostAsync()");
                        var result = client.PostAsync(url, content).Result;
                        WvlLogger.Log(LogType.TraceValues, "Post3() - result : " + result.ToString());
                    }
                    catch (Exception ex)
                    {
                        WvlLogger.Log(LogType.TraceExceptions, "Post3() - Exception : " + ex.ToString());
                    }
                }
            }
        }
        private void UpdateSamplesDataSeries(int[] dataSeries)
        {
            WvlLogger.Log(LogType.TraceAll, "UpdateSamplesDataSeries()");

            var xArray = new int[dataSeries.Length];

            for (int i = 0; i < dataSeries.Length; i++)
            {
                xArray[i] = lastElement++;
            }
            try
            {
                samplesDataSeries.Append(xArray, dataSeries);
                WvlLogger.Log(LogType.TraceValues, "UpdateSamplesDataSeries() - xarray : " + xArray.Length.ToString() + " - dataSeries : " + dataSeries.Sum().ToString());
            }
            catch (Exception e)
            {
                WvlLogger.Log(LogType.TraceExceptions, "UpdateSamplesDataSeries() - exception : " + e.ToString());
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_debugaudio_towav);

            SetButtonHandlers();
            EnableButtons(false);

            /*
             * bufferSize = AudioRecord.getMinBufferSize(8000,
             *  AudioFormat.CHANNEL_CONFIGURATION_MONO,
             *  AudioFormat.ENCODING_PCM_16BIT);
             */

            bufferSize = AudioRecord.GetMinBufferSize(8000,
                                                      Android.Media.ChannelIn.Mono,
                                                      Android.Media.Encoding.Pcm16bit);
            WvlLogger.Log(LogType.TraceAll, "bufferSize : " + bufferSize.ToString());
        }