Adblock FastはNexus6に効果がなかった

広告が邪魔なのでブロックできるアプリを探していると、こんなの見つけた play.google.com

Adblock Fast

なんか良さげ!

何も考えずNexus6に入れてみる



うーん、広告がブロックされている気配がない...

アプリの説明を読んでみると

The app requires and blocks ads in Samsung Internet 4.0 and up (not in other apps). After installing, follow the in-app instructions to turn ad blocking on.

Samsung Internetというアプリにしか効果がないようだ…

入れた意味なかった…

ちゃんと説明を読まない俺がダメなんですけどね

Samsung Internetとは

そのSamsung Internetとは何だろう?と調べると

play.google.com

サムスン端末じゃないとインストールできないっぽい

俺は無駄な時間を過ごしたのか

結局、広告はブロックできず、
効果のないアプリをインストールしては調べ、
読者は無駄な時間を費やしてしまったのか

いや、そうではない

収穫はあったのだ
あなたが開発者ならね

なーんと、Adblock Fastのアプリ説明にgithubリポジトリが載っていて、ソースが見れるじゃありませんか!

GitHub - rocketshipapps/adblockfast: A new, faster ad blocker for Android, iOS, Chrome, and Opera.

広告をブロックする処理がどうなっているのか、勉強になりそう!
(俺は読んでないけど)



こうして、会社の昼休みが終わっていくのであった

10000時間よりも20時間

こんな記事を見て「なるほど」と感じた事がある。

simplearchitect.hatenablog.com

要約すると

何かを極めるになるには10000時間(4~5年)は必要になる。
最初は当然だれでも苦労するが、
20時間あたりから効率よくできるようになる。
その前にリタイアしてはもったいないですよ

という事が書いてある。

なるほど

10000時間努力を続けろ!
よりも
20時間だけでいいから続けろ!
のほうが遥に楽に感じる。

ある怠け者の人に、
「10000時間なんて無理だけど、20時間だけなら頑張れそうかも」
そう思わせたら、もうこっちのものだよね。

その怠け者…

俺の事なんだけどねw

Android4.0未満でadb backupは動かない

タイトルで結論が出ているが、それを知らず30分も調べた。

Android 3.0 Honeycomb端末を一生懸命adb backupしていると

adb: unable to connect for backup

となってしまうからだ。

結果、以下のリンクを見て出来ないという事を知ったので諦めた。

(Android4.0以降限定)adb backupを利用してみた! - ちむどろいど

Android4.0から追加された新機能で、”adb backup””adb restore”というコマンドがあります。

どうしても4未満で取りたいなら

海外のエンジニアは自前でスクリプトを組んでどうにかバックアップを取っているようだった。 android.stackexchange.com

adb shellとawkを組み合わせてバックアップ取ってる人もいて、関心した

やいまふに2.0.5リリース

個人開発で公開している八重山離島船の運行確認Androidアプリ、やいまふにをアップデートした。

play.google.com

メインは、昔にやっつけで作った時刻表を色々いじった。
あとは詳細のレイアウト詳細や、その他バグ修正。

アプデ内容

時刻表リニューアル

簡単に言うと、Google製アプリのレイアウトを真似た

f:id:banbara:20160222121517j:plain

既存のデザインを一新したんだけど、
CardViewの余白などをGoogle製のアプリを参考に調節した。

あと、運行会社別にタブ化して横スワイプで切り替えれるのは楽かなと思ってタブ化した。
あと、スピナーの自作View化にチャレンジしたが、結局見た目はデフォルトのスピナーと同じになった(笑)
凝り出すとキリがないし、勉強になったのでまぁいいか。

今回おもったこと

今回はCardViewをメインに調整したけども、
そもそもどういう場合にCardViewを使えば効果的なのかがよく分からない。

色々なアプリをみたところ、
項目毎にCardViewを使用して並べておいてある場合と、
強調したい個所だけCardViewにしているパターンの違いを感じた。

なんとなく使っているパーツは、実はこういう場面に使うとベストである!
的な、そういうデザイン寄りの知識が自分にはかなり不足している事を感じた。

プログラマーだし、仕方ないね

Android Mの外部ファイルへのパーミッション変更を今更確認

開発中に実体験で学んできた。

外部SDにログを出力しようとしたところ、Android6.0のMarshmallow端末のみエラーとなった。

/storage/emulated/0/20160215_171358.log: open failed: EACCES (Permission denied)
 java.io.FileNotFoundException: /storage/emulated/0/20160215_171358.log: open failed: EACCES (Permission denied)
     at libcore.io.IoBridge.open(IoBridge.java:452)
     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
     at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
     at java.io.FileWriter.<init>(FileWriter.java:96)
     ...

原因はbuild.gradleのtargetSdkVersion 23の状態でビルドし、マシュマロ端末側からアクセス権限を許可していないためだった。

f:id:banbara:20160215182726j:plain

設定→アプリ→お目当てのアプリ→許可へすすみ、タップして許可onするとログ出力もファイルアクセスもできた。

なるほど、Marshmallowから個別に権限許可が必要なのか
この仕様変更は大きいな...

個別許可が面倒な場合

build.gradleのtargetSdkVersionを22にすりゃOK

targetSdkVersion 22

これで許可うんぬんの確認が不要で、外部ストレージにアクセス可能になった

Jsoupの&nbspを消す方法

trim()で消えない空白文字がある!?
と思ったら、Jsoupで取得したhtmlに&nbspだった。

どうやらjavaでは空白として認識せず、trimでも消せず困っていたら

java - How to remove   with Jsoup? - Stack Overflow

上のリンクをもとに

String value = element.child(0).text().replace("\u00a0", "");

で消すことができた。

&nbspは「replace("\u00a0", "")」で消せる!
また一つ賢くなった