[過去ログ] 【自動化】MacroDroid Part3【マクロ】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): 2021/06/20(日)14:29 ID:Sdw0XNZk(1) AAS
Androidの操作を自動化するアプリMacroDroidの専用スレです。
マクロ製作の質問や情報交換をしましょう。作成したマクロの共有も大歓迎です。

次スレは>>950が立てること。立てられない場合は>>980が代わりに立ててあげてください。
876: 2021/09/26(日)09:48 ID:eaMdz5vQ(1) AAS
>>875
やり方は二通りあってこんな感じでできると思うよ

1. MDから渡すテキスト本文をメールヘッダに合わせて変換する方法
例えばヘッダがiso2002-jp(jis)の場合termuxでiconvで変換(MDから変数を引数で渡す)
echo $1 | sed -i 's/$/\r/' | iconv -f UTF8 -t ISO-2022-JP

2. htmlメールにしてhtmlの文字コードをheadタグ内でMDに合わせて指定しておく方法
<head lang="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
877: 2021/09/26(日)11:10 ID:Z2Vz2ttu(1/2) AAS
>>801画像リンク[jpg]:i.imgur.com
アクション 起動 アプリ 最近使ったアプリからの消去にするっていいね。ホームに戻るのは手動だけど
きちんと消えてる
878
(4): 2021/09/26(日)11:10 ID:kVuWqiFh(2/5) AAS
>>874
ありがとござます。
>>589のように一定間隔でジオフェンス確認とかしててもバッテリー消費的には大したことないものですか?というかそもそも論として、ジオフェンス使いたいならmacrodroid の位置情報の権限を常に許可していなければだめです?ジオフェンスをトリガにして何度か試してみていたのですけど機能しなかったのはそこだったかも知れません。

あと、Wi-Fiオフで帰宅してWi-Fiオンにしたいに対して自宅Wi-Fiをトリガにできるものですか?

質問ばかりですいません
879: 2021/09/26(日)13:01 ID:RVyXI6fp(1/2) AAS
>>878
接続→WiFiのSSIDの変化
880: 2021/09/26(日)13:22 ID:gFWaoDjC(1) AAS
端末のwifiが切れてる状態でSSIDの変化を検出できるのですか?まあ何事もトライ&エラーですね
881: 2021/09/26(日)13:23 ID:Qp5bb2EL(1) AAS
すげえな
882: 2021/09/26(日)13:30 ID:iRpoTDBh(1) AAS
>>878
5分間隔とかでジオフェンスを確認するとログが大量発生するからジオフェンスをトリガーとして取得できるのならそっちの方が良いように思う
バッテリー消費は一気に増えたようには感じなかったかな
883
(1): 2021/09/26(日)14:44 ID:4eQUFIuT(1) AAS
wifi無効ではSSIS変化は無理
884: 2021/09/26(日)16:25 ID:qQg1HQqP(1) AAS
クイックタイルにボタンで登録した時って、クイックタイルのボタンは常時点灯状態になりますよね。
これを常時消灯に出来ないんでしょうか。
普通は消灯ですよね、カメラとか計算機とか。

画像リンク[jpg]:i.imgur.com
885
(1): 2021/09/26(日)17:10 ID:XyYxBXKP(1) AAS
少し家の周りをウロウロしたところ、Wi-Fiオフになっていても指定のSSID圏内かどうかは何でか分かるみたい。マクロ自体を上手く組めてなかったのでそっちを見直します。
886: 2021/09/26(日)17:23 ID:l3e08Te+(1) AAS
>>878
バッテリーはひとつひとつ状態を変えてベンチマークしてみればいいよ
俺はキチガイみたいにバッテリー節約するなら画面点灯に絞る派だから他は敷いて言えば長時間屋内にいるときのネット接続を工夫してもいいかなくらい
あとは大勢に影響ないと思ってる
位置情報データソースになるんでwifiもずっとonにしてる
887: 2021/09/26(日)17:40 ID:kVuWqiFh(3/5) AAS
ssidの変化をトリガーにしようとすると位置情報サービスを有効にする必要ありと言われるけれど、設定のトリガーオプションをみるとWi-Fi ssidトリガーに影響あるのは位置情報ではなくWi-Fiバックグラウンドスキャンのよう。
位置情報の更新頻度は下げてしまって問題ない?

画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
888: 2021/09/26(日)18:52 ID:E7fM5pum(1/6) AAS
>>885
これって俺も>>883だと思い込んでたな
なんでもやってみるもんだね
wifiのoff状態て接続はしないけどOS側で定期的にssidのスキャンはやってるってことか
それとも既に分かってるssidだけキメ撃ちで存在チェックして失敗すると一定期間やらないみたいな実装なのか
ちょっと振る舞いをみてみようかな
889: 2021/09/26(日)19:07 ID:E7fM5pum(2/6) AAS
>>878
ジオフェンストリガをインターバルでチェックする必要はないと思うよ
多少の遅延はあってもちゃんと境界を超えたとき1度だけ呼ばれるんで
MD側の実装としてジオフェンス外/内に居続ける場合にコンストレイントは常な判定結果を真偽で返すけどトリガは何度も繰返して呼ばれることはないから
つい最近話題になって確認したとこ
www.macrodroidforum.com/index.php?threads/geofence-is-not-working.1100/
890
(1): 2021/09/26(日)19:27 ID:E7fM5pum(3/6) AAS
>>874は嫁を定期的にたたき起こすって話が前提になってるから 笑
891: 2021/09/26(日)19:29 ID:E7fM5pum(4/6) AAS
>>890>>589の理由ね
892
(2): 2021/09/26(日)19:29 ID:kVuWqiFh(4/5) AAS
自分の用途としては外出したらWi-Fiオフと帰ったらオンしたいなので、アバウトながら基地局でも、ジオフェンスでもSSIDでもどれでもいけそうと分かってまず安心です。
ので、次はどのトリガーがバッテリー節約向きなのかなんですがジオフェンスとSSIDはどんなものでしょうか?
端末をzenfone8に替えたら思ったほどバッテリー持ちが良くないので節約してみようとmacrodroidいじり始めたとこです。
893: 2021/09/26(日)19:48 ID:E7fM5pum(5/6) AAS
>>892
個々のケースで違うんで一番いいのはベンチマークすることだけど一般論としては基地局>GPS>wifiの順にバッテリー消費が激しいと思う
たた位置情報サービスは統合的なものになってて常にGPSを最優先して動かすわけでもないのよ
他方wifiは接続確立してしまうと多数のwifi接続時のみのサービスが稼働したりするから副次的にバッテリー消費が増えたりってことも

ちなMDを1秒インターバルでバッテリー情報を変数に取る単純なマクロ1つだけ回すと1時間あたりのMDの消費は0.8mAhくらいだったかな
894: 2021/09/26(日)20:02 ID:E7fM5pum(6/6) AAS
>>892
いったんの結論としてはwifiやジオフェンス使ってない(使いたくない)前提なんだから既に常に使ってる基地局だけのままにしとくと増加がないから基地局のままでいいんじゃないかな?
>>873で言ってる車なして外出時/車で帰宅時の再接続がイマイチという問題点を他の手段で解決できるとして解決優先ならそのコストを許容できるかが判断のポイントだと思うからそれは数字取ってみないとね
895
(2): 2021/09/26(日)20:51 ID:kVuWqiFh(5/5) AAS
基地局トリガのマクロ組みっぱなしでssidトリガも1日いじくってましたが、家の中いるだけで基地局トリガのマクロが何度か動いてて残念。なので取り合えずばssidをトリガにしてバックグラウンドスキャンの間隔を弄りながら電池持ちを眺めてみることにします。
外出、帰宅した瞬間にオフオンしたいでもないので10分間隔くらいでそれなりの実感が得られればいいなというところです。
おつきあいいただきありがとうございました。
896: 2021/09/26(日)23:25 ID:Z2Vz2ttu(2/2) AAS
今のバージョン不安定になったね。。
ひとつ前に戻したよ
897
(1): 2021/09/26(日)23:40 ID:RVyXI6fp(2/2) AAS
WiFiをOFFにしてても、OSが定期的にスキャンしてるので、SSIDを検知できるんだよね。
検知されるSSIDに自宅のWiFiのSSIDが含まれるか否かで、WiFiのONとOFFの切り替えできるよ。
898: 2021/09/27(月)00:12 ID:xTv+rTG4(1/7) AAS
>>897
うん、勉強になった
どうもありがとう
899
(1): 2021/09/27(月)00:15 ID:vWpdbAha(1/2) AAS
これで使えてる。

トリガー
 ?指定SSID圏内に入った時
 ?指定SSID圏外になった時
アクション
 If トリガーが?の場合
  WiFiをONにする。
 Else If トリガーが?の場合
  WiFiをOFFにする。
 End If

あと、自宅を出たらマナーモードとかやるんだったら、アクションにそれを追加してやると良い。
900
(2): 2021/09/27(月)02:19 ID:+tbUSGT0(1) AAS
>>899
これってGPSは常にONと言う事ですか?
901: 2021/09/27(月)07:49 ID:vWpdbAha(2/2) AAS
>>900
元々、常にGPSはONにしてるけど、OFFでも使えるんじゃないのかな?
902: 2021/09/27(月)08:52 ID:6p2tXnJT(1) AAS
>>900
GPSは消費電力も少なくてデメリットより利便性が上がるメリットの方が圧倒的に多いから俺は常にオンにしてる
903
(2): 2021/09/27(月)12:21 ID:n7ew4SCk(1) AAS
非root端末で、アプリ内のプルダウンメニューが開かれているかどうか、
またトグルボタンがON/OFFかどうかをMacroDroid側で読み取りイベントを送信する事は可能ですか?
904: 2021/09/27(月)12:31 ID:n07oK8kv(1) AAS
>>895
以前同じようなのやろうとした時は

自宅WiFiとの接続が切れる→WiFiオフ
画面オン→WiFiオン↓
一定時間内に自宅WiFiに接続される→そのまま
一定時間内に自宅WiFiに接続されない→WiFiオフ

という頭悪い作りだけど問題なく動いてた
905
(1): 2021/09/27(月)12:34 ID:lBq+DIcE(1) AAS
>>903
一般的な話なら無理
「アプリ」が対応しているなら可能
MD側からどうのという話じゃない

もっと具体的に1.なんてアプリで2.どんな状態(画面の表示、通知になにかあるか)を3.どうしたい?が有れば「MDによる代替手段」が作れる可能性もある
906: 2021/09/27(月)16:35 ID:h5ufP6u5(1) AAS
ちょっと教えてください
同時に実行すると片方が失敗するので今まではウエイトとか入れて回避してました
しかし3個以上重なって来るとウエイト同士が被ってしまい最終的に同士実行になってしまい失敗する事があります
どれかに優先順位があるわけではないので先に実行されてるマクロがあったら終了まで待って順次複数実行していくマクロの作り方はどのような作りがスマートでしょうか
3個程度までは個別にマクロ名の変数起こして力ずくでその変数を見て回避してましたがそれ以上になるとなんだかなあと思えてきました
907
(1): 2021/09/27(月)16:54 ID:B+v2ePOX(1/2) AAS
プラグでセマフォとか?
908: 2021/09/27(月)16:55 ID:B+v2ePOX(2/2) AAS
予測変換でプになったけどフラグ
909
(2): 2021/09/27(月)17:48 ID:fx1vi438(1/6) AAS
>>907
セマフォで検索したらやりたい事と一致してました
けどMDでやる具体的な方法はどんなコマンド使えばいいのでしょうか
セマフォという変数に1を入力しておいてバッティングしそうなマクロ走らせると変数から1引いて終わったら1を足す
他のマクロは実行前にセマフォの数値が1になるまで○秒おきに確認して待つのでしょうか?
でも待たせてるアプリが複数あるとセマフォが1になった瞬間に同時に実行される可能性が…?
イメージではなくてMDでそれをやるコマンドが知りたいのです
910
(2): 2021/09/27(月)18:27 ID:KLADAJdw(1/2) AAS
すみません。この2つのマクロを1つにまとめたいのですが無理ですか?
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
やりたいこと
任意アプリを立ち上げた時5秒待って機内モード
ただし、5秒以内に閉じた時機内モード実行せず
5秒以上経ってアプリを閉じた時機内オフ

(1マクロ)
トリガー、任意アプリを立ち上げた時
アクション 5秒待って機内モード

(2マクロ)
トリガー、 任意アプリを閉じた時
アクション 機内モードオフ
911
(1): 2021/09/27(月)19:09 ID:xTv+rTG4(2/7) AAS
>>909
グローバル変数に最低限「アプリ起動中」を意味する情報を覚える
それぞれに排他チェックと当該情報のon/offを入れる
文脈的にどのマクロが起動中か判別する必要があれば覚える情報をマクロ名に、いつ起動したか必要なら時刻を覚える

現状のトリガから変更していいなら変換の値をみて呼ばれるトリガを使うのもいいね
やることは上記の類似
912
(1): 2021/09/27(月)19:22 ID:OP+RHvC9(1/7) AAS
>>909
そんなコマンドないから自分で実装する
整理券を発行して自分の順番じゃなかったらwait
自分の仕事したらwait入れてから整理券返す

処理イメージ(書き方は適当)
グローバル変数
g_n=0

マクロ
g_n+=1
n=g_n
while(not n=g_n){wait}
マクロ実行部分
wait
g_n-=1
913: 2021/09/27(月)19:26 ID:RiWuxhQ4(1) AAS
>>895
タイマー(ストップウォッチ)で定期的(例えば10分間隔)でWiFiをオン、自宅のSSIDに継ったらそのまま、継らなかったら
WiFiをオフというやり方もあるけど電池を食うかね。
914
(1): 2021/09/27(月)19:32 ID:OP+RHvC9(2/7) AAS
>>910
1マクロで5秒waitの前でONフラグ=trueして
2マクロでマクロキャンセルのとこでONフラグ=falseして
機内モードONにするときONフラグ条件にしたらいいんでないかな
915
(2): 2021/09/27(月)19:41 ID:xTv+rTG4(3/7) AAS
>>910
無理じゃないよ
やり方はいろいろ考えられる
・アプリを起動した時刻を覚えてチェック
・ストップウォッチを使って経過時間をチェック
・現2のトリガ起動を5秒条件で制約して実現する
などなど

無理ですか?(できますか?)と聞くのはやめたほうがいいと思うな
できそうだと思うから聞いてると思うしイエス/ノーを答えられても「で?」ってなると思うんでね
希望に合わせたいから遠慮しないでやってくださいなのか自分でやりたいから方法を知りたいなのか意図を書いたらいい
文脈から読み取れない時はとりあえず後者だと仮定してる
916: 2021/09/27(月)19:57 ID:xTv+rTG4(4/7) AAS
>>903
状態を直接取得できないけどTouchTaskプラグインで画面内の色の値をみれば可能だよ
ただし変化後または変化前の色が普遍であらかじめ分かっていること
チェックする座標が変化しないことが前提条件

質問がピンポイント過ぎて別のもっといいやり方が提示できないのは>>905が指摘してる通りだから次からその点を考えてみて
917
(2): 2021/09/27(月)20:05 ID:fx1vi438(2/6) AAS
>>911
ありがとうございます
イメージは理解できるのですが…
当該情報のon/offと時刻を覚えるはグローバル変数にどのマクロが何時起動したかを入れるのですよね
ただ1番欲しい排他チェックのやり方がわからず
>>912
具体例ありがとうございます
具体例を元にマクロ書いて見ましたけどこんな流れでしょうか
ただ{wait}の部分が何を指してるのか? これは具体例にどこに入れるのでしょう?
画像リンク[jpg]:i.imgur.com
918
(2): 2021/09/27(月)20:33 ID:OP+RHvC9(3/7) AAS
>>917
一番上の変数を設定はいらないよ(グローバル変数は数値型で用意しとく)
{wait}はwhileの中がwaitだけってことね。マクロのメイン部分はwhileの後で
そこだけ見ると無限ループに見えるけどwaitの度に他のマクロに制御が移ってg_nが変わるからその内自分の番号になってループが終わる仕組み

処理イメージ(書き方は適当)
●グローバル変数(事前に用意)
g_n=0

●それぞれのマクロ
g_n+=1
n=g_n
while(not n=g_n){
wait //ここで同時実行中の別マクロに制御が移る
}
マクロ実行部分
wait
g_n-=1
919
(2): 2021/09/27(月)20:39 ID:KLADAJdw(2/2) AAS
>>914,915
すみません。オンフラグ他書いてることの意味がなんのことかさっぱり分からず
自分には無理のようです
願わくば、やってほしい。厚かましいですかね…
ダメなら諦めます
920
(1): 2021/09/27(月)20:42 ID:xTv+rTG4(5/7) AAS
>>917
if文で書けばこんな感じ
最初のブロックは実行してるときで次はしてないとき
3種類どれでも起動中かどうかはみれる
時刻や名前だと情報量が多いから式を変えれば判定内容は柔軟にできるね
これを下段の緑の条件てとこでやってもトリガにぶら下げるるんでも要領は同じことだよ
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com

実際の流れでは個々のマクロで排他チェックをしてから排他ロックを取ってから処理をすればいい
終わったらロックを解除して終了
921
(2): 2021/09/27(月)21:02 ID:xTv+rTG4(6/7) AAS
>>919
いや別にそれはそれで
こんな感じでだいたいいいんじゃないかな?簡単で
5秒抑止がシビアなら1〜2秒増やしてみて
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
922
(1): 2021/09/27(月)21:20 ID:OP+RHvC9(4/7) AAS
>>921
あーなるほど
スマートですね

>>919
画像リンク[png]:imgur.com

フラグってのはそのまま旗のことで上げたり下ろしたりで相手に状態を知らせることが出来るもののこと
複数の状態をチェックしたい時に使う言葉

マクロ実行から5秒後に機内モードをONにするかOFFにするか決めたいので「ONにしたい」というフラグを用意して『「ONにしたい」フラグが上っていたらONにする』ようにしておく。それで、割り込みでキャンセルするなら「ONにしたい」フラグを下ろせばいいということ

で、「フラグ」を実際にどう作るかってのは結構基本的な内容なので知ってる人に一々説明することでもないから省いてるのよ

こっちからしたら、あなたがわからないのかわからないからね
923
(2): 2021/09/27(月)21:24 ID:fx1vi438(3/6) AAS
>>918
こんなんなりましたが意味がいまいち理解できていません画像リンク[jpg]:i.imgur.com
1行目でg_nが1になる
2行目でnに1が代入される
3行目からはnが1以外はウエイトを繰り返して1になったらマクロを実行
最後にg_nが0になる

この流れで1〜2の間で他のマクロがg_nを2や3にする事はないのでしょうか
A,B,Cのマクロが同時に実行されたらA1,B1,C1,A2,B2,C2の順で実行されたりはない?
明日少し時間が取れるので具体的にマクロ組んでみます
924
(1): 2021/09/27(月)21:34 ID:fx1vi438(4/6) AAS
>>920
具体例ありがとうございます
まず最初に排他のためにグローバル宣言を出して他のマクロの実行をさせないようにしてからマクロを実行するようにしてみます
こちらも明日時間が取れた時に具体例に沿ってマクロを組んでみます
925
(2): 2021/09/27(月)21:36 ID:OP+RHvC9(5/7) AAS
>>923
他のマクロがg_nを2とか3にするんだよ
で他のマクロは自分(ローカル)のnも2とか3にするからg_nと自分のnが同じ時だけwhileが終わってマクロが走る
g_n=3のときはn=3のマクロだけ動いて他のマクロはnが1とか2だから動かないわけ
で、実際に動いたマクロの最後でg_nを1減らせばg_n=2になって次にn=2のマクロが動いてくれる(はず)
926
(2): 2021/09/27(月)21:48 ID:fx1vi438(5/6) AAS
>>925
ああそういうことですか!
このマクロは自分の発行した番号が排他宣言の逆バージョンみたくなってるのですね
自分じゃなくて後からのマクロが優先実行される流れですかね
927: 2021/09/27(月)21:53 ID:OP+RHvC9(6/7) AAS
>>926
そそ、優先順位ないって言うから難しく作る必要も無いかなって
928
(1): 2021/09/27(月)22:18 ID:xTv+rTG4(7/7) AAS
>>924
先頭の変数はサンプルの便宜上グローバルに書く内容を列挙するためにローカルに書き出しただけね
念のため

そもそもの起動トリガがや実行したい状況の文脈が不知なんで何とも言えないが実行を保証する必要がなければ競合したらそのまま終了すればいいね
実行が必須なら>>918がやってるようにwhileループでウエイトして空き待ちをしてもいいし
ウエイト後にマクロ実行アクションで再度自分を実行してもいい
ストップウォッチで自己を一定時間後に呼ぶのでも
そのあたりは>>915で言ってることと一緒だよ
929
(2): 2021/09/27(月)22:57 ID:fx1vi438(6/6) AAS
>>928
グローバル宣言の件は了解です
今回は同時実行すると失敗するのを回避したいので実行必須になります
それが最終的に何個重なるかわからないのでwhileループで順番待ちをするのがスリムな形態でいけそうですかね
まあウエイト長くなりそうなので動作がモッサリするかもですが
930
(1): 2021/09/27(月)23:20 ID:OP+RHvC9(7/7) AAS
>>926
そういえばこれ理論的には行けるはずだけど、例えばn=3のマクロ実行中にそのマクロが強制終了されるとかなるとg_nが3のままでn=1,2のマクロがwaitで無限ループとかなって怖いね

ループは回数指定にしてループ内でbreak判定にしといた方が安全かも

>>929
while内のwaitは10msで行けると思うよ(待つことが目的じゃないので)
931
(1): 2021/09/27(月)23:31 ID:0Q1T7+qp(1) AAS
えっち
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
画像リンク[jpg]:i.imgur.com
932: 2021/09/27(月)23:47 ID:lH4kXgr+(1) AAS
>>931
グロ
933
(2): 2021/09/28(火)00:25 ID:XBXBeK/U(1) AAS
>>929
縦流れにかけた方が分かりやすいならループでウエイトするんでいいと思うな
ウエイト中は別に何するわけでもなく言うたらスリーブ代わりなんで別にもっさりしないよ
遅延するっても大して気にならないんだと思うんでそれぞれのマクロの面から尻まで5秒かかるとかそんな粒度なら1秒くらいで回せばいいと思うよ
934
(2): 2021/09/28(火)11:15 ID:ZNRHGKWF(1/8) AAS
>>933
ご指摘ありがとうございます
ブレークに変更しました
実際に動かしてみると自身のマクロがトリガーの問題で複数開始されてしまい n の数値が想定より増えてしまったりした事があったので排他のための変数を追加しました
画像リンク[jpg]:i.imgur.com
935
(4): 2021/09/28(火)11:24 ID:BbGkKuXS(1/8) AAS
>>923
ふと気になって検討してみた
これのrun macroの部分がそれぞれの実際の処理に置き換わるとして
2行目では自己の予約シリアル値をローカルに取った後にいったん当該マクロを終了
別途変数更新のトリガでグローバルの現シリアル値が別マクロによって増加したときに当該マクロの実体を実行するのをオススメするよ
原案と意図が変わっちゃうんだけどね

今のままだと仮に複数のマクロ実行がかち合ってAが1を取ってストンと抜けた後の処理の流れにウエイトが入ってた場合でかつ終了に達していないとき
運悪くBが発動すると2を取ってストンと抜けて...以下繰り返しが否定しきれない

でこれまた運悪くCが3を取ったあとにAが尻まで進んで1減算した直後にDが発動すると3がDにも発番される
でBがそのタイミングで終わって直後にEが始まるとEにも3...以下繰り返しってなる

どちらも各マクロにウエイトが絶対に入らないなら一気に尻までの連続実行が保証されるから起きないんだけどね
時間の長短は関係なくて少なくともwhileで必ず待つからこちらも否定しきれないかなぁ

後者はデクリメントしなければ発生しないんで足しっぱ放置が良さげ
んで例えばデバイスブート時の一回きり実行してる既存マクロなんかでたまに初期化メンテすればまぁ平気
危なければデイリージョブかなんかでも

原案のキモは妙案だと思うんだけどMDの実行特性が絡んでくるから
管理対象が複数スロットあるわけじゃないし結局シリアライズしなくちゃいけないならバイナリセマフォというかミューテックスというか言葉はまぁいいんだけどフラグ管理の単純ロックベースでいいかなって思った
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
936
(2): 2021/09/28(火)11:37 ID:BbGkKuXS(2/8) AAS
>>933
>>930宛だね
それ今のとこ>>925の意図を汲めてないけど大丈夫?
結局排他用に真偽値を加えてるように見えるけど

だいたい横一線でマクロが発動する前提でwhileループに来たときに(リライアブルかどうかはともかく)テンポラリでユニークなシリアル値をみて相互に調停するように振る舞う想定なんだよ
まだ変えてないだけならいいんだけどテストてマクロにジャンプしちゃうと破綻する
937: 2021/09/28(火)12:07 ID:BbGkKuXS(3/8) AAS
>>936
俺も間違ってる
>>934宛に書いたつもり
938
(1): 2021/09/28(火)12:49 ID:0Rke9tHs(1/4) AAS
>>936
見切れてるからよくわかんないけど同時実行のタイミングずらすのとは関係ない部分じゃない?>>535案件見たいな

>>935
起こりにくいし起きても「まあいいか」で済む問題にどこまで対処するかって話ですねぇ
対象のマクロ全部に記述しなきゃなのでちょっと不備があってもシンプルな方がいいんじゃないかな
でも、無限ループはNG

while(){wait}は要はタイムアウト設定なんで抜けちゃったらどうしよう→抜けた原因を直すで良いと思う
939
(1): 2021/09/28(火)13:17 ID:PFXrx/p2(1) AAS
>>921
>>922
それぞれ真似して作ってできた!!
後はどういう流れで作っていけばいいかなどこれ見ながら理解頑張ってみます
940
(1): 2021/09/28(火)13:27 ID:ZNRHGKWF(2/8) AAS
>>935
ご指摘ありがとうございます
私はMDを本格的に始めてまだ半年程度で初心者に毛が生えた程度なんです
そもそもマクロ自体が始めてなので専門用語は全然知らないので半分位しか理解できていません…
ただイメージはわかりましたし実際に今2つのマクロで動作タイミングを取っていることろでうまく行きそうなところまでは来ています
マクロのスタートタイミングは違うので先に順番付けを行っておいて最後の同時実行する時に順番に動作させています
941: 2021/09/28(火)13:41 ID:BbGkKuXS(4/8) AAS
>>938
全部に書かなくちゃいけないからシンプルな方がいいは同感
だからオリジナルの意図でチョイ手を入れて特に後続の実体の中であり得るウエイトで新規のマクロが発動して抜けてかないように補強できないかなーとこねてみたんだけどなかなか美味くなくて
重箱の隅をつつくつもりではないのよ

>>934についての話は
変数を設定
マクロを実行中: True
の部分で骨抜きになっちゃってないのかなー?と
942
(3): 2021/09/28(火)15:05 ID:ZNRHGKWF(3/8) AAS
とりあえずGreenifyによるアプリ強制停止が同時実行できいないのでこんなマクロに仕上げました
画像リンク[jpg]:i.imgur.com

アプリ使用後にすぐに強制終了したくないアプリを画面をオンにしたタイミングで強制終了処理させるのですが、Greenifyによる強制終了は複数アプリの同時処理は受け付けてくれません
なのでこのマクロを複数作ってそれぞれ別のアプリに置き換えて実験してみたら順番に終了動作してくれました
943: 2021/09/28(火)15:08 ID:BbGkKuXS(5/8) AAS
>>940
>>935は美味い改良が俺のチカラ的にできなくて割と苦し紛れなのよ
1. 開店準備(起動時/デイリー)
2. 発券機から番号が増え続ける整理券を取る
3. 電光板に出て呼ばれたら自分の手続きしてから次の番号を電光板に書く

こんな内容の改案たが>>940で言ってるイメージに合うんじゃないかな?
開店1番の人を呼ぶ人がいないから例外あるしあまり美しくはないけど

しかも今見たら次の人が来店して整理券取ってないと破綻してるし 苦笑
トリガが足りないんだな
誰もいなくなってから新しく来店した客が取った整理券がすでに電光板に出てたときも呼んであげなくちゃか
ついでにこれで例外も解決
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com

>>939
できると嬉しいよね
目コピの改造からだんだん分かってくるからね
だから遠慮しないで言えばいいのよ
いつも出てくるかどうかは別の話として 笑
944
(1): 2021/09/28(火)15:15 ID:ZNRHGKWF(4/8) AAS
このマクロのいまいちな所は普段使いでログが大量発生してしまう事とアプリ毎に別マクロとして作らなけばならない所ですね
部分的にログを取る・取らないができるとか条件待ちループで記録されるログが少ない方法があればいいのですが
945: 2021/09/28(火)15:18 ID:ZNRHGKWF(5/8) AAS
ああ上の話しは>>942の事です
946
(5): 2021/09/28(火)15:55 ID:0Rke9tHs(2/4) AAS
マクロ内でユニークな識別子有れば楽なんだけどなって思ってたけどマクロ名ってユニークじゃんね
画像リンク[png]:imgur.com

A,B,Cが同時に実行されたら
"A>B>C>"を生成
自身のマクロ名と比較して先頭で一致していたら実行(Aが実行される)
処理の最初でマクロ名削除して(">B>C>"になる)排他制御
処理の最後で先頭の">"削除して("B>C>")次のマクロ実行

カウンターのリセットもローカルな変数もいらない
ただし、セパレータ(">")がマクロ名に使われてないかに注意が必要
947
(1): 2021/09/28(火)16:07 ID:0Rke9tHs(3/4) AAS
>>946
排他制御じゃなくて2重起動防止だな
"A>B>C>"の状態でA実行中にDが来たとき"A>B>C>"のままだと"A>B>C>D>"になってAが再度実行されちゃう
948: 2021/09/28(火)16:33 ID:BbGkKuXS(6/8) AAS
>>942
言うたら自己の重複実行の抑止はフラグで実行オーダーの決定はパチンコの保留玉n個ってことだね
プラグイン呼び出し後のウエイト5秒でアプリ終了は呼ばれないのか
これ実質は画面offのとき動くと思うんだけど画面onになってからのループで1秒待ちになったとき触らないように気をつけるってことなら平気

マクロ単位でのログの無効化はできるんでデバッグ終わったら無効にしちゃっていいと思うよ
949
(1): 2021/09/28(火)16:52 ID:0Rke9tHs(4/4) AAS
>>944
>>935がループ使わない方法作ってくれたからその方向でログ減らせるよ
MDの動作的にもスマートな感じで良さげ
>>946で更に省力化してみたのでどうぞ

マクロはひとつにまとめてもトリガー発火はちゃんとしてる?ならやりようも有ると思うけど
950
(2): 2021/09/28(火)19:34 ID:ZNRHGKWF(6/8) AAS
>>949
>>946のマクロを真似して見ましたけど文字列処理はやった事無くていまいち理解できませんでした
処理待ちマクロはグローバル変数ですよね?
画像リンク[jpg]:i.imgur.com
このマクロのトリガーを2回実行したら変数の値がこんなんなりました
画像リンク[jpg]:i.imgur.com
>処理の最初でマクロ名削除して(">B>C>"になる)排他制御になる
この部分の中身が何か違うのでしょうか
画像リンク[jpg]:i.imgur.com
951: 2021/09/28(火)19:40 ID:ZNRHGKWF(7/8) AAS
おっとスレ建て踏んだみたいです
だけどスレ進行速度的に950ってちょっと早くないですか?
通常980で早い所でも970辺りでは?
950のままでいいよと言うなら950のままで建てて来ます
952: 2021/09/28(火)19:40 ID:BbGkKuXS(7/8) AAS
>>946,947
キュー管理を個々に持たせるのか
なるほどねえ
分散うまいこと考えるなぁ
この線ならキューマネージャーを別途持つ考えだった
デリミタは2文字とか(使い勝手いいか悪いか置いといて例えばお約束の「, 」)使えはマクロ名の制限減るね
953
(1): 2021/09/28(火)21:07 ID:j1rwT/+K(1) AAS
マクロ改良しようと
編集してる時に、そのマクロが実行されてしまうと
まだ保存してない編集中のマクロがそのまま実行されてしまうのって仕様なの?
954: 2021/09/28(火)21:16 ID:BbGkKuXS(8/8) AAS
>>953
仕様だよ
テスト実行してイケてないとき保存しないで戻ればなかったことにできる
戻るのが嫌ならこまめに右上メニューからセーブ
955: 2021/09/28(火)21:59 ID:ZNRHGKWF(8/8) AAS
特に意見もないようなのでそのまま建てました
【自動化】MacroDroid Part4【マクロ】
2chスレ:android
956: 2021/09/28(火)23:12 ID:AAh8NAPD(1) AAS
>>950
処理待ちマクロはグローバル変数(g_nを文字列対応にしたもの)だね
文字列の抽出でグループ1ってやつ選べばうまくいくはず

普通にプログラム書くならマクロ名の文字数数えてオフセットとかにするんだけどMDでアクション数減らそうと思うと正規表現使わないとだからちょっと難しくなるよね
957
(2): 2021/09/29(水)08:47 ID:hW9o9wsz(1/3) AAS
>>946
ちょっとバグfix
画像リンク[png]:imgur.com

ついでに各種設定
トリガー(正規表現いらない)
画像リンク[png]:imgur.com

実行前処理("A>B>C>"→">B>C>")
画像リンク[png]:imgur.com

実行後処理(">B>C>"→"B>C>")
画像リンク[png]:imgur.com

正規表現のチェックは↓が分かりやすかった
外部リンク:regex-testdrive.com
958: 2021/09/29(水)10:15 ID:dH19F9uu(1/4) AAS
グループ1しか使えないの拡張してほしいな
959
(1): 2021/09/29(水)12:26 ID:u7xwW2gr(1/3) AAS
>>957
初めにポップアップで>が表示されたあとすぐに空値のポップアップが表示されてますが…
ifの所の処理をMacroDroid変数の値変更にしてるせいの気がします
960: 2021/09/29(水)12:35 ID:u7xwW2gr(2/3) AAS
最初の文字列の抽出をグループ1から最初の一致に変更すると マクロ名> が2回ポップアップされました
961
(1): 2021/09/29(水)12:43 ID:u7xwW2gr(3/3) AAS
何度もすみません
グループ1は何を意味してるのでしょうか?
そもそもこのマクロはマクロの順次実行に使えるのでしょうか?
ポップアップがA,B,Cと5秒おきに順次表示されてその名前のマクロを実行していくイメージを持っていまたけど
962
(1): 2021/09/29(水)12:47 ID:hW9o9wsz(2/3) AAS
>>959
ポップアップは本来のマクロが動く部分だから2回走るのはおかしい
ifのとこは変数をチェックじゃなくて発動したトリガーが条件だよ?
963
(1): 2021/09/29(水)13:14 ID:hW9o9wsz(3/3) AAS
>>961
グループ1って言うのは正規表現で使うオプション
画像リンク[png]:imgur.com

実行中のマクロはその名前を切り取っちゃうのでポップアップで表示されるとすれば
(A実行中)>B>C>
(B実行中)>C>
(C実行中)>
って流れになるよ
964
(1): 2021/09/29(水)14:52 ID:Zl7WVFRq(1) AAS
ああ、でも変数(処理待ちマクロ)の内容チェックはアクション側でやらないとダメかも?
画像リンク[png]:imgur.com

ABCが同時に実行されたとして

A実行
変数:""→"A>"変数の値の変更トリガー発火
B実行
変数:"A>"→"A>B>"変数の値の変更トリガー発火
C実行
変数:"A>B>"→"A>B>C>"変数の値の変更トリガー発火

だと、Aのメイン処理部分3回走っちゃう?それともトリガーにぶら下げた条件は実際にアクションが走る直前でチェックされるのか
MDプロなら知ってるかも知れないけどアクション側でチェック入れた方が間違いない
965: 2021/09/29(水)17:33 ID:Lcqk6y6E(1/4) AAS
>>962
発動したトリガーが条件ですけど参照元のトリガーが変数の値変更になってるのですけど…?
>>963
ああそういう意味だったのですね
理解できました
>>964
この条件を追加したらポップアップは1回になりました
966
(1): 2021/09/29(水)18:04 ID:QUYxBS/m(1/3) AAS
ちと、教えてください

?サウンドやアラーム音量を変数に代入退避
?音量最大化
?ミュージック処理を行う
?終了後、変数から元の音量に戻す

以上をマクロ化できますか
967: 2021/09/29(水)18:47 ID:Lcqk6y6E(2/4) AAS
>>966
1,2,4はできます
3のミュージック処理ってなんだろう?
再生・停止・次へとか簡単な事はできますけど
968
(2): 2021/09/29(水)19:10 ID:WZW4Pwm9(1/4) AAS
スタートがアレだったからだけど別にマクロ分ける必要無いじゃんねっていう
画像リンク[png]:imgur.com
969
(3): 2021/09/29(水)19:16 ID:QUYxBS/m(2/3) AAS
ありがとうございます
?ミュージック処理は単なるテキスト読み上げ処理です
実は、充電が完了した際に音量最大で充電完了と音声を鳴らしているのですが、
時々音量を小さくしていて聞こえない時がありまして
元の音量を一時退避して、充電完了を告げた後に元の音量に戻そうと考えたのですが
音量変更はあるのですが、変数に代入や変数から戻す方法が見つかない次第です
970
(1): 2021/09/29(水)20:36 ID:WZW4Pwm9(2/4) AAS
>>969
変数を設定から任意の式で[...]選んで現在の音量取得
セットは普通に音量を変更からプルダウンメニューで。ただし先に変数を用意しておかないと表示されない
971
(1): 2021/09/29(水)20:41 ID:Lcqk6y6E(3/4) AAS
>>968
おかげさまで文字列処理の理屈は理解できました
あと>>942のマクロのように画面オンのタイミングで順次動作させるにはどこに割り込み入れたら良いでしょう?
972: 2021/09/29(水)20:56 ID:dH19F9uu(2/4) AAS
>>969
参考にしてみて
oppo対応部分とかイランと思うからばっくり排除していい感じに改造してね
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
外部リンク:www.mediafire.com

画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
外部リンク:www.mediafire.com
973
(1): 2021/09/29(水)21:07 ID:WZW4Pwm9(3/4) AAS
>>971
アクションの先頭にトリガーまで待機(画面をON時)入れたらいいんじゃないかな
974: 2021/09/29(水)21:08 ID:dH19F9uu(3/4) AAS
>>969
こないだの嫁の件でも待避させてるんで
>>589が俺のサンプル
975: 2021/09/29(水)21:24 ID:dH19F9uu(4/4) AAS
ついでに普段使ってるバッテリー読み上げ
ボリューム保持してないけど
公式のテンプレコーナーに上げてあるのと一緒
これも言語対応イランと思うからバックリ捨て可能
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
外部リンク:www.mediafire.com
976
(1): 2021/09/29(水)21:25 ID:Lcqk6y6E(4/4) AAS
>>973
アクションの先頭?
それだとマクロ走らないですよね??
977
(1): 2021/09/29(水)21:38 ID:WZW4Pwm9(4/4) AAS
>>976
>>968のならアクションの先頭で大丈夫だよ

>>957のだったらメインのトリガーのときに止まるようにすれば良いよ
画像リンク[png]:imgur.com
978: 2021/09/29(水)21:41 ID:QUYxBS/m(3/3) AAS
>>970
設定したのち、動作確認できました
ありがとうございました
979: 2021/09/30(木)06:55 ID:1tI80P/3(1/3) AAS
>>977
実際に動かないのですが
トリガーまで待機(画面をON時)は画面オンにするまでマクロの実行を止めるコマンドですよね?
最初にこのコマンドを走らせたらマクロ名の取得すらできないのですけど何処かの設定が間違ってるのだろうか…
980
(1): 2021/09/30(木)07:36 ID:1tI80P/3(2/3) AAS
この件は2行目にトリガーまで待機(画面をON時)を入れたら動きました
けれど実際に使ってみるとA>B>C>A>Cみたいな変数ができていましたので二重起動防止処理が必要のようです
981
(2): 2021/09/30(木)08:43 ID:1tI80P/3(3/3) AAS
二重起動防止処理を入れてみました
とりあえずこれで画面起動後の順次実行はできたようです
ただトリガーアプリが増えた時に毎回多くのアプリ名の部分を変えていかなければならないのが自分が初めに作っていた力技マクロに近くて結果的にどうなんだろう? と思う部分もあります
けれど使った事の無い文字列処理の勉強ができたのは皆さんのおかげですので感謝です
画像リンク[jpg]:i.imgur.com
982: 2021/09/30(木)09:28 ID:FMHSFr+T(1/3) AAS
>>981
ああ、トリガーまで待機しちゃうとトリガー変わって[app_name]取れなくなっちゃうのか。見落としてた、ごめんね

二重実行防止したいなら最初の変数追加するところに条件ぶら下げて
MacroDroid変数[処理待ちマクロ]:!=*[app_name]*
で追加登録しないようにしてあげれば良いよ

app_name手打ち必要なのはマクロ分割してたときにマクロ名ひとつづつ変えるのと変わらないから・・・
(ただし、正規表現使った処理をしてるのでapp_nameによっては不具合でる)
(その他文字チェックしてるとこもアプリ名に「*」入れてるような奴がいるとやばい)
983: 2021/09/30(木)09:59 ID:E7VA6uO/(1/6) AAS
キューマネ方式にしてみたよ
上から問答無用でシーケンシャル実行を強制する
個別追加も定型コピペだから保守が楽かもしれないと思って
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com

インテントに渡してるショートカット起動用guidはアプリで作ってそのまま使ってる
外部リンク:play.google.com
984: 2021/09/30(木)10:05 ID:E7VA6uO/(2/6) AAS
わかりにくいからファイルも
外部リンク:www.mediafire.com
985
(1): 2021/09/30(木)11:54 ID:FMHSFr+T(2/3) AAS
>>981
あと、それぞれの実行直前で自分のアプリ名消してるところは実はアプリ名いらないよ
文字列の抽出「X-plore(>.*)」→「(>.*)」だけでいける

なので、手打必要なのは各アプリごとif判定のときの1回だけ
986: 2021/09/30(木)13:09 ID:FMHSFr+T(3/3) AAS
>>985
(一致全部拾ってるんだから()もいらないじゃんね。なにボケてるんだろ)
987
(1): 2021/09/30(木)14:34 ID:9iplSbFE(1/2) AAS
そもそもメイン処理のトリガーが明示的に1回(画面ONのときのみ1回)だったらトリガーの重複起動制御とかいらなかったわ
画像リンク[png]:imgur.com

やるにしても単一マクロにまとめるなら重複起動制御はもっと外(ループの外)で変数別に用意してやった方がわかりやすいね
988: 2021/09/30(木)15:12 ID:E7VA6uO/(3/6) AAS
通知の下のボタンで分岐が今後のアップデートで入るっぽい
Post in thread 'Notification action buttons'
www.macrodroidforum.com/index.php?threads/notification-action-buttons.1137/post-6305
989
(1): 2021/09/30(木)17:10 ID:1C/tMVPk(1) AAS
>>987
先輩!めちゃくちゃ簡便化されてるじゃないですかw
これでだいぶ楽になります
あとElse ifの括りってコピペできないのでしょうか?
990: 2021/09/30(木)17:32 ID:9iplSbFE(2/2) AAS
>>989
初めは基本即時実行&実行中があれば待機って作ってたんだけど
事前予約と開店処理だなって考えたらね

コピーはアクションを最後に追加する仕様だからElseIfだけ中抜きってのは出来ないんじゃないかな?
無駄なチェック(とログ)増えるけどIfだけで作ってもいいんじゃない?
991
(1): 2021/09/30(木)19:01 ID:go7M7zKF(1/2) AAS
マクロ項目色々見てる時に、「位置情報の更新間隔を設定」で時間弄ったんだけど
これ元に戻したいんだが、デフォルトの時間ってどんだけだったかわかる人いない?
992
(1): 2021/09/30(木)19:07 ID:XJzJPGFN(1/2) AAS
>>991
10文
993
(1): 2021/09/30(木)19:09 ID:XJzJPGFN(2/2) AAS
>>992
間違えた  10分
994
(2): 2021/09/30(木)19:17 ID:eH7Y9atD(1) AAS
未発動のトリガーの使い方がわからず
誰か未発動使った簡単なマクロ画像アップ頼みます
macrodroid1ヶ月目の初心者
995: 2021/09/30(木)19:29 ID:go7M7zKF(2/2) AAS
>>993
ありがとう!
996: 2021/09/30(木)21:41 ID:E7VA6uO/(4/6) AAS
>>994
こういうことだけどピンとこないなら無理して使わなくていいと思うのよ
未発動って和訳が悪いから分かりにくい
「発動したトリガ」に対してなら「発動していないトリガ」でいいのにね
画像リンク[png]:i.imgur.com
画像リンク[png]:i.imgur.com
997: 2021/09/30(木)21:56 ID:E7VA6uO/(5/6) AAS
trigger fired / trigger not fired
すごい分かりやすい
発動したトリガ/ 未発動のトリガ
すごい分かりにくい

強いて漢語で言えば不発(動)だけど時間経過を意識しないある1点の事象に未をつけて否定するのは間違ってるんだよなあ
998
(1): 2021/09/30(木)22:00 ID:Qxp0NtE5(1/2) AAS
>>994
簡単なマクロには使われない気がします
ややこしく複数のトリガーを設定してて、
さらに条件分岐ifでアクションも複雑に制御するとき私は使っています
999
(1): 2021/09/30(木)22:06 ID:E7VA6uO/(6/6) AAS
>>998
ポジティブ列挙に統一しておいた方がわかりやすいって考え方もあるしね
0.01ミリ秒を削る作業ではないし
短ければわかりやすいってもんでもないね
1000: 2021/09/30(木)22:20 ID:Qxp0NtE5(2/2) AAS
>>999
旗揚げゲームでも
赤上げて、白下げる、なら簡単だけど
赤あげないで、白さげない、と言われると急に難しくなりますから
私の場合は複雑になってしまって仕方なく使ってる感じです
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 102日 7時間 51分 20秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net

▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.222s*