質問編集履歴

1 マニフェストについて追記

mzks3254

mzks3254 score 6

2019/01/15 13:39  投稿

Xamarin.Androidでのマイク入力の拾い方
Xamarin.Androidでのマイク入力を行おうとしています。
AudioRecoderは以下のように定義していますが、OnPeriodicNotification()が最初に十数回呼ばれるだけでその後呼ばれなくなってしまいます。
考え得る原因として何かアドバイスがいただけたら幸いです。
・StartRecording()後に空読みしても状況は変わりませんでした。
・AudioRecordのコンストラクタにAudioSource.Mic以外のものを渡してもダメでした。
・バッファサイズも変更してみました。
・マニフェストにマイクの使用権限は追加済みです。  
```Xamarin
public class とあるクラス
{
   public void とあるメソッド()
   {
       int bufSize = AudioRecord.GetMinBufferSize(8000,
                       ChannelIn.Mono, Android.Media.Encoding.Pcm16bit);
       myAR = new AudioRecord(AudioSource.Mic, 8000,
                       ChannelIn.Mono,
                       Android.Media.Encoding.Pcm16bit, bufSize);
       myAR.SetRecordPositionUpdateListener(new OnRecordPositionUpdateListener());
       myAR.SetPositionNotificationPeriod(bufSize / 10);
       myAR.StartRecording();
   }
}
public class OnRecordPositionUpdateListener : Java.Lang.Object, AudioRecord.IOnRecordPositionUpdateListener
   public void OnPeriodicNotification(AudioRecord myAR)
   {
       ・・・・・
       byte[] audioBuf = new byte[bufSize / 10];
       myAR.Read(audioBuf, 0, bufSize / 10);
       ・・・・・
   }
}
```
  • Android

    8028 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Xamarin

    694 questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る