AudioRecoder 外部オブジェクトは、オーディオをファイルとしてレコーディングおよび保存するのに役立つシンプルな API です。
デバイスが現在レコーディング中か (True) レコーディング中でないか (False) を示します。
注: この API は、バッチモードで呼び出される 2 つのメソッドを定義します (ユーザーに表示される UI はありません)。
オーディオ レコーディング セッションを開始し、操作が成功したかどうかを返します (ほかのレコーディングが進行中の場合は False を返します)。レコーディングしたオーディオはローカルファイルに保存されます。ファイルのパスは Stop メソッド (下を参照) で返され、オーディオベースの項目属性または変数に割り当てることができます。
現在のオーディオ レコーディング セッションを停止し、オーディオファイルが保存されたファイルのパスを返します。このメソッドに対する複数呼び出しは無効になります。
なし
注: この例には、UI のカスタマイズ処理の詳細は含まれていません。
コミュニティチャットのシンプルなシナリオを考えてみます。現在、すべてのメッセージングシステムには、主に 2 つのコンポーネントがあります。
- メッセージは画面の下から上に向かって表示されます。この動作は、グリッドレベルで [ Inverse Loading ] プロパティを使用して実現できます。
- エンドユーザーがテキストメッセージを入力し、画面上のボタンをタップして送信するための、テキストフィールドがあります。これは、Character データタイプと、それに続く動作の Button コントロールに変数を含めることで設定できます。
Event 'SendTextMessage'
Composite
SendTextMessage(&Text,&Username)
Refresh
EndComposite
EndEvent
基本的に、SendTextMessage プロシージャーは送信メッセージ (&Text 変数、inout) とユーザー名 (&Username 変数) を受け取り、必要な確認を行ってから、そのメッセージを送信し、&Text 変数をクリアします。
ここで、3 番目のコンポーネントであるオーディオメッセージの送信機能を組み込みます。
この機能を実装するには、2 つの操作が必要です。
- オーディオメッセージのレコーディング
レコーディングプロセスを開始し、レコーディングセッションを開始できなかったときにユーザーに通知するボタンを含めます。
Event 'StartRecording'
Composite
&HasSuccess = AudioRecorder.Start()
If not &HasSuccess
msg("For some reason we couldn't start recording")
EndIf
EndComposite
EndEvent
操作が正常に完了したらこのボタンは非表示になり、現在のレコーディングプロセスを停止する別のボタンが表示される必要があります (次のポイントで説明します)。
- レコーディングしたオーディオメッセージの送信
エンドユーザーがレコーディングを停止したら、現在のオーディオメッセージを送信します。
Event 'StopRecording'
Composite
&IsRecording = AudioRecorder.IsRecording
If &IsRecording
&FilePath = AudioRecorder.Stop()
&Audio.AudioURI = &FilePath
SendAudioMessage(&Audio,&Username)
Refresh
EndIf
EndComposite
EndEvent
SendAudioMessage プロシージャーは SendTextMessage プロシージャーに似ています。このボタンは、エンドユーザーが [ StartRecording ] ボタンをタップすると表示されるものです。そのため、レコーディングを開始していない状態で StopRecording イベントを呼び出すことはできません。しかし、ここでは、空のオーディオメッセージを送信する問題を回避するために、検証を含めます (オーディオレコーディングがない場合、Stop メソッドが機能しないため)。また、操作が成功した場合はこのボタンを非表示にし、エンドユーザーが新しいレコーディングを開始するためのボタンを表示する必要があります。
これらの概念を適用した後、分かりやすいカスタム UI を追加することで、次のような結果が得られます。
- オーディオファイルは MPEG-4 形式で保存されます (AAC エンコーダーを使用)。この形式は、サポート対象のすべてのプラットフォームと互換性があります。
- アクティブなオーディオ レコーディング セッションがあるときにアプリケーションを閉じると、そのレコーディングは停止され、オーディオファイルは破棄されます。
- レコーディングしたオーディオは、Audio 外部オブジェクトのメソッドを使用して再生できます。
対応しているプラットフォーム: |
スマートデバイス (iOS、Android) |
この外部オブジェクトは、GeneXus 15 Upgrade 4 以降で利用できます。
|