はじめに
PowerAppsのアプリでボタンが押されたら何かの音(音楽)を再生したいことがあって調べたので忘れないようにメモ
#PowerAppsで音を再生する方法
メディアコントールを使う基本
Power Apps でのオーディオとビデオのコントロール
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/controls/control-audio-video
キャンバスアプリでオーディオコントロールを挿入します。
最初からサンプルミュージックが入っているので再生ボタンを押すと再生されます。
好みの音に変えたい場合はmp3などで音源を用意してアップロードします。
オーディオコントロールのMediaプロパティの内容をアップロードした音源のファイル名に変更できます。
##ボタンを押したら再生する方法1
ここからが本題です。メディアコントロールの再生ボタンではなく別のボタンを押したら再生する方法1
キャンバスにボタンを1つ挿入します。(ここではButton1と言う名前です)
メディアコントロールのStartプロパティを以下のように設定します。
If(Button1.Pressed,true,false)
これでボタンを押すと音の再生が始まります。
この方法簡単なのですが欠点があります。
・ボタンを離すと再生が止まる。再度押すと止まった場所から再生が始まる
・ボタンを押したときに状況によって再生する音の使い分けをしたい場合難しい(例えばクイズに正解したら「ピンポン」、間違ったら「ブー」のように)
このような問題を解決する為に次のように変数を使った再生が可能です。
##ボタンを押したら再生する方法2(変数を使う)
ボタンを押したときに変数を設定します。(ここではグローバル変数を使って解説しますがコンテキスト変数でも動作は同じです)
ボタンのOnSelectプロパティを以下のように変更します。
Set(playSound,true)
オーディオコントロールのStartプロパティを変更します。
If(playSound,true,false)
これでボタンを押すと音が最後まで再生されます。ボタンを押したときにif文などで条件を判断して再生する音を使い分けることも出来ます。
ここまでは簡単に出来たのですがハマった部分があります。
この設定だとボタンを押した1回目は音が再生されるのですが2回目以降はうんともすんとも音が出ません。
Resetプロパティとか色々いじったのですが解決せず。
ここで見つけたのがこのYoutube!神です。
https://www.youtube.com/watch?v=Tm_OtW1EQZ8&t=20s
MicrosoftのPowerApps担当のBrian Dangさんですね、ありがとうございます。
判明したのはここで使っている変数(playSound)の値をfalseに戻さないといけないという事です。
もう一つボタンを用意してset(playSound,false)のようにしても良いのですが、オーディオコントロールのOnEndプロパティを使う方法があります。OnEndには音の再生が終わった後の動作を書くことが出来ます。
Set(playSound,flase)
これで何度ボタンを押してもちゃんと再生されるようになりました。
皆様良いPoweAppsライフを!