「エスケープキャラクタ」は、『Glaeja』の「テキスト」レイヤー表示文字列や、「多角形」レイヤーの頂点座標[水平][垂直]等を記述するときに利用できる文字列の記述に関わる特殊文字です。通常の記述方法であればそのままの形で描画エンジンに解釈されますが、この「エスケープキャラクタ」を用いた記述の場合には、その内容が解析され別の文字列に展開されてから描画エンジンに解釈されます。本エントリでは、その「エスケープキャラクタ」の概要を解説し、そのうちのシステム情報展開系エスケープキャラクタに関する一覧を記します。「~」:システム設定情報分類エスケープキャラクタとはエスケープキャラクタとは、文字列に含まれる特殊記号のことです。『Glaeja』の文字列解析エンジンは、この特殊記号が文字列中にあった場合には、その記号文字で囲まれた部分を読み取り、その記述内容に従って以下の動作をおこないます。囲まれた部分を、システム情報等を表す別の文字列に展開・置換する囲まれた部分より前方(左側)の文字列を置換する(@...@)文字列解析エンジン自体の挙動を変更する(|...|)このエントリでは1.に関して解説します。2.や、3.に関しては別エントリをご覧ください。具体的な情報というように判断されます。「エスケープキャラクタ」、「囲まれた部分の文字」を「展開文字」とします。要するに、システム情報ごとに異なる変換テーブルがあり、エスケープキャラクタで「どのシステム情報の変換テーブルを使うか」を決めて、展開文字で「そのテーブルにあるどの情報を表示するか」を決めるわけです。「H」という展開文字はいくつかのシステム情報分類の変換テーブルに重複して存在しますが、カレンダー情報分類となる「$」の変換テーブルでは[時(0時始まり24時間表記)]、バッテリ情報分類となる「#」の変換テーブルでは[バッテリの健康状態]と、異なる情報に展開されます。展開文字は文字列解析エンジンにより1文字ずつ解析・展開されていきますが、この展開には以下のような5つの規則があります。以下に各々の詳細を記します。異なる展開文字が1文字ずつ並んでいた場合には全て1つずつ展開されていく例えば、バッテリ充電率を表す「#P#」が「50」と、バッテリ充放電状態を表す「#S#」が「discharging」と展開される場合なら、「#PS#」と並べて記述すると「50discharging」と並んで展開されます。同じ展開文字が複数並んでいる場合は、その展開文字によって結果が異なるこの規則には、以下の3つの場合があります。100」と、桁数可変で展開されます。100」と、最小桁数2桁でゼロパッドされて展開されます。100」と、最小桁数3桁でゼロパッドされて展開されます。数値に展開される展開文字の多くが、このような桁数変化を起こします。「$E$」のように「E」を1つだけ記述すると、「Wed」と展開されます。「$EE$」のように「E」を2つ、「$EEE$」のように3つ記述しても、「Wed」と展開されます。「$EEEE$」のように「E」を4つ記述すると、「Wednesday」と展開されます。いくつかの展開文字で、このように個数によって展開結果が異なるものがあります。USB]と同じ結果に展開されます。変換テーブルにない文字は展開されず、そのまま出力される例えば、バッテリ情報分類となる「#」の変換テーブルには「m」という展開文字はありませんので、「#m#」は「m」と出力されます。カレンダー情報分類となるエスケープキャラクタ「$」では若干事情が異なります。「$」では展開文字の解析にJavaの「java.text.SimpleDateFormat」ライブラリを用いているのですが、このライブラリで定義されていない文字が含まれていた場合には、エラーとして入力文字列全体(※エスケープキャラクタと囲まれた部分だけでないことに注意)を削除してしまいます。エスケープキャラクタは「入れ子構造」になれない文字列解析エンジンの動作として、「あるエスケープキャラクタが見つかったら、そこから右へ最も近い同じエスケープキャラクタまでを“囲まれた部分”とし、そこに含まれる文字を“あるエスケープキャラクタに対応した変換テーブル”で展開する」となっていますので、展開の途中で変換テーブルを別のものに変更するようにはなっていず、そのため「入れ子構造」にもなりえません。現在、USBケーブルで充電中で充電率が72%だとします。AD]を表すのですが、「#P$G$#」は「72$USB$」と展開されます。「#...#」によってバッテリ情報分類系変換テーブルが優先して用いられ、中にある「$...$」でカレンダー情報分類系変換テーブルに変更されたりはしないわけです。よりそのまま出力される、というわけです。」は、エスケープキャラクタとして機能する文字で、これに囲まれた文字列は「一切の解析・展開を受けずそのまま出力」される、という「無変換」系エスケープキャラクタです。「'#P#'」は「#P#」というように、バッテリ情報分類系変換テーブルによる展開を受けずに出力されます。」だけは他のエスケープキャラクタで囲まれた内部で一階層の入れ子として機能できます。50」と展開されます。ちなみに、単一引用符そのものを出力するには、「\'」と記述すれば可能です。システム情報分類ごとの展開文字変換テーブル以下に、システム情報分類ごとの変換テーブルと、展開文字の一覧を記します。展開文字の変換に関わる“規則b”にあるように、複数並べた場合に展開結果が異なる場合には、それらを併記しています。基準日時についてはこのエントリを参照。[java.text.SimpleDateFormat]に定義されているものは使用できます。1.234「&」:メモリ情報分類RAMや内部ストレージ・SDカードの容量といった情報に展開されるエスケープキャラクタです。「オプションストレージ」は、[Glaeja設定]→[動作に関する設定]→[オプションストレージのパス]で指定したボリュームに関する情報に展開されます。回線方式がGSM/W-CDMAの場合、ASUから変換される。回線方式がCDMA2000の場合、dBmから変換される。未読数がゼロの場合、およびGmailアプリ起動後は「0」となる。設定された地点における天気情報に展開されるエスケープキャラクタです。『Glaeja』ver.4.7.0より、天気情報の取得先が複数になり、取得先に応じて展開文字が異なるようになりました。Feed」を使用している場合の展開文字はこちら「OpenWeatherMap」を使用している場合に展開文字はこちらを参照してください。拡張子「.skin」は省かれる。拡張子「.skin」が省かれたスキン名が、呼び出し順序の大元からコンマ区切りで出力される。「~l~」のみレイヤーのロケールが無視され、システムの設定言語の影響を受ける。1:07」のように展開される。am」のように展開される。さんのコメント...いつも参考にさせてもらっています。質問させてもらってもいいですか?NGならば削除お願いいたします。Glaejaで祝日名を表示させようとしているのですが、設定の方法がわかりません。カレンダー情報に展開されるエスケープキャラクタで解決できると思うのですが、キャラクタがわかりません。さんのコメント...う~ん......昔みたいにすべての祝日が日付固定ならなんとかできそうなんですが、いまは「X月の第Y月曜日」とかの祝日があるから難しいでしょうねぇ。それに春分・秋分の日は、毎年日付が変化しますからねぇ。不可能ではないですが、かなり面倒かつ難しいですよ。さんのコメント...さっそく回答ありがとうございます。ZooperWidgetでは『#COTITLE#』FirstEventTitelという値で取得可能でした。さんのコメント...そもそも、『Glaeja』に「今日が祝日かどうか判定する」機能や「祝日名を取得する」機能を実装してないので無理です。さんのコメント...ああ、『Glaeja』には「スマホ内にあるカレンダーから今日の予定等を取得する」機能もありません。お書きになられているZooperの機能はこれですね。さんのコメント...そうですか。教えていただきありがとうございました。さんのコメント...ggさん、こちらの手違いでコメントを削除してしまいました。いじるのが楽しく、狂ったように使わせてもらっています。「WIFI」の表示になってしまうので・・・。「!D!」はデータ通信種別なので、WI-FI掴んでると「WIFI」になります。WI-FI掴んだ時点で、それまで掴んでたコネクション(LTE等)は破棄されますので、おっしゃられているようなことは無理ですね。「!D!」はデータ通信種別なので、WI-FI掴んでると「WIFI」になります。おっしゃられているようなことは無理ですね。今回はとりあえず別のsignal表示系のウィジェットと合わせて使おうと思います。さんのコメント...はじめましてリッチテキストレイヤーで~L~を使おうとしたのですが、ロケールを日本語にしないと値が出てこないみたいです。他のテキスト系レイヤーではロケール関係なく表示できます。申し訳ないですが公開は年明けまで待って下さい。その間は、お手数ですがリッチテキストでは「~L~」だけ単独の文字列にしてロケールを日本語にしてやってください。さんのコメント...トリガーを複数のレイヤーにかける方法はありますか?お願いします。さんのコメント...ありません。さんのコメント...今のこの時間の$C$が-0.2となります。さんのコメント...あ~~、これは計算誤差というか値の切り替え(0~29)が上手くいってないですねぇ。『Glaeja』で利用させていただいている計算式では、このゼロへ戻す際に若干の計算誤差が発生し、ゼロを飛び越えてマイナスが発生することがあるようです。さんのコメント...%r%はコンマやスラッシュが含まれてるので、@...@を駆使して切り出すのも不可能ではありませんが面倒ではありますね。@...@を駆使するしかありませんので、以下を参考に頑張ってください。http://bananawani-mc.blogspot.jp/2011/10/android.html単純に明日以降の降水確率を知りたいのなら、以下を参考に%S%を使ったほうが楽ちんでしょう。Adsense社による広告配信のために、Cookieやウェブビーコンを使用したデータ収集をおこなっています。ブラウザのCookie機能をオフにすることで、第三者へのデータ送信をおこなわせないことが可能です。詳しくは、Adsense広告の公式プライバシーポリシーをご覧ください。http://www.google.com/intl/ja/privacy.html本ブログで紹介したプログラム等による不利益等は一切関知いたしません。