未分類
任意の時間帯になると自動で再生し、指定の時間一時停止できるメトロノーム
人間というのはどうもやる気を生み出すことはできず
システムに沿ってやり始めた方が良いと聞きました。
まぁ、薄々わかっちゃいましたけど
大学の教授とかが言ってくれると
広まってくれるのでありがたいですよね。
さて、ということで早速、
やる気が出ないのだったらもういっそ
時報が鳴ったら筆取るようなシステム作っちゃおうとですね。
指定の時間帯、指定の音楽(メトロノーム)を流しつつ
5分毎に時報音を流し、かつ、Bluetoothスピーカーの
再接続ボタンを押すと、任意の分数だけ
再生を一時停止できるアプリを作ってみました。
導入は自己責任ですので
セキュリティ的に心配でしたら
下記のタスク参考にして
自分で組んでくださいませ。
用意するもの
①使わなくなったスマホ(android8以上)
②本アプリ(もしくはtasker)
https://www.dropbox.com/scl/fi/dzxxme1hdc4et451bm3bt
③bluetoothスピーカー
④メトロノーム&時報音
https://www.dropbox.com/scl/fi/7uifj5ob7azfm9qvtoed2
①Bluetoothスピーカーとスマホを接続して
スマホに本アプリ(もしくはtasker)と、時報音を入れます。
②要求される権限(音声再生するのでファイル権限と
bluetooth検索するので位置権限と
シーン表示するので画面の上書き表示)を承諾します
③アプリの自動起動と、バックグラウンド実行をオンにします
④時間帯指定して、音声ファイル指定して、bluetooth指定して終了。
bluetoothスピーカーの再接続ボタンを押すことで
音声停止タスクが作動し、
待機時間で設定した分、メトロノームの再生が止まります。
(長押しで接続/再接続の切り替えでしたら、
switchbotとかの指ボタン使って
物理的に長押しすればよろしいかと)
60bpmのメトロノームで流れ去っていく今を実感し
その過ぎ去った1秒が、もう二度と還ってこないことを惜しみつつ
5分起きに鳴る時報音に心を委ねることで
「やる気」とやらを動かしてあげてください。
では「good lack」ということで、
以下タスクの内容です。
────────────────────────────
プロジェクト: 時報
Profiles
プロファイル: 無名
状態: でない 実行中のタスク [ 名前:停止 ]
時刻: 開始 %Start 繰返し 30分 終了 %End
状態: 変数の値 [ %Start 値あり & %End 値あり ]
開始 タスク: 再生
設定:既存タスクを破棄する
A1: 音楽再生 / Music Play [
ファイル: %Music
始点: 0
ループ: オン
出力先: メディア音
すぐに次のタスクに進む: オン ]
If 条件開始 [ %Music 値あり ]
A2: 待機 / Wait [
ミリ秒: 200
秒: %Sec
分: %Min
時間: 0
日: 0 ]
A3: 音楽を止める / Music Stop [
ディレクトリ消去: オン
エラーが発生しても継続:オン ]
If 条件開始 [ %TIME > %End | %TIME eq %End ]
プロファイル: 無名
設定: Priority: 10
イベント: Bluetooth 接続 [ 出力変数:* 名前:%Bluetooth 住所から地図:* ]
状態: 変数の値 [ %Bluetooth 値あり ]
開始 タスク: 停止
設定: 既存タスクを破棄する
A1: 停止 / Stop [
タスク: 再生 ]
A2: 音楽を止める / Music Stop [
エラーが発生しても継続:オン ]
A3: 待機 / Wait [
ミリ秒: 0
秒: 0
分: %Wait
時間: 0
日: 0 ]
If 条件開始 [ %Wait 値あり ]
A4: 音楽再生 / Music Play [
ファイル: %Music
始点: 0
ループ: オン
出力先: メディア音
すぐに次のタスクに進む: オン ]
If 条件開始 [ %TIME < %End ]
タスク: Mp3の長さ計測
A1: 変数を設定 / Variable Set [
名前: %file_path
これに: %Music
構造を出力 (JSONなど): オン ]
A2: Java 関数 / Java Function [
リターン / Return: mmr
Class または Object: MediaMetadataRetriever
関数: new
{MediaMetadataRetriever} () ]
A3: Java 関数 / Java Function [
Class または Object: mmr
関数: setDataSource
{} (String)
引数 1 (String): %file_path ]
A4: Java 関数 / Java Function [
リターン / Return: %duration_ms
Class または Object: mmr
関数: extractMetadata
{String} (int)
引数 1 (int): 9 ]
A5: 複数の変数名をセット [
名前: %Min
%Sec
値: %duration_ms/1000/60
%duration_ms/1000 % 60
計算する: オン
四捨五入する桁: 0
構造を出力 (JSONなど): オン ]
タスク: 起動時
A1: 権限を要求 / Ask Permissions [
必要な権限: android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE
android.permission.ACCESS_FINE_LOCATION
android.permission.SYSTEM_ALERT_WINDOW ]
A2: シーンの表示 / Show Scene [
名前: 時間
表示方法: ダイアログ
横方向の位置: 100
縦方向の位置: 100
アニメーション: システム
終了ボタンを表示する: オン
キーガードの上に表示する: オン
すぐに次のタスクに進む: オン
Allow Outside Boundaries: オン
Blocking Overlay +: オン
Overlay +: オン ]
タスク: Bluetooth機器設定
A1: Bluetooth 情報 / Bluetooth Info [
種類: ペアリング済みデバイス
タイムアウト (秒): 5 ]
A2: リストのダイアログ / List Dialog [
モード: 項目を一つ選ぶ
タイトル: 動作させたいBluetooth(オーディオ機器)は?
項目: %bt_name()
経過後 (秒数) で閉じる: 30
見えるうちで最初の項目番号: 0 ]
A3: 変数を設定 / Variable Set [
名前: %Bluetooth
これに: %ld_selected
構造を出力 (JSONなど): オン ]
A4: フラッシュ表示 / Flash [
文字: %Bluetooth が選択されました
すぐに次のタスクに進む: オン
Dismiss On Click: オン ]
タスク: mp3ファイル設定
A1: ファイルを一覧 / List Files [
ディレクトリ: /storage/emulated/0
選択を並べ替える: アルファベット(昇順)
変数の配列: %Folder
Use Global Namespace: オン ]
<長押しされた時(2)>
A2: ファイルを一覧 / List Files [
ディレクトリ: %ld_selected
選択を並べ替える: アルファベット(昇順)
変数の配列: %Folder
Use Global Namespace: オン ]
If 条件開始 [ %ld_long eq true ]
<ラベル>
A3: リストのダイアログ / List Dialog [
モード: 項目を一つ選ぶ
タイトル: 音声ファイル選択
項目: %Folder
経過後 (秒数) で閉じる: 30
見えるうちで最初の項目番号: 0
文字: 再生させたいmp3ファイルを選択してください。
(長押しするとフォルダの階層が下がります)
]
A4: 行き先 / Goto [
種類: アクションラベル
ラベル: 長押しされた時(2) ]
If 条件開始 [ %ld_long eq true ]
A5: 変数を設定 / Variable Set [
名前: %Check
これに: %ld_selected
構造を出力 (JSONなど): オン ]
A6: Simple Match/Regex [
種類: 正規表現
文字: %Check
正規表現: \Q.mp3\E ]
A7: 変数を設定 / Variable Set [
名前: %Music
これに: %Check
構造を出力 (JSONなど): オン ]
If 条件開始 [ %mt_match_found eq true ]
A8: タスク実行 / Perform Task [
名前: Mp3の長さ計測
優先度: %priority
構造を出力 (JSONなど): オン ]
If 条件開始 [ %Music 値あり ]
A9: フラッシュ表示 / Flash [
文字: %Music が選択されました
すぐに次のタスクに進む: オン
Dismiss On Click: オン ]
If 条件開始 [ %Music 値あり ]
A10: フラッシュ表示 / Flash [
文字: ファイル形式が正しく(mp3では)ありません
長く: オン
すぐに次のタスクに進む: オン
Dismiss On Click: オン ]
If 条件開始 [ %mt_match_found eq false ]
で、シーン内蔵タスクはこんな感じ。
───────────────────
A1: 要素の調査 / Test Element [
シーンの名前: 時間
要素: 時1
調査: 値
結果の保存先: %Time1 ]
A2: 要素の調査 / Test Element [
シーンの名前: 時間
要素: 分1
調査: 値
結果の保存先: %Time2 ]
A3: 要素の調査 / Test Element [
シーンの名前: 時間
要素: 時2
調査: 値
結果の保存先: %Time3 ]
A4: 要素の調査 / Test Element [
シーンの名前: 時間
要素: 分2
調査: 値
結果の保存先: %Time4 ]
A5: 要素の調査 / Test Element [
シーンの名前: 時間
要素: wait
調査: 値
結果の保存先: %Wait ]
A6: 待機 / Wait [
ミリ秒: 100
秒: 0
分: 0
時間: 0
日: 0 ]
A7: 複数の変数名をセット [
名前: %Start
%End
値: %Time1.%Time2
%Time3.%Time4
構造を出力 (JSONなど): オン ]
A8: 待機 / Wait [
ミリ秒: 100
秒: 0
分: 0
時間: 0
日: 0 ]
A9: フラッシュ表示 / Flash [
文字: Bluetooth機器の設定が済んでいません
長く: オン
Dismiss On Click: オン ]
If 条件開始 [ %Bluetooth 値なし ]
A10: フラッシュ表示 / Flash [
文字: 再生する音声ファイルの設定が済んでいません
長く: オン
Dismiss On Click: オン ]
If 条件開始 [ %Music 値なし ]
A11: フラッシュ表示 / Flash [
文字: Bluetooth機器の設定が済んでいません
再生する音声ファイルの設定が済んでいません
長く: オン
Dismiss On Click: オン ]
If 条件開始 [ %Bluetooth 値なし & %Music 値なし ]
A12: シーンの破棄 / Destroy Scene [
名前: 時間 ]
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます