2017年12月28日木曜日

Wi-Fiのセキュリティについて

こんにちは。

知り合いでクレジットカードを不正利用されるということが起きました。

少し、聞き取りをしましたが、漏洩の原因が不明です。
ただし、Wi-Fiについて、意識が低いことが分かったので、できるだけ多くの方に知っていただきたく、記事に残すこととしました。

Wi-Fiは、LANケーブルを繋げず、電波で通信を行います。電波なので、誰でも傍受できてしまいます。
そこで、データを暗号化し解読を難しくすることにより、セキュリティを維持しています。

Wi-Fiの暗号化の技術は、WEP→WPA→WPA2と進化してきました。

ただし、最新のWPA2を使っていれば、安心!!ってことはありません。

ちょっと前にWi-Fiのセキュリティホールが話題になっていましたね。

IPA(情報処理推進機構)にも記事があります。

https://www.ipa.go.jp/security/ciadr/vul/20171017_WPA2.html

最新のWPA2で脆弱性が発見されました。

Windows、Android、iOSは、OSのアップデートするようにと書かれています。Androidは使っている端末がアップデートを公開しているかどうかは機種に依ります。
まだ対応していない機種もありそうですね。

しかし、アップデートしたからと言って、安心はできません。
脆弱性はこれから次々と見つかっていくと思われます。

また、ホームページを開くとき、アドレスを見ると、「http」、または、「https」で始まっていると思います。

「https」の「s」は、secureの略であり、暗号化されています。ホームページで重要な情報を入力する際には、「https」で始まっていることを確認する習慣をつけましょう。

重要な情報が、例え暗号化されているとはいえ、誰でも傍受できる空間を飛び交っているというのは、危険です。

まとめ

・パソコンは、有線LANで接続する。

・重要な情報は、パソコンでのみ入力する。

・「http」で始まるアドレスのホームページでは重要な情報を入力しない。

・公共のWi-Fiは使用しない。

・全ての機器のOSを常に最新にアップデートする。

・セキュリティソフトをインストールする。

補足

有線LANは、物理的に難しいため、Wi-Fiで繋いでいるという人もいると思います。
しかし、情報を抜かれるのと、ケーブルの配線が大変なのは、どちらが良いでしょうか。
そもそも、Wi-Fiでつないだ場合、有線に比べて、通信速度が落ちます。

ちょっと高くなりますが、平べったくて、軽いケーブルも売っています。これを使えば、床ではなく、扉の上などを這わせやすいです。


2017年12月16日土曜日

DVDラックのヘルプ


公開中のDVDラックのヘルプを記載します。


0.目次

  1. DVDラック画面

  2. バーコード読み込み

  3. 検索画面

  4. 入力画面

  5. Web検索画面

  6. 検索結果

  7. 新作検索

  8. バックアップ

  9. 動画広告視聴



1.DVDラック画面





①メニュー

・「表示切替」 DVDの一覧(④)表示方法を変更します。
 クリックするたびに、1列→2列→3列→1列・・・と変化します。
 画面を開き直したとき、前回選択した列数で表示されます。
・「検索」 登録済みのDVDの検索画面を表示します。
・「変更」 選択したDVDを一括変更します。
・「削除」 選択したDVDを削除します。
・「新作検索」 新作検索を行います。
・「設定」 設定画面を表示します。
・「ヘルプ」 本ヘルプを表示します。
・「お知らせ」 お知らせと更新情報を表示します。
・「バナー広告非表示」 動画広告を視聴して、一定期間、バナー広告を非表示にします。


②タブ

登録済みのDVDの一覧を以下のグループ分けで表示します。
設定の「DVDラック画面」-「タブ表示位置調整」で、タブを表示/非表示設定、タブの順序設定ができます

・「全て」 全てのDVDを表示します。
・「購入予定」 入力画面で購入予定としたDVDを表示します。購入予定のDVDは、このタブにしか表示されません。
・「視聴済み」 入力画面で視聴済みとしたDVDを表示します。
・「未視聴」 入力画面で視聴済みとしていないDVDを表示します。
・「シリーズ」 シリーズ物の一覧を表示します。
・「シリーズ以外」  シリーズ物以外の一覧を表示します。
・「出演者/監督」 出演者/監督の一覧を表示します。

③全選択、並び替え

・「全選択」
DVDの一覧の全選択を行います。選択後、メニュー(①)の変更、削除が行えます。
・並び替えボタン



DVDの一覧の並び替えを行います。↓が降順、↑が昇順になり、シリーズカナや発売日、更新日で並び替えが行えます。クリックするたびに、変化します。

・並び替え選択ボタン
 DVDの一覧の並び替え選択画面を表示します。


・「件数」
選択中のタブ(②) のDVDの数を表示します。

④DVDの一覧

選択中のタブのDVDの一覧を表示します。メニュー(①)で表示方法変更や、③で並び替えができます。

⑤追加ボタン

DVDを追加します。以下が選択できます。
・「バーコード」
カメラ機能でバーコードからJANコードを読み取り、WebからDVD情報を取得します。
バーコード読み込みは、カメラ機能を使用する為、最初に、権限の許可のメッセージが表示されます。
・「手入力」 DVD情報を全て手入力します。・「Web検索」 タイトルなどの検索条件を入力し、WebでDVD情報を取得します。




⑥「出演者/監督」タブの「対象」

「対象」にチェックを入れると⑧で除外されていない出演者/監督の一覧が表示されます。

⑦「出演者/監督」タブの出演者/監督

登録されている出演者/監督の一覧が表示されます。

⑧「出演者/監督」タブの除外

チェックをすると新作検索の「出演者/監督で検索」で除外されます。

(新作検索の通信量と時間が節約されます。)


⑨変更クリック

DVDを選択して、メニューの「変更」をクリックすると以下の画面が表示されます。
一括変更したい項目の左側の「変更」にチェックを入れて、 右側に変更したい内容を入力してください。


変更クリック時




△目次に戻る

2.バーコード読み込み


JANコードが読み取れるまで、オートフォーカスを連続で行います。
バーコードが入っていますと、読み取ることができます。
DVDのバーコード読み取りの例




△目次に戻る

3.検索画面




登録済みのDVDを検索できます。検索したい条件を設定して、DVDラック画面に戻ると該当のDVDだけが表示されます。検索中は、DVDラック画面のメニューの検索アイコンが赤くなります。

検索中のDVDラック画面のメニュー

①メニュー

・クリア 検索条件を初期状態に戻します。

②未視聴/視聴済み

全て、未視聴、視聴済みから選択します。

③タイトル

入力した文字列を含むタイトルを検索します。


④ジャンル、棚コード、タグ、出演者/監督

入力した文字列と一致するジャンル、棚コード、タグを検索します。
入力した文字列を含む出演者/監督を検索します。
入力欄で文字を入力できますが、選択ボタンで、選択することもできます。
:選択ボタン



⑤Web検索で非表示に設定したDVDを表示

Web検索や新作検索で、非表示に設定したDVDだけを表示します。


△目次に戻る

4.入力画面




①メニュー

・「キャンセル」 (変更のときのみ)
保存せずに画面を閉じます。
・「保存」(新規追加のときのみ)
DVD情報を保存します。
新規追加ではない場合は、自動で保存します。
・「非表示」(Web検索結果、新作検索結果)
DVD情報を検索結果で非表示になるように設定します。
・「削除」(変更のときのみ)
DVD情報を削除します。
・「再取得」
WebからDVD情報を取得します。
ただし、以下は変更しません。
視聴済み、購入予定、ジャンル、棚コード、タグ、視聴日、感想、レート
・「シリーズWeb検索」
タイトル(シリーズ)、出演者/監督を設定した状態でWeb検索画面を起動します。
・「出演者/監督Web検索」
出演者/監督を設定した状態でWeb検索画面を起動します。



②シリーズ編集、話数編集

(1)シリーズ編集


シリーズを編集します。
「シリーズ編集」ボタンの横に、シリーズとナンバーを表示しています。
「シリーズ編集」ボタンをクリックすると、以下の画面が表示されます。





(ア)自動作成、1.0とする、コピー


ボタン説明
自動作成下記(イ)~(オ)を自動で設定します。
ただし、完結は、自動で判別できません。手入力してください。
1.0とするシリーズにタイトル、シリーズ種類にシリーズ、ナンバーに1.0を設定します。
コピーシリーズにタイトル、シリーズ種類にシリーズ以外を設定します。

※バーコード読み取り時、Web検索時に、上記の自動作成と同じ処理が実行されています。
※自動作成とは、タイトルからシリーズと判定できる文字列を探して作成しています。
現在、対応している文字列は、
「(10)」、
「上」、「中」、「下」、
「上巻」、「中巻」、「下巻」、
「前」、「後」、「前編」、「後編」、
「2018年4月号」、「2018年4/1号」です。
数字は、0123456789、零一二三四五六七八九十壱弐参を認識します。
括弧は、((〈<【「『を認識します。

(イ)シリーズ

 シリーズを入力します。シリーズ物の場合は、タイトルから巻数などを除いたものを入力します。
例:「ウォーキング・デッド コンパクトDVD-BOX シーズン1」
→「ウォーキング・デッド」

(ウ)シリーズカナ

シリーズのカナを入力します。カナは並び替えで使用します。
自動作成などでは、タイトルカナを設定しています。

(エ)シリーズ種類

シリーズ以外、シリーズ、完結から選択します。
シリーズ物で、このDVDで完結している場合は、完結を選択してください。
DVDラック画面の「シリーズ」 タブで「完結」と表示されます。
また、新作検索の「シリーズで検索」で検索から除外されます。
(新作検索の通信量と時間が節約されます。)

(オ)ナンバー

シリーズの場合に巻数を入力します。ナンバーは並び替えで使用します。
自動作成では、上、中、下の場合、1.0、2.0、3.0を設定します。


(2)話数編集


話数を編集します。
「話数編集」ボタンの横に、話数を表示しています。
「話数編集」ボタンをクリックすると、以下の画面が表示されます。


(ア)話数、反映ボタン

話数が未設定の場合は、この(ア)のみ表示されます。
話数を入力して、反映ボタンをクリックして下さい。
話数分だけ、下に行が追加されます。

(イ)視聴済み

視聴済みの場合、チェックを入れてください。どこまで視聴したか分かりやすくなります。

(ウ)タイトル

各回のタイトルを保存したい場合は、該当回のタイトルを入力してください。


(エ)視聴日

視聴日を保存したい場合は、視聴日を入力してください。








③完結

シリーズ物で、このDVDで完結している場合は、チェックを入れてください。
DVDラック画面の「シリーズ」 タブで「完結」と表示されます。
また、新作検索の「シリーズで検索」で検索から除外されます。
(新作検索の通信量と時間が節約されます。)

④視聴済み

視聴した場合、チェックを入れてください。

⑤購入予定

購入予定の場合、チェックを入れてください。
DVDラック画面の「購入予定」タブだけに表示されます。

⑥イメージ変更

イメージ表示部分をクリックすると、イメージを変更できます。以下から選択できます。

・拡大表示
イメージを拡大表示します。
・カメラで撮影
外部カメラを使用して撮影します。撮影後、外部ツールで画像の編集ができます。
その際、一時的にカメラの使用の権限許可と、写真を外部ストレージに保存するため、外部ストレージへのアクセスの権限許可のメッセージが表示されます。許可をすると操作ができます。
・アルバムから選択
既にアルバムに保存してある画像が選択できます。
・削除
表示されているイメージを削除します。

⑦サイト

Amazon、楽天のこのDVDのページを表示します。購入や予約ができます。

⑧出演者/監督

出演者と監督は複数人登録できます。登録した先頭の名前が⑧に表示されます。
左の選択ボタンをクリックすると出演者/監督の編集画面が表示されます。






⑨ジャンル、棚コード、タグ

入力欄で自由に入力できます。選択ボタンクリックで、他のDVDで入力済みの一覧が表示され、選択することもできます
・ジャンル
「アクション」などを入力して下さい。使用しない場合は未入力でも構いません。
・棚コード
「DVDラック1」や「映画館」、「レンタル」、「処分済み」などを入力して下さい。使用しない場合は未入力でも構いません。
・タグ
ご自由にお使いください。 使用しない場合は未入力でも構いません。

⑩視聴日、感想、レート

自由にご使用ください。
また、感想、レートは、設定の「入力画面」-「感想表示」、または、「レート表示」で、表示/非表示の切り替えができます。
このボタンは、クリアボタンです。感想をクリアします。




△目次に戻る

5.Web検索画面

DVD情報をWeb検索します。



タイトル、出演者/監督、発売元、JANを入力して、メニューの「実行」をクリックしてください。

取得ページ数を設定して、取得するページの限度を指定できます。1ページ当たり30件です。
例えば、「5」と設定すれば、最大で150件までしか取得しません。

実行中は、メニューの「実行」が「キャンセル」に変わります。実行をキャンセルしたい場合、クリックしてください。

メニューの「前回実行結果」で、前回の検索結果が表示されます。


△目次に戻る

6.検索結果

Web検索や新作検索結果表示で、表示されます。


①メニュー

・「保存」 ②で保存したいDVDを選択し、「保存」をクリックすると一括保存ができます。
1.DVDラック画面の⑧変更クリックと同じ画面が表示されますので、一括して入力したい項目を入力してください。

・「非表示」  ②で非表示にしたいDVDを選択し、「非表示」をクリックすると一括保存ができます。
Web検索や新作検索で今後表示しないように設定します。
非表示にしたDVDは、3.検索画面の⑤Web検索で非表示に設定したDVDを表示で、表示することができます。

②選択

メニューの「保存」や「非表示」をクリックする前に選択します。

③DVDをクリック

DVDをクリックすると、入力画面が表示されます。入力画面でも「保存」、「非表示」ができます。



△目次に戻る

7.新作検索

DVDラック画面のメニューから実行できます。以下が選択できます。
・シリーズで検索
・出演者/監督で検索
・前回実行結果表示

登録しているDVDの一番新しい発売日以降発売のDVDがないか検索します。
通知に「新作検索実行中」と表示されます。キャンセルをクリックすると新作検索を中止します。
新作検索が終了すると、通知に「新作検索が完了しました。〇件」と表示されます。
完了の通知をクリックするか上記の「前回実行結果表示」で検索結果を表示します。
検索結果は、6.検索結果と同じです。

・シリーズで検索
完結以外のシリーズ物全ての新作検索をします。
・出演者/監督で検索
除外以外の出演者/監督全ての新作検索をします。

設定の「新作検索」で、以下が設定できます。
・完結を含めない
・1年より前を含めない ※1年以内のDVDだけを対象にします。
・自動新作検索種類、周期、時間を設定します。次回実行の欄に、次回の実行時間が表示されます。

△目次に戻る

8.バックアップ(古いバージョン)

DVDラック画面のメニューから実行できます。
初回に、権限許可のメッセージが表示されますので、許可をしてください。
Googleアカウントを選択します。Googleアカウントは保持しませんので、その都度選択してください。


①バックアップ

Google Driveにバックアップします。
バックアップは5個まで保存し、古いものから削除していきます。

②復元

Google Driveから復元します。
復元したいデータを選択してください。

③削除

Google Driveにバックアップしたデータを削除できます。
削除したいデータを選択してください。

④自動バックアップ

Google Driveへの自動バックアップの設定をします。
自動バックアップについては、選択したGoogleアカウントは、保持されます。
データに変更がある場合に、設定した時間に1日1回バックアップします。
また、通知を設定している場合、自動バックアップの成功/失敗を通知します。
バックアップは5個まで保存し、古いものから削除していきます。


△目次に戻る

8.バックアップ(最新バージョン)

トップの画面のメニューの「設定」の「バックアップ」をタップすると、本画面が表示されます。
後述①~④は、Google Driveに、⑤、⑥はスマホ内にバックアップします。

①準備/停止

バックアップ機能をしようするには準備する必要があります。
「準備」ボタンをタップして、アカウントの選択とGoogle Drive使用の許可を行ってください。
アカウントを変えたい場合は、停止をタップしてから、再度、準備を行ってください。

②バックアップ実行

バックアップを実行します。本ボタンをタップすると、途中経過、完了が画面上部の”通知”に表示されます。

③自動バックアップ設定/解除

自動バックアップを設定すると、毎日、指定した時刻に変更の有無をチェックし、変更があれば、バックアップを行います。
・実行終了を通知:自動バックアップの完了通知を表示するかどうかを設定します。ただし、エラーがあった場合は必ず通知します。

④復元実行

本ボタンをタップすると、バックアップ一覧が表示されますので、復元したいデータを選択してください。なお、現在のデータは消えますので、ご注意ください。

⑤端末内バックアップ実行

Google Driveではなくスマホ内にバックアップを行います。
後述の【補足】のために追加した機能です。

⑥端末内復元実行

Google Driveではなくスマホ内のバックアップファイルから復元します。
後述の【補足】のために追加した機能です。


【補足】以前のバージョンで保存していたバックアップで復元したい場合
Google Drive側の仕様変更により、以前のバージョンで保存していたバックアップが本アプリからは見えなくなりました。それらのバックアップで復元する方法です。

①「Googleドライブ」アプリでバックアップをスマホ内にダウンロードします。
マイドライブの「com.bnbnapp.dvdrack」フォルダ内の日付フォルダ(例:「2021/01/01 03:00:15」)内の「backup.zip」です。
②本アプリのバックアップの「端末内復元実行」ボタンをタップします。
③前述の①でダウンロードした「backup.zip」を選択します。





画面の下部に表示されるバナー広告を非表示にすることができます。
DVDラック画面のメニューの「動画広告視聴」をクリックすると以下の画面が表示されます。





「動画をロード中です。しばらくお待ちください。」と表示されている間は、「視聴する」がクリックできませんので、しばらくお待ちください。
「動画をロード中です。しばらくお待ちください。」が消えましたら、「視聴する」をクリックしてください。
動画を途中で停止しますと、バナー広告非表示の報酬は得られません。
最後まで視聴しますと、以下の画面が表示されます。




上の画像のようにバナー広告非表示期間が表示されます。続けて視聴した場合、バナー広告非表示期間に加算されます。
バナー広告非表示期間は、「〇月〇日まで」でしたが、「〇時間」に変更しました。実際にバナー広告を非表示にする時間になります。本アプリを表示していない時間は含みません。

2017年12月2日土曜日

logcatが表示されない!?デバッグでEditTextのあるActivity表示で落ちる!?


思いがけず、タブレットも開発に使用できるようになりました。

d tab(HUAWEIのd-01J)。

しばらくは、今まで通り、スマホで開発し、Releaseビルド後にタブレットで動作確認をしていました。

問題なく使えていたのですが、厄介なカメラ機能を修正したので、タブレットでデバッグを行ったところ、あるActivityに遷移すると落ちました。

logcatを見てみたら、エラーもデバッグログも出力されていません。

ここから、結構、はまりました。

とりあえず、logcatから解決方法を書きます。

HUAWEIは、Androidの隠しコマンドでログを出力するように設定する必要があるようです。(HUAWEI全機種なのかは、分かりません。)

電話アプリ、又は、標準の電卓アプリを使用します。持っているタブレットは電話機能がないので、電卓を使いました。

1)電話アプリの場合は、「*#*#2846579#*#*」
、電卓アプリの場合は、「()()2846579()()=」と入力します。

2)「ProjectMenu」という画面が起動しますので、「1.Background Settings」をクリックします。

3)「3.LOG Settings」をクリックします。

4)「AP Log」をチェックします。

これで、logcatが出力されるようになりました。

続いて、落ちる件について、ログが出力されるようになったので、調査開始です。


InputConnectionでキャストできないと出ているので、EditText付近だとは分かるのですが、EventProfiler.javaのソースをネットで探し出しても、330行目なんてありません。

しかし、このExceptionをネットで検索すると解決方法ありました。

https://stackoverflow.com/questions/47440771/focus-on-edittext-result-in-crash

このページにあるように、Android Studioのメニュー「Run」の 「Edit Configurations」をクリックし、左の「Android App - app」を選択して、右の「Profiling」の「Enable Advanced profiling」のチェックを外します。

これで、実行すると落ちなくなりました。

オフにした機能は以下に詳細が書かれています。

Measure App Performance with Android Profiler

Android Studio 3.0から追加された機能みたいです。

しかし、タブレットでカメラが落ちるので、まだまだかかりそうです・・・。


2017年10月31日火曜日

メモリリーク その3 AdMob広告の表示で

こんにちは。



AdMobの広告を表示させるために、AdMobの以下のガイドに沿ってソースを修正しました。

https://developers.google.com/admob/android/quick-start?hl=ja


ガイドより↓

しかし、これだとメモリリークを起こします。


以前にも書きましたが、ActivityのContextを渡し、そのContextを保持されてしまうとActivityを解放できません。

ApplicationContextを渡せば、Activityはメモリリークを起こしません。

また、MobileAds.initializeは、一回だけで良いと上記のガイドに記述があるので、ApplicationのonCreateで呼び出すようにしました。

なぜなら、MainActivityのonCreateは、一回だけ呼び出されるとは限りません。起動時以外にも、画面を回転させると呼び出されます。

以下のように修正しました。



以上です。


2017年10月16日月曜日

画面タップが効かなくなったスマホ

こんばんは。

以前使っていたスマホの画面をタップしても何も反応しなくなってしまい、もうだめかと放置していました。

しかし、公開しているアプリは、古いAndroidも対応しているため、どうしても動作確認がしたくなり、どうにか動かせないか調べました。

まず分かったのが、パソコンとUSB接続して、パソコン上であるアプリを動かすと、スマホの画面がパソコンの画面に表示され、操作できるというものがあるということです。
ただし、スマホをデバッグモードにしてあることが前提です。

Android Control

しかし、スマホの画面は、パソコンに表示されますが、クリックしても反応しません。

上記に加え、以下のHPで、Version1.2betaを落として、やっと反応しました。

http://droid-at-screen.org/download.html


ここで、調子に乗って、やりたかった初期化をしました。

すると、初期化が終わった後起動すると、Android Controlは、使えなくなりました。

デバッグモードも解除されますから、当たり前でした。


そこで、別の方法を探してみると、衝撃的なことを知りました!

スマホにマウスを繋げば、操作できるとのことです!

知らなかった・・・。

早速、ヨドバシカメラに行き、以下の変換アダプタを542円で買いました。




帰宅して、スマホにマウスを繋いでみると・・・完璧に動く!

最初から、こうすればよかったです。

2017年10月12日木曜日

メモリリーク その2 AlertDialog

こんばんは。

今回もメモリリークについてです。

AlertDialogで、メモリリークが発生していました。

そもそも、使い方を誤っていました。

以下のようにすれば、簡単にメッセージダイアログが表示できますが、これではいけません。



画面を回転した場合などに、メモリリークが発生します。

Androidデベロッパーのページにも書かれていました。

https://developer.android.com/guide/topics/ui/dialogs.html?hl=ja

DialogFragmentを使ってダイアログを管理すると、ライフサイクルイベントが正しく処理されると書かれています。

個人のブログで、AlertDialogの使い方を見てコーディングしたのですが、ある程度コーディングした後に、上記のページを見つけました。

そして、実際にメモリリークするか調査してみると、しっかりとメモリリークしていました。

全てのAlertDialogを修正とテストするのは大変でした。

それから、ネットで検索する場合は、Androidデベロッパーのページや、リファレンスを最初に読むようにしています。

DialogFragmentを使ったAlertDialogのコーディング方法は、上記のページを参考にしてください。


2017年10月11日水曜日

メモリリーク その1

こんばんは。

忙しくて、なかなか更新できませんでした。

前回メモリリークを調査した結果、検出した内容です。

今回は、単純なコーディングミスです。

Staticな変数に、Contextを渡したクラスのインスタンスを保持しているのですが、ContextにActivityをキャストしたContextを渡していました。


ソースで説明します。


ToastクラスのインスタンスをContextを渡して作成し、Staticな変数で保持しています。
上記のshowToastを以下のように呼び出していたのです。


上記の例は、Activityで呼び出していたので、thisは、Activityです。

Contextは、ApplicationかActivityをと書かれていますので、以下のように変更したら、メモリリークはなくなりました。


Staticな変数は、要注意です。

2017年9月3日日曜日

メモリリーク調査


こんばんは。お久しぶりです。

ブログは更新していませんでしたが、開発は行っています。


ふと、メモリリークはしていないのか気になって、調査してみることにしました。

確保された領域は、どこからも参照されなくなれば、GC(ガベージコレクション)でシステムが勝手に解放してくれます。

参照をなくした後にGCを強制的に行い、解放が行われているかチェックすれば、メモリリークを見つけられます。


Android Studioでデバッグ中に、Android Monitorで、一連のチェックが行えます。




上のAndroid Monitorの赤で囲った部分の一番左のアイコンをクリックすると、GCが行われます。

真ん中のアイコンをクリックすると、メモリの状態が記録されます。


あるいは、Leakcanaryというライブラリを使用してもチェックできます。

Leakcanaryは、https://github.com/square/leakcanaryにあります。

やり方も記載されていますが、一点、はまったことがあります。

全く、メモリリークが検出されないのです。メモリリークが元々なかったのかと一瞬思いましたが、チェック自体が走った形跡もなかったので、ライブラリのソースを追ってみました。

なんと、デバッグでアタッチしている場合は、チェックしないようになっていました。

私、USBで繋いで、ばりばりデバッグアタッチしていました。

なので、スマホにデバッグ版をインストールした状態で、アイコンをタップしてアプリを単体で動かしたところ、メモリリークが無事?、検出されました。

Activityを閉じたときにチェックしています。


メモリリークの内容は、後日書こうと思います。

2017年4月17日月曜日

Google Play Developer Consoleでタブレット未対応となってしまう

こんにちは。

本棚、CDラック、DVDラックを公開してきましたが、DVDラックだけ違反となり、一時アプリが非公開になってしまいました。

なりすましと知的財産権の侵害にひっかってしまったようです。

Google Playに記載したスクリーンショットに、適当なDVD情報を取り込んだ画面が写っているのがまずかったようです。

急遽、実在するDVD情報は削除したスクリーンショットを取り、公開しました。

違反はなくなったのですが、今度は、タブレット未対応になってしまいました。


Developer Consoleで、最適化のヒントを開くと以下の項目が表示されるようになったのです。

「タブレット用のアプリを設計する

製品版 APK は次の条件を満たす必要があります:

レイアウトにはタブレットで利用可能なスペースを使用すること。 」


その時載せていたスクリーンショットは以下です。




どうやら、空いたスペースが多すぎて、タブレット未対応と判断されたようです。

結局、画面全体にデータが表示されるように、DVD情報を手入力しました。





ようやく、タブレット対応済みとなりました。

2017年4月6日木曜日

CDラックのヘルプ


公開中のCDラックのヘルプを記載します。


0.目次

  1. CDラック画面

  2. バーコード読み込み

  3. 検索画面

  4. 入力画面

  5. 画像拡大画面

  6. Web検索画面

  7. 検索結果

  8. 新譜検索

  9. バックアップ

  10. バナー広告非表示

  11. 設定



1.CDラック画面

 



①メニュー


メニュー説明
表示切替CDの一覧(④)の表示方法を変更します。
クリックするたびに、1列→2列→3列→1列・・・と変化します。
画面を開き直したとき、前回選択した列数で表示されます。
検索登録済みのCDの検索画面を表示します。
変更各CDの左にある四角マークをクリックして選択したCDを一括変更します。
削除各CDの左にある四角マークをクリックして選択したCDを一括削除します。
新譜検索新譜検索の実施、結果表示ができます。
バックアップGoogle Driveを使用して、バックアップ、復元、バックアップの削除、自動バックアップの設定を行います。
設定設定画面を表示します。
ヘルプ本ヘルプを表示します。
About本アプリのバージョンなどを表示します。
お知らせお知らせと更新情報を表示します。
バナー広告非表示動画広告視聴、短期購入、定期購入、定期購入の解約、注文IDのコピーができます。

②タブ

登録済みのCDの一覧を以下のグループ分けで表示します。
設定の「一般」-「タブ表示位置調整」で、タブを表示/非表示設定、タブの順序設定ができます

タブ説明
全て全てのCDを表示します。
購入予定入力画面で購入予定としたCDを表示します。購入予定のCDは、このタブにしか表示されません。
アーティスト名アーティスト名の一覧を表示します。
ジャンルジャンルの一覧を表示します。
棚コード棚コードの一覧を表示します。
タグタグの一覧を表示します。

③全選択、並び替え

・「全選択」
CDの一覧の全選択を行います。選択後、メニュー(①)の変更、削除が行えます。
・「並び替え」
CDの一覧の並び替えを行います。▼が降順、▲が昇順になり、タイトルカナやアーティスト名カナ、発売日で並び替えが行えます。クリックするたびに、変化します。
・並び替え選択ボタン
CDの一覧の並び替え選択画面を表示します。
・「件数」
選択中のタブ(②) のCDの数を表示します。

④CDの一覧

選択中のタブのCDの一覧を表示します。メニュー(①)で表示方法変更や、③で並び替えができます。

⑤追加ボタン

CDを追加します。以下が選択できます。

選択肢説明
バーコードカメラ機能でバーコードからCDのJANを読み取り、WebからCD情報を取得します。
カメラ機能を使用する為、最初に権限の許可のメッセージが表示されます。
手入力CD情報を全て手入力します。
Web検索CDタイトル、アーティスト名、発売元、JANなどの検索条件を入力し、WebからCD情報を取得します。


⑥「アーティスト名」タブのアーティスト名




登録されているアーティスト名の一覧が表示されます。

⑦「アーティスト名」タブの除外

チェックをすると新譜検索で除外されます。

(新譜検索の通信量と時間が節約されます。)


⑧変更クリック




CDを選択して、メニューの「変更」をクリックすると上記の画面が表示されます。
一括変更したい項目の左側の「変更」にチェックを入れて、 右側に変更したい内容を入力してください。



△目次に戻る

2.バーコード読み込み


JANコードが読み取れるまで、オートフォーカスを連続で行います。

バーコードが読み込めない場合、設定の「CDラック画面」-「バーコード読み込みに旧カメラ使用」をチェックして再度、試してみてください。


△目次に戻る

3.検索画面





登録済みのCDを検索できます。検索したい条件を設定して、CDラック画面に戻ると該当のCDだけが表示されます。検索中は、CDラック画面のメニューの検索アイコンが赤くなります。

検索中のCDラック画面のメニュー


①メニュー

・クリア 検索条件を初期状態に戻します。

②CDタイトル、曲目、商品説明文

入力した文字列を含むCDタイトル、曲目、商品説明文を検索します。

③ジャンル、棚コード、タグ、アーティスト名、お気に入り

選択、または、入力した文字列と一致するジャンル、棚コード、お気に入りを検索します。選択、または、入力した文字列を含むタグ、アーティスト名を検索します。
お気に入り以外は、入力欄で文字を入力できます。
選択ボタンで、選択することもできます。
選択ボタン

④非表示に設定したCDを表示

Web検索や新譜検索で、非表示に設定したCDだけを表示します。


△目次に戻る

4.入力画面




①メニュー


メニュー選択できる条件説明
キャンセル変更保存せずに画面を閉じます。変更の場合、閉じると自動で保存します。
保存新規追加CD情報を保存します。変更の場合、閉じると自動で保存します。
非表示Web検索結果、
新刊検索結果
CD情報を検索結果で非表示になるように設定します。
削除変更CD情報を削除します。
再取得
設定されている条件でWebからCD情報を取得します。
ただし、以下は変更しません。
購入予定、ジャンル、棚コード、タグ、お気に入り
アーティストWeb検索
アーティスト名を設定した状態でWeb検索画面を起動します。


②画像操作

画像表示部分をクリックすると、以下の画像操作ができます。
選択肢説明
拡大表示画像を拡大表示します。
カメラで撮影外部カメラを使用して撮影します。
※カメラの使用の権限許可と、写真を外部ストレージに一時的に保存するため、外部ストレージへのアクセスの権限許可のメッセージが表示されます。許可をすると操作ができます。
アルバムから選択既にアルバムに保存してある画像が選択できます。
※写真を外部ストレージに一時的に保存するため、外部ストレージへのアクセスの権限許可のメッセージが表示されます。許可をすると操作ができます。
編集外部ツールで画像の編集ができます。
※写真を外部ストレージに一時的に保存するため、外部ストレージへのアクセスの権限許可のメッセージが表示されます。許可をすると操作ができます。
削除表示されている画像を削除します。

③サイト

Amazon、楽天、YahooのこのCDのページを表示します。購入や予約ができます。

④購入予定

購入予定の場合、チェックを入れてください。
CDラック画面の「購入予定」タブだけに表示されます。





⑤ジャンル、棚コード、タグ

入力欄で自由に入力できます。選択ボタンクリックで、他のCDで入力済みの一覧が表示され、選択することもできます。使用しない場合は未入力でも構いません。
また、設定の「一般」-「ジャンルを使用する」、または、「棚コードを使用する」、「タグを使用する」で、表示/非表示の切り替えができます。

・ジャンル
例えば、「ロック」などを入力して下さい。
・棚コード
例えば、「CDラック1」や「レンタル」、「処分済み」などを入力して下さい。
・タグ
ご自由にお使いください。

⑥お気に入り

ご自由にご使用ください。
また、お気に入りは、設定の「一般」-「お気に入りを使用する」で、表示/非表示の切り替えができます。

△目次に戻る

5.画像拡大画面


画像を拡大表示できます。細かい文字などを確認する場合にご使用ください。

・指1本で移動できます。
・指2本で広げると拡大、狭めると縮小できます。
・指3本でクリックすると元のサイズに戻ります。


△目次に戻る

6.Web検索画面

CD情報をWeb検索します。



CDタイトル、アーティスト名、発売元、JANのいずれか、または複数を入力して、メニューの「実行」をクリックしてください。

取得ページ数を設定して、取得するページの限度を指定できます。1ページ当たり30件です。
例えば、「5」と設定すれば、最大で150件までしか取得しません。

実行中は、メニューの「実行」が「キャンセル」に変わります。実行をキャンセルしたい場合、クリックしてください。

メニューの「前回実行結果」で、前回の検索結果が表示されます。

△目次に戻る

7.検索結果

Web検索や新譜検索結果表示で、表示されます。


①メニュー

・「保存」 ②で保存したいCDを選択し、「保存」をクリックすると一括保存ができます。
1.CDラック画面の⑧変更クリックと同じ画面が表示されますので、一括して入力したい項目を入力してください。

・「非表示」  ②で非表示にしたいCDを選択し、「非表示」をクリックすると一括保存ができます。
Web検索や新譜検索で今後表示しないように設定します。
非表示にしたCDは、3.検索画面の⑤非表示に設定したCDを表示で、表示することができます。

②選択

メニューの「保存」や「非表示」をクリックする前に選択します。

③CDをクリック

CDをクリックすると、入力画面が表示されます。入力画面でも「保存」、「非表示」ができます。


△目次に戻る

8.新譜検索

CDラック画面のメニュー「新譜検索」をクリックすると、以下が選択できます。

選択肢説明
検索実行新譜検索を実行します。
前回実行表示検索結果を表示します。

検索を実行すると、除外以外のアーティストの一番新しい発売日以降に発売されたCDがないか検索します。実行中は、通知に「新譜検索実行中」と表示され、「キャンセル」をクリックすると中止します。
新譜検索が終了すると、通知に「新譜検索が完了しました。〇件」と表示されます。
完了の通知をクリックするか上記の「前回実行表示」で検索結果を表示します。
検索結果は、6.検索結果と同じです。

設定の「新譜検索」で、以下が設定できます。
・全て、1ヶ月より前を含めない~1年より前を含めない ※対象とする発売日の期間を設定します。
・購入予定を含めない
・自動新譜検索
種類、周期、時間を設定します。次回実行の欄に、次回の実行時間が表示されます。

△目次に戻る

9.バックアップ(古いバージョン)

CDラック画面のメニューから実行できます。

保存場所はGoogle Driveになります。

※AndroidユーザーはGoogleアカウントを必ず持っています。
アカウントがあれば、Google Driveが無料で使用できます。


初回に、権限許可のメッセージが表示されますので、許可をしてください。
Googleアカウントを選択します。自動バックアップ以外は、Googleアカウントは保持しませんので、その都度選択してください。

バックアップはこまめに取るか、自動バックアップを設定してください。
機種変更や端末故障、あるいは誤操作など役に立つときは必ずきます。

①バックアップ

Google Driveにバックアップします。
バックアップは5個まで保存し、古いものから削除していきます。

②復元

Google Driveから復元します。
復元したいデータを選択してください。

③削除

Google Driveにバックアップしたデータを削除できます。
削除したいデータを選択してください。

④自動バックアップ

Google Driveへの自動バックアップの設定をします。
自動バックアップについては、選択したGoogleアカウントは、保持されます。
データに変更がある場合に、設定した時間に1日1回バックアップします。
また、通知を設定している場合、自動バックアップの成功/失敗を通知します。
バックアップは5個まで保存し、古いものから削除していきます。

△目次に戻る


9.バックアップ(最新バージョン)

トップの画面のメニューの「設定」の「バックアップ」をタップすると、本画面が表示されます。
後述(ア)~(エ)は、Google Driveに、(オ)、(カ)はスマホ内にバックアップします。

(ア)準備/停止

バックアップ機能をしようするには準備する必要があります。
「準備」ボタンをタップして、アカウントの選択とGoogle Drive使用の許可を行ってください。
アカウントを変えたい場合は、停止をタップしてから、再度、準備を行ってください。

(イ)バックアップ実行

バックアップを実行します。本ボタンをタップすると、途中経過、完了が画面上部の”通知”に表示されます。

(ウ)自動バックアップ設定/解除

自動バックアップを設定すると、毎日、指定した時刻に変更の有無をチェックし、変更があれば、バックアップを行います。
・実行終了を通知:自動バックアップの完了通知を表示するかどうかを設定します。ただし、エラーがあった場合は必ず通知します。

(エ)復元実行

本ボタンをタップすると、バックアップ一覧が表示されますので、復元したいデータを選択してください。なお、現在のデータは消えますので、ご注意ください。

(オ)端末内バックアップ実行

Google Driveではなくスマホ内にバックアップを行います。
後述の【補足】のために追加した機能です。

(カ)端末内復元実行

Google Driveではなくスマホ内のバックアップファイルから復元します。
後述の【補足】のために追加した機能です。


【補足】以前のバージョンで保存していたバックアップで復元したい場合
Google Drive側の仕様変更により、以前のバージョンで保存していたバックアップが本アプリからは見えなくなりました。それらのバックアップで復元する方法です。

(1)「Googleドライブ」アプリでバックアップをスマホ内にダウンロードします。
マイドライブの「com.bnbnapp.cdrack」フォルダ内の日付フォルダ(例:「2021/01/01 03:00:15」)内の「backup.zip」です。
(2)本アプリのバックアップの「端末内復元実行」ボタンをタップします。
(3)前述の①でダウンロードした「backup.zip」を選択します。


△目次に戻る

画面の下部に表示されるバナー広告を非表示にすることができます。
CDラック画面のメニューの「バナー広告非表示」をクリックすると以下の画面が表示されます。



①動画広告視聴

動画広告視聴を選択してOKをクリックすると、以下の画面が表示されます。




「動画をロード中です。しばらくお待ちください。」と表示されている間は、「視聴する」がクリックできませんので、しばらくお待ちください。
「動画をロード中です。しばらくお待ちください。」が消えましたら、「視聴する」をクリックしてください。
動画を途中で停止しますと、バナー広告非表示の報酬は得られません。
最後まで視聴しますと、以下の画面が表示されます。




上の画像のようにバナー広告非表示期間が表示されます。続けて視聴した場合、バナー広告非表示期間に加算されます。
バナー広告非表示期間は、「〇月〇日まで」でしたが、「〇時間」に変更しました。実際にバナー広告を非表示にする時間になります。本アプリを表示していない時間は含みません。

②短期購入15日間、短期購入30日間


短期購入は削除しました。
短期購入15日間、または、短期購入30日間を選択してOKをクリックすると、Google Playの購入の画面が表示されます。
100円で15日間だけ、または、200円で30日間だけバナー広告が非表示になります。

③定期購入


定期購入を選択してOKをクリックすると、Google Playの定期購入の画面が表示されます。
最初に、無料試用期間が7日間あります。その後、1ヶ月100円となります。
購入すると、バナー広告が非表示になります。

④定期購入解約

定期購入解約を選択してOKをクリックすると、Google PlayのCDラックのページが表示されます。
注意:アプリをアンインストールしても定期購入は解約されません。

解約はアプリからはできないため、Google Playから行います。
トップページのアカウントのアイコン→「お支払いと定期購入」→「定期購入」→「本棚の定期購入」を順にタップすると解約できます。

⑤注文IDコピー

定期購入すると、注文IDが発行されます。
Googleからメールで注文IDが通知されるほか、こちらでも確認できます。
お問い合わせする場合などに、コピーしてメールに貼り付けるなどにご利用ください。


△目次に戻る


11.設定

①一般

(ア)アイテム編集

・ジャンル編集、棚コード編集、タグ編集
登録されているジャンル、棚コード、タグが一覧で表示され、編集ができます。

(イ)使用設定

お気に入り、ジャンル、棚コード、タグを使用するか設定します。

使用しないに設定した場合、各画面で表示されません。

(ウ)表示設定 

・タブ表示位置調整
CDラック画面のタブ(横並びのグループ)の順番や表示、非表示が設定できます。

・CDラック画面と検索結果画面の画質
CDラック画面と検索結果画面の画質を設定します。

・CDラック画面の文字サイズ
CDラック画面の文字サイズを変更できます。

・自作画面サイズ
画像を「カメラで撮影」、または、「アルバムから選択」を行う場合のサイズを変更できます。

(エ)バーコード読み取り設定

・バーコード読み込みに旧カメラ使用
プログラム上の問題で、本アプリ作成当初、最新のプログラムでカメラがうまく動かない場合がありました。古いプログラムだと動く場合があったために念のため搭載した機能です。
※動作に多少の差異がありますが、現状は本チェックは入れなくても動作すると推測しています。

② 新譜検索

・新譜検索範囲
発売日が指定した範囲のみを対象とします。

・購入予定は含めない
購入予定だけにあるアーティストを検索対象にするかどうかを設定します。

(ア)自動新譜検索

・種類
「設定する」か、「設定しない」を設定します。

・周期
自動新譜検索を実施する周期を設定します。

・時間
自動新譜検索を実施する時刻を設定します。

・次回実行
次回に自動新譜検索を実施する予定時刻を表示します。

③キャッシュ

CDラック画面、入力画面の画像表示でキャッシュを使用するかどうか設定します。

キャッシュを使用しない場合、画像はその都度ダウンロードすることになりますが、ディスク容量は消費しません。ネットが接続してない場合は画像が表示できないことになります。通信量は増えます。

キャッシュを使用する場合、画像は最初の一回のみダウンロードし、キャッシュエリアに保存するため、ディスク容量を消費します。通信量を節約できます。


△目次に戻る

④CSV入出力

ヘルプ作成中です。


△目次に戻る

2017年4月5日水曜日

Unitテスト 変数の値検証

こんにちは。

今日は、Unitテストで、内部変数の値の検証の仕方を書きます。



まず、対象のActivityをモックとして定義します。


例えば、MainActivityのprivateなローカル変数「mPositionAll」に初期値を設定したい場合は、以下のようにします。


そして、変数の値を検証したい場合は、以下のようにします。


以上です。

2017年4月4日火曜日

「DVDラック」公開

こんにちは。

新しく「DVDラック」を公開しました。


本棚」や「CDラック」と似た操作で、DVDやブルーレイを管理できます。


出演者と監督は、必ず複数になると思うので、ちょっと工夫しました。

また、DVD Boxなどで、どこまで観たか記録できるようにしました。






レンタルして観た場合にも、記録できますので、一度観たものを間違って借りることもなくなります。

是非、使ってみてください。

2017年3月25日土曜日

ぶんぶんの花粉症対策

こんばんは。

前回、腹痛改善について書きましたが、今回は、花粉症対策に役立っているものを紹介します。

外出するときは、マスクをするのは当然ですが、それでも、鼻水は出ます。

一番、良いなと思うものは、点鼻薬です。

私は去年買った「グローα AG 点鼻薬」を今年も使っています。

鼻が出てきたら、これを両方の鼻の穴に突っ込んで、シュッシュッとします。

ほんのちょっとだけ、薬剤の液体も加わって、じゅるじゅるしますが、次第に止まります。

持ち運びにも邪魔になりません。

仕事中に自分の席でシュッシュッとしていました。

アマゾンや楽天で検索してみましたが、ヒットしませんでした。

代わりに、アレルギー点鼻薬で検索した結果を載せておきます。



また、翌日、花粉が飛びまくるなというときは、前日の寝る前に、「アレジオン」を飲みます。

その日に飲む薬は眠くなってしまいますよね。

個人差があるかもしれませんが、「アレジオン」は、前日に飲むので、私は、眠くなりませんでした。

↓アレジオンです。





また、寝ているときに、鼻水がひどい人は、寝る前に鼻うがいするといいです。

鼻うがいの液も売っています。



私は、鼻うがいが、苦手で大嫌いなので、やりませんが・・・。


鼻うがい以外の対策で、今年も乗り切ります!

花粉症でお困りの方で、上記の対策をしたことない方、お試しあれ!


以上です!

最近、腹痛しなくなりました!LG21の効果!?

こんばんは。


タイトルにあるように、最近、腹痛しなくなりました。

同じような悩みの人はたくさんいると思いますので、紹介したいと思います。


私は、子供のころから、よく腹痛になり、トイレに駆け込むことが多かったのですが、大人になってからも、変わりませんでした。

朝、電車に乗っているときに、腹痛になるのが怖くて、朝ご飯は食べずに、出勤していました。

仕事中も何回もトイレに行ってました。

そしたら、個室が開いてないことが多いんです。

急いで、別の階、別の棟に行って、開いているところを探し回ります。

本当に、大変でした。


今年の冬は、寒いこともあってか、特にひどかったです。1週間下痢だったときもあります。

ビオフェルミンは毎食後に飲んでいたのですが、だめでした。

近くの内科に行っても、胃腸薬を出されるだけで、あまり効果はありませんでした。


そこで、最近、話題のヨーグルトを試してみることにしました。

自分ではどれがいいか調べたわけではないのですが、彼女に、「LG21」がいいんじゃないかとアドバイスされたので、「LG21」を毎晩食べることにしたのです。




↑これです。明治プロビオヨーグルトLG21のアロエ入りです。


↓アロエ以外にもプレーンと砂糖0があります。




もう1か月は食べ続けていますが、この1か月腹痛した記憶がありません!!

いまになって、調べてみました。

まず、LG21乳酸菌がピロリ菌除去に効果的みたいです。

そして、薬だけよりもLG乳酸菌ヨーグルトを摂取した方が効果が大きいらしいです。

LG乳酸菌ヨーグルトは、生きたまま腸まで届き、整腸効果もあるようです。

腸内環境が乱れると肌荒れや便秘、免疫力の低下になってしまうので、これらの予防にもなるらしいです!

なるほど、なるほど。

LG21乳酸菌は、大学の教授と明治さんとわかもとさんの共同研究で特許を取ってあるみたいです。

わかもとさんからは、薬が出ています。




わかもと整腸薬の方が、日にち換算すると安くなりますね。


まだ1か月しか続けていないですし、私は、ヨーグルトのLG21を続けたいと思います。

今思うと、彼女は、私の症状を見て、色々調べて、ヨーグルトのLG21を薦めたのだと思います。

感謝しなければ。

難読化について

こんばんは。


JAVAの実行ファイルは、解読が容易です。

難読化することによって、解読が難しくなります。

変数名や関数名が、「a」とか「b」という簡単な名前に変わります。

難しくなるだけであって、解読できないわけではありません

しかし、バレバレの状態よりも読みにくい状態にしておいて、損はないと思います。

また、変数名が短縮されるわけですから、容量が節約できます。

詳しくは、こちらを参照ください。



難読化の手順を簡単に記しておきます。


1.build.gradleを変更。



上記のようにminifyEnabledをtrueに変更し、proguardFileのパスを設定します。

私の場合は、「C:/Users/[UserName]/AppData/Local/Android/sdk/tools/proguard/proguard-android.txt」でした。


2.ビルドしてみて、エラーや警告に対応。


まず、sun.misc.Unsafeの警告が大量にでました。

以下のように、proguard-rules.proに追記します。



3.動かしてみて、エラーに対応。


releaseしか難読化できませんので、release版を実機などにインストールして、動かしてみます。

gsonのエラー、driveのエラー、zbarのエラー、adsのエラーに対応しました。

最終的に、以下のようになりました。



4.リリース後に、マッピングファイルもアップロードしておきます。


これについては、前述のこちらを参照ください。


以上です。

2017年3月24日金曜日

プレビューで色が取れない

こんばんは。

前回、「色も取れないらしく、colors.xmlに設定してある色ではなく、デフォルトの色で表示されてしまいます。」と書きましたが、再現してしまいました。


上記以外に、colors.xmlに設定してあるcolorを使用しているlayoutファイルを開くと、プレビューに以下のエラーが表示されます。



Couldn't resolve resource @color/colorAnything


実行すると、ちゃんと設定した色で表示されます。



色々調べた結果、以下で解決しました!!


1.「File」 -「Invalidate Caches / Restart...」をクリック。

2.表示されるメッセージ画面で、「Invalidate and Restart」をクリック。



キャッシュをクリアして、再起動するみたいです。

起動に、結構時間がかかりましたが、直りました。


2017年3月17日金曜日

layoutファイル名に大文字はダメ

こんにちは。

しょうもないエラーに引っかかってしまいました。恥ずかしい内容ですが、同じ過ちをしないようにするためにも、残しておきます。

ガリガリ、コーディングしていて、ふと、気づいたら、layoutファイルのプレビューで、エラーになってしまっていました。

styleが定義されていないというエラーだったと思います。
色も取れないらしく、colors.xmlに設定してある色ではなく、デフォルトの色で表示されてしまいます。

全然、原因が分からなく、時間だけが過ぎていきました。

ビルドすると、次のようなエラーが出ました。


'B' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore


英語は分かっているようで、分かっていませんでした。
指摘されたファイルの中で、大文字を使ってはいけないのかと勘違いしてしまいました。

原因は、layoutファイル名に、大文字を使っているからでした・・・。

原因が判明してから、改めて英文のエラーを読むと、なるほど、そう言ってる・・・。

以後、気を付けます。