端末の現在の日時を決まった数値で増減させる機能が欲しい
例えば、フローティングアイコンをタップすると、現在の日付を一日進めるなど。
私はこのアプリを使用開始して間もないので
詳しくありがとうございます。はい!そのような「何をどうする」という動作は自分でマクロを組みます。
自分でマクロ(動作)を組んで実装できるのがMacroDroidアプリのイイところ。
マクロ構成は、ずばり!ご自身が述べているとおり、そのまんまです。
アクションについて詳しくステップを見ると、
- トリガー: フローティングボタンを押す
- アクション: システムの時刻を変更する。
1.「現在時刻」を取得して変数に保存しておく
2.その変数値に「+1日」した値で更新する。
3.「システムの日時」を上記2の値に変更する
・現在時刻をマジックテキスト(自動取得)でシリアル値で取得できます。
・1日の秒数(86400秒=60 x 60 x 24)を、そのシリアル値(現在時刻)に加算する。
・アクション「システム設定」の「Global」あたりのどっか、にそのシリアル値を設定する。
View attachment 3217
View attachment 3218
View attachment 3219
問題は・・・
アクションの「システム設定」ですが、どこに設定するのだろう?
通常、時刻設定は自動取得で使うのが一般的です。
システム設定の「auto_time」は「時刻の自動同期」に関する設定です。
それを無効にして、代わりに、どっかに手動で設定すれば、できるはず・・・
【Android】時刻を変更する - adb shell date
ADBを使えば出来るのは確実です。
やっぱりADBなしでは無理かしら?
私は詳しくないので・・・
もっとシステムに詳しいマニアックな方に聞くといいかもしれません。
では、叫びましょう!
「誰か詳しい人、教えてくださーい!」
これで祈りましょう、アーメン
きっとハマリますよー!(笑)
ゲームのパズルしてるみたいに。
なお、「マクロを組みたい!どうするの?」は一般ヘルプのコーナーが最適なので移動しておきますね。
I think it should be possible using the shell script action with the rooted option, using a command like: adb shell "date `date +%m%d%H%M%Y.%S`"
端末はroot化しているのですが、肝心の変数等の扱いに慣れてなくて、未だに実現できずにいます。残念ですがroot化していないと無理です、adbでも権限が足りないので反映されないはずです。
yamachanさん、こんにちわ。端末はroot化しているのですが、肝心の変数等の扱いに慣れてなくて、未だに実現できずにいます。
root化+adbコマンドならば、MacroDroidを使わずにできてしまうのと、PCとの接続が必須になってしまうため、どうにかMacroDroid単体で実現できないのかなと。
ご丁寧にありがとうございます。yamachanさん、こんにちわ。
端末側でRootを取得されている、とのことですので、date -sコマンドで、システム時刻の変更が出来ないでしょうか?
手元にルート環境が今ないので、最後のシェルスクリプトアクションのみ予測で作っていますが
こちらにサンプルをアップロードしました。
*ルート必須です。理由はディムロスさんの指摘通りシステム時刻を弄るコマンドは、ルート権限を必要とするためですね。
宜しければお試し下さい。
ちなみにですが、時間を戻すときにはNTPなり、端末自体の時刻同期をするのが、変なコマンドを考えなくてよいので楽なはずです…
以上です。
宜しくお願い申し上げます。
残念ですがShellScriptResultsにdate: Unknown option 's' (see "date --help")となり動きません。マクロサンプルの間違い箇所を修正しておきましたので、宜しければ、お手数ではありますが再度お試し頂ければと存じます。
ディムロスさんのおっしゃる通りで、ヘルプを見るとToolbox関数のdateコマンドでは、通常Linuxで実装されている -sや--setがないですね。失礼しました。残念ですがShellScriptResultsにdate: Unknown option 's' (see "date --help")となり動きません。
ネットで数多くのsオプションの文献を読みましたが私の試した限りではこのオプションは有効では無いようです。
協力して1つのハードルを乗り越えられたことを嬉しく思います。確認してみたところ、Android端末での日付設定は@Dimlosさんのシェルスクリプト呼び出し方法が最良のようです。
root端末を用意できましたので完成度は@LinerSevenに劣りますがなんとか動くものを作れたと思います。端末のネットワーク時間を利用するやネットワークから提供されたタイムゾーンの使用を止めてから試してください。
ユーザー変数のAdditionに増減させたい数値(進めるなら数字、戻すなら-数字)を設定してマクロを試すとちょっと待たされますが日付が変更されると思います。
とりあえず日付だけ動きますがエラー制御も何もしていないのでこれをベースに改良される事をオススメします。
※アップしていたマクロに致命的な間違いを発見したので差し替えました、ユーザー変数のAdditionまで初期化していたので今日の日付から動かないマクロになっていました。私のマクロは日付の概念ではなくただ数字として加減していますので月跨ぎなどは対応できないのであくまでサンプルとしてお考え下さい。
お二方、ありがとうございます。追記
マクロのサンプルを差し替えました。
ディムロスさんのマクロがヒントになったのですが、
ルートを取っていれば
date @シリアル値
で時間が変えられるので、
Macrodroidのマジックテキストに存在しているシリアル値のマジックテキストで、
種になるシリアル値を算出したのち
(時間*3600秒)
のずらし用シリアル値を加減算、
加減算したシリアル値を
date @xxxxxxxx
と、@のあとにシリアル値、もしくはシリアル値を格納した変数を指定してやれば、
たくさん変数を使わなくても時間のコントロールができることがわかりました。
あと、時間を正常にもどす際は、
設定>システム>日付と時刻>ネットワーク時刻を使用する
のチェックをオフオンするとNTPが走り、時刻同期がなされて正常な時間に補正されますので楽が出来ますね。
勉強させて頂きました。
ありがとうございました。