ZenFone 2 Laserのメニューボタン

メニューボタン

ZenFone2 Laserを弄くり回して遊んでいるのだがあちこち触りすぎて焼き直したり初期化してやらないといけないことがある。
で、焼き直し・初期化したら当然初期設定に戻るのだけど、ZenFone2 Laserには非常に気に入らない初期設定がある。それは画面右下の[マルチタスク]ボタン長押しがスクリーンショットに割り当てられていること。

Androidのアプリにはメニューボタンの使用を前提としているものがあるのでメニューボタンが無いと困ることが。そこで機種によっては[マルチタスク]ボタン長押しがメニューボタンとして機能するようになっている。
Androidの流儀としてスクリーンショットは音量[↓]ボタン+電源ボタン。もちろんZenFone2 Laserでも音量[↓]ボタン+電源ボタンでスクリーンショットは撮れる。そしてZenFone2 Laserには画面下のボタンが3つしかなくメニューボタンに相当するものは無い。なのに、ZenFone2 Laserは[マルチタスク]ボタン長押しがスクリーンショット。
Why Taiwanese people? おかしいだろ!

メニューボタン1
設定画面で「ASUSカスタマイズ設定」を押す。

メニューボタン2
タッチキーの項目の「マルチタスクボタン」を押す。

メニューボタン3
初期値は「ボタンを押し続け、スクリーンショットを保存する」だが「ボタンを押し続け、メニューを表示する」に切り替える。

メニューボタン4
マルチタスクボタンの下の現在のモード表示が「ボタンを押し続け、メニューを表示する」になっていることを確認して終了。

たったこれだけだが変更し忘れていると💢ってなるのといざ設定変更しようと思ってもウキッ?ってなるので備忘録。

なお、上はZE550KLの話であってZenFone2 Laserの他のモデルでも同じかどうかは知らない。

関連記事:

目から鱗のアンチ広告ブロック

認めん

昨日の記事を書いた後に他所様の広告ブロック検知方法を検索していたら、まさにタイトルとおりの目から鱗なコードを見つけた。

https://ctrlq.org/code/19818-detect-adblock-javascript ここの記事の3番。

広告ブロック検知部分はそのままで検知したときにやりたいことだけ改変してこんな感じにする。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<script type="text/javascript">
<!--
  window.onload = function() {
    setTimeout(function() {
      var ad = document.querySelector("ins.adsbygoogle");
      if (ad && ad.innerHTML.replace(/\s/g, "").length == 0) {
        //したいことを書く ここから
        document.getElementById('primary').style.display = "none";
        document.getElementById('message').style.display = "block";
        //したいことを書く ここまで
      }
    }, 2000);
  };
// -->
</script>

上の例では広告ブロックの検知対象はGoogle AdSenseの広告だけど少し変えるだけで他の広告にも対応できる。
7行目から10行目の間に広告ブロックを検知した場合にやりたいことを書くが、このjavescriptはページを表示し終わってから実行するものなので更にdocument.writeなどで表示する文字列を追加しようとすると表示がおかしくなる(白紙に追加したつもりの文字列が表示される)ので注意。
たとえばページ内に <div id="primary" class="…">...コンテンツエリア...</div> というのがあるとして、 広告をブロックしていることを検知したらそのprimary IDが付いているタグ(で囲われている範囲)を非表示にするのが8行目。
反対に通常は非表示の <h2 id="message" style="display:none;">メッセージ</h2> があるとして、広告が表示されていなければそれを表示するというのが9行目。(このh2タグはページのフッタ辺りにでも埋め込んであるとする。)
もちろん元ネタサイトの例のようにinnerHTMLで書き換えるというのもあり。

この方式の凄いところはたった2行しかない検知部分。
「広告が正しく読み込めなかったら」という原理は私のような素人でも思いつくが、実際に機能するコードがどうしても自分では作れなかった。
しかも、ページ内のコードを見るような代表的な広告ブロックアプリはもちろん、普通のアンチ広告ブロックでは検知しにくいhostsファイルを使った広告ブロック?にも対応できる。
ただし、ページを読み込み終わってから動作する仕組みなので読み込み終わりまでの1,2秒は普通にページが表示されてしまう。他のアンチ広告ブロックでもやっぱりページ読み込み時には普通に表示されるのが多いので大きな欠点ではないのかもしれない。なお、昨日の記事の方法だと、全ての方式の広告ブロックではないものの広告ブロック機能が有効なら最初から表示させたくない部分は表示されない。

この記事に興味があった人にはこの記事の続編続・目から鱗のアンチ広告ブロックをオススメ。

関連記事:
Up