MediaCaptureで音声を録音するには

初期化 WindowsRuntimeで録画、録音するにはMediaCaptureを使います。 MediaCapture mediaCapture = null; DeviceInformationCollectionからオーディオキャプチャデバイスを取得し、MediaCaptureのInitializeAsyncメソッドで初期化を行います。 その際、MediaCaptureInitializationSettingsクラスでオーディオデバイスのIDを渡します。 DeviceInformationCollection audioDevices = await DeviceInformation.FindAllAsync(DeviceClass.AudioCapture); DeviceInformation audioId = audioDevices.ElementAt(0); var setting = new MediaCaptureInitializationSettings(); setting.AudioDeviceId = audioId.Id; mediaCapture = new MediaCapture(); await mediaCapture.InitializeAsync(setting);   録音開始 StorageFileにWavファイルとして保存する場合は、MediaCaptureのStartRecordToStorageFileAsyncメソッドにMediaEncodingProfileクラスのCreateWavメソッドを渡します。 この命令が実行されたあと、録音開始まで少し時間が空きます。 StorageFile recordFile=await KnownFolders.MusicLibrary.CreateFileAsync(“record.wav”,CreationCollisionOption.ReplaceExisting); await mediaCapture.StartRecordToStorageFileAsync(MediaEncodingProfile.CreateWav(AudioEncodingQuality.Medium),recordFile);   録音終了 録音を終了するには MediaCaptureのStopRecordAsyncメソッドを呼びます。 await mediaCapture.StopRecordAsync();   マニフェストファイルの編集 今回はミュージックライブラリとマイク、Webカメラは使いませんがチェックしないとMediaCaptureを初期化できないためチェックします。

ボタンを追加する

Button Xamarin.Androidでボタンコントロールを追加するには.axmlファイルを開いてToolBoxからボタンを画面にドラッグアンドドロップします。 プロパティウインドウからidを@+id/button1としましょう。   次にMainActivity.csファイルからボタンを参照します。 FindViewByIdメソッドを使ってButtonを取得します。引数に先ほどidプロパティに指定した文字列が指定できます。 idプロパティに指定した文字列が出ない場合ビルドしなおしてください。 protected override void OnCreate (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<Button> (Resource.Id.button1); button.Click += button1_onClick; } ボタンが取得できたらボタンのイベントハンドラとメソッドを紐付けます。 Clickイベントにbutton1_onClickメソッドを追加して、トースト通知を表示してみます。 private void…

ボタンを追加する

Button Xamarin.iOSでボタンを追加するにはToolBoxからButtonコントロールをUIに配置します。 .Storyboardの拡張子のファイルを開き、右上のToolboxからButtonコントロールを画面にドラッグアンドドロップします。   そしたら右下にあるプロパティウインドウからNameプロパティをbutton1にしましょう。   イベントを追加する ボタンを配置できたら、配置したボタンをダブルクリックします。 すると、ViewContorollerという名前の.csファイルに移動するのでEnterをおします。 新しくbutton1_TouchUpInsideという名前のメソッドが作成されました。   そのメソッドの中にUIAlertViewでアラートを表示してみましょう。 partial void button1_TouchUpInside (UIButton sender) { UIAlertView view=new UIAlertView(“Message”,”Hello,World!”,null,”Cancel”); view.Show(); } ボタンを押すとアラートを表示することができました。   サンプルコード https://github.com/garicchi/XamarinSample

NFCで近距離無線通信するには

ProximityDevice WindowsRuntimeのNFCについては、ProximityDeviceAPIを使います。 ProximityDevice.GetDefaultメソッドでNFC通信できるデバイスを取得します。   ProximityDevice device= ProximityDevice.GetDefault();   近接センサーにデバイスが近づいたときは、DeviceArivedイベントが、近接センサーからデバイスが離れたときはDeviceDepartedイベントが発生します。 DeviceArrivedイベントとDeviceDepartedイベントの登録を行い、各イベントに登録したメソッド内ではデバイスIDとメッセージを表示します。 device.DeviceArrived +=Device_DeviceArrived; device.DeviceDeparted+=Device_DeviceDeparted;   private async void Device_DeviceArrived(ProximityDevice sender) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { MessageDialog dialog = new MessageDialog(“DeviceArrived ” + sender.DeviceId); await dialog.ShowAsync(); }); } private async void Device_DeviceDeparted(ProximityDevice sender) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,async()=> { MessageDialog dialog = new MessageDialog(“DeviceDeparted ” + sender.DeviceId); await…

ファイル検索を行うには

QueryOptions StorageFolder内のファイルを検索するには、検索条件としてQueryOptionsを指定する必要があります。   QueryOptionsはさまざまなプロパティがありますが、今回はApplicationSearchFilerとFileTypeFilterを使います。 ApplicationSearchFilterには高度なクエリ構文(AQS)を指定し、ファイル名検索を行います。 FileTypeFilterはファイルタイプによる検索です。 QueryOptions options = new QueryOptions(); options.ApplicationSearchFilter = textQuery.Text; options.FileTypeFilter.Add(“.jpg”); options.FileTypeFilter.Add(“.png”); ファイル名はテキストボックスから受け取った値で、ファイルタイプはjpgとpngを検索してみましょう。   検索対象のフォルダはピクチャライブラリとします。マニフェストファイルを編集して画像ライブラリにチェックをいれましょう。   StorageFolderのCreateFileQueryWithOptionsメソッドで検索設定を行います。 その後StorageFileQueryResultのGetFileAsyncメソッドを実行することで検索を行います。 //検索フォルダーをピクチャライブラリに StorageFolder folder = KnownFolders.PicturesLibrary; //検索条件設定 StorageFileQueryResult result=folder.CreateFileQueryWithOptions(options); //ファイル列挙 IReadOnlyList<StorageFile> files =await result.GetFilesAsync(); //リストボックスにセット listBox.ItemsSource = files.Select(q=>q.Name); ファイル検索ができました。