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の一覧(④)の表示形式が変わります。
画面を開き直したとき、前回選択した列数で表示されます。
検索
登録済みのDVDの検索画面を表示します。
その他
その他のメニュー(新作検索以降のメニュー)を表示します。
新作検索 新作検索の実施、結果表示ができます。
設定 設定画面を表示します。
ヘルプ 本ヘルプを表示します。
お知らせと更新情報 お知らせと更新情報を表示します。
動画広告視聴 動画広告視聴ができます。視聴すると広告が一定時間表示されなくなります。残っている広告非表示期間を確認できます。
ログ表示 新作検索とバックアップのログが表示されます。

②タブ

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

タブ 説明
全て 全てのDVDを表示します。
購入予定 入力画面で購入予定としたDVDを表示します。
※購入予定のDVDはこのタブのみに表示されますが、他のタブにも表示するには【設定】→【一般】で設定します。
視聴済み 入力画面で視聴済みとしたDVDを表示します。
未視聴 入力画面で視聴済みとしていないDVDを表示します。
シリーズ シリーズ物の一覧を表示します。
シリーズ以外 シリーズ物以外の一覧を表示します。
出演者/監督 出演者/監督の一覧を表示します。
ジャンル ジャンルの一覧を表示します。
棚コード 棚コードの一覧を表示します。
タグ タグの一覧を表示します。

③選択モードの切り替えと並び替え



(ア)選択モード切り替え

左端のチェックボックスで、選択モードに切り替えられます。選択モードで、複数選択して変更、または、削除ができます。

(イ)並び替え順序切り替えボタン

並び替え順序を変更します。▼が降順、▲が昇順です。
タップするたびに、▼→▲と変化します。

(ウ)並び替え項目切り替えボタン

並び替え項目を変更します。タイトルカナや発売日などで並び替えが行えます。タブによって項目は異なります。
タップするたびに、変化します。

(エ)並び替え項目選択ボタン

並び替え項目の選択画面を表示します。

(オ)件数

選択中のタブ(②) のDVDやシリーズなどの数を表示します。

④DVDの一覧

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

⑤追加ボタン

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

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


⑥~⑧「出演者/監督」タブ




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

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

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

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

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

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

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



△目次に戻る

2.バーコード読み込み


カメラ機能でバーコードからDVDのJANコードを読み取り、WebからDVD情報を取得します。
カメラ機能を使用する為、最初に権限の許可のメッセージが表示されます。

追加画面のバーコードボタンの横の設定アイコンをタップすると、読み取りモードが選択できます。最新モードを推奨しますが、上手く読み取れない場合は、従来モードの2つをお試しください。
また、「バーコード読み取りボタンを表示」をチェックすると、DVDラック画面にバーコード読み取りボタンが常に表示されます。

①最新モード

バーコードを枠の赤い線に合わせてください。
左上のボタンをタップするとライトがつきます。

②従来モード、従来モード(旧カメラ)

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

右上のボタンをタップすると切り取りモードに切り替わります。
中央の切り取り枠の中に読み取りたいバーコードが映るようにしてください。


△目次に戻る

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ラック画面と同様に、一番上の左端のチェックボタンで選択モードに切り替えられます。選択モードで、複数選択して保存、または、非表示(非表示として保存)ができます。
※非表示は、Web検索や新作検索で今後表示されないようになります。
非表示にしたDVDは、3.検索画面の⑤「非表示に設定したDVDを表示」で、表示することができます。

②DVDをクリック

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



△目次に戻る

7.新作検索

検索を実行すると、登録しているDVDの一番新しい発売日以降発売のDVDがないか検索します。

①新譜検索画面表示

DVDラック画面のメニュー「新作検索」で、以下のボタンがある新作検索画面が表示されます。

・シリーズで検索
・出演者/監督で検索
・前回実行結果表示

②実行

上記①の検索実行ボタンをタップすると新作検索が実行されます。
実行中は、通知、DVDラック画面、新作検索画面に「新作検索実行中です。」と表示されます。
通知か、新作検索画面の「キャンセル」で中止できます。

③完了

新作検索が完了すると、通知、DVDラック画面、新作検索画面、ログ画面に「新作検索が完了しました。〇件の新作が見つかりました。」と表示されます。

④結果表示

新作検索の結果は、以下のいずれかで表示できます。
・完了の通知をタップ
・DVDラック画面の完了のメッセージ横のアイコンをタップ
・上記の「前回実行表示」ボタンをタップ
・新作検索画面で実行した後、新作検索画面を閉じずに完了したときに表示される結果表示確認メッセージでOKをタップ

検索結果は、6.検索結果と同じです。

⑤設定

新作検索画面の設定アイコンをタップすると設定画面が表示されます。
DVDラック画面のメニューの設定の「新作検索」からも表示できます。

自動新作検索(周期的に自動で新作検索)を実行させたい場合も、設定画面で設定してください。

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


△目次に戻る


画面の下部に表示されるバナー広告を非表示にすることができます。

①動画広告視聴

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




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


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


9.設定

①一般

(ア)アイテム編集

・出演者/監督編集、シリーズ編集、ジャンル編集、棚コード編集、タグ編集
登録されている出演者/監督、シリーズ、ジャンル、棚コード、タグが一覧で表示され、編集ができます。

(イ)使用設定

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

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

(ウ)表示設定 

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

・購入予定のDVDを購入予定以外にも表示する
DVDラック画面の全てのタブに購入予定のDVDを表示します。

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

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

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

・テーマ
ライト、ダーク、システムのデフォルトから選択できます。

② 新作検索

(ア)新作検索

・結果の通知を表示
結果の通知を表示するかどうかを設定します。

通知のありなしに関わらず、結果はログ画面にも表示されます。
Android13以降では通知の権限の許可が必要になります。
メニューの「本アプリの通知の設定」から表示されるAndroidの設定でも通知の表示切替ができます。

・DVDラック画面に結果を表示
結果をDVDラック画面に表示するかどうかを設定します。結果の通知が表示できない場合は強制的に表示されます。

・完結を含めない
シリーズで検索する場合に、完結が設定されているシリーズは検索対象から外します。
通信が節約されます。

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

・購入予定は含めない
購入予定だけにあるシリーズ、出演者/監督を検索対象にするかどうかを設定します。

(イ)自動新作検索

バッテリーが少ないときに実行してしまわないように、充電中でバッテリーが20%以上のときに実行します。

・種類
シリーズで検索するか出演者/監督で検索するか設定します。

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

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

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

③キャッシュ

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

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

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


△目次に戻る


④バックアップ

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

(ア)Googleアカウント、権限

バックアップ機能を使用するには準備する必要があります。
Googleアカウントの「設定」ボタンをタップして、アカウントの選択を行ってください。
次に、権限が許可されていない場合は、「許可」ボタンをタップして、「Google Drive上の特定のファイルのみの参照等」の許可を行ってください。
アカウントを変えたい場合は、Googleアカウントの「クリア」をタップしてから、再度、設定を行ってください。

(イ)バックアップ実行

バックアップを実行します。
本画面内の「直近のバックアップ結果/状態」に結果が表示されます。
また、「実行終了を通知」で、通知の表示切替ができます。

通知のありなしに関わらず、結果はログ画面にも表示されます。
Android13以降では通知の権限の許可が必要になります。
メニューの「本アプリの通知の設定」から表示されるAndroidの設定でも通知の表示切替ができます。

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

自動バックアップを設定すると、毎日、指定した時刻に変更の有無をチェックし、変更があれば、バックアップを行います。

「実行終了を通知」については(イ)と同じです。

バッテリーが少ないときに実行してしまわないように、充電中でバッテリーが20%以上のときに実行します。

(エ)復元実行

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

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

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

(カ)端末内復元実行

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


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

(1)「Googleドライブ」アプリでバックアップをスマホ内にダウンロードします。
マイドライブの「com.bnbnapp.dvdrack」フォルダ内の日付フォルダ(例:「2021/01/01 03:00:15」)内の「backup.zip」です。
(2)本アプリのバックアップの「端末内復元実行」ボタンをタップします。
(3)前述の①でダウンロードした「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. 画像拡大画面

  7. Web検索画面

  8. 検索結果

  9. 新譜検索

  10. 広告非表示

  11. 設定



1.CDラック画面



1-1.メニュー


メニュー 説明
表示切替
表示切替の選択画面が表示され、選択すると、CDの一覧の表示形式が変わります。表示形式は、保持されます。
画面の横幅によって、選択できる表示形式は異なります。縦向きのスマホの表示形式は、1列、2列、画像のみ3列、画像のみ4列、画像なし1列、画像なし2列です。
検索
登録済みのCDの検索画面を表示します。
その他
表示しきれないその他のメニューを表示します。
新譜検索 新譜検索の実施、結果表示ができます。
設定 設定画面を表示します。
ヘルプ 本ヘルプを表示します。
お知らせと更新情報 お知らせと更新情報を表示します。
動画広告視聴 動画広告を視聴すると、一部の広告が非表示になります。
定期購入について 定期購入の説明が表示され、購入と解約ができます。
ログ表示 新譜検索とバックアップのログが表示されます。

1-2.タブ

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

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


1-3.選択モード切り替えと並び替え




1-3-1.昇順/降順切り替え

並び替え順序を変更します。▼が降順、▲が昇順です。
タップするたびに、▼→▲と変化します。

1-3-2.並び替え項目切り替え

並び替え項目を変更します。CDタイトルカナやアーティスト名カナ、発売日などで並び替えが行えます。タブによって項目は異なります。
タップするたびに、変化します。

1-3-3.並び替え項目選択画面表示

並び替え項目の選択画面を表示します。

1-3-4.CDの件数

選択中のタブのCDの件数を表示します。

1-3-5.選択モード切り替え

選択モードの切り替えを行います。選択モード中は、CDをタップすると選択でき、もう一度タップすると選択を解除できます。選択したCDを、まとめて変更か削除ができます。

1-4.CDの一覧

選択中のタブのCDの一覧を表示します。メニューの表示切替や、並び替えができます。

1-5.追加ボタン

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

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


1-6.「アーティスト」タブ




並び替え部分は、「1-3.選択モード切り替えと並び替え」の「昇順/降順切り替え」のみです。アーティスト名カナの昇順/降順切り替えができます。
登録されている購入予定以外のアーティストの一覧が表示されます。

以下に、アーティスト一覧の1行を抜粋します。



新作検索の検索対象から除外したい場合は「除外」をタップしてチェックを入れます。新譜検索の通信量と時間が節約できるので、検索が不要な場合は除外してください。

アーティストをタップするとそのアーティストのCDの一覧が表示されます。


△目次に戻る


2.バーコード読み込み

カメラ機能でバーコードからCDのJANコードを読み取り、WebからCD情報を取得します。
カメラ機能を使用する為、最初に権限の許可のメッセージが表示されます。
追加画面のバーコードボタンの横の設定アイコンをタップすると、読み取りモードが選択できます。最新モードを推奨しますが、上手く読み取れない場合は、従来モードの2つをお試しください。
また、「バーコード読み取りボタンを表示」をチェックすると、CDラック画面にバーコード読み取りボタンが常に表示されます。

2-1.最新モード

バーコードを枠の赤い線に合わせてください。
左上のボタンをタップするとライトがつきます。

2-2.従来モード、従来モード(旧カメラ)

右上のボタンをタップすると切り取りモードに切り替わります。
中央の切り取り枠の中に読み取りたいバーコードが来るようにしてください。


△目次に戻る


3.入力画面




3-1.メニュー


メニュー 選択できる条件 説明
保存せずに終了 変更 保存せずに画面を閉じます。変更の場合、閉じると自動で保存します。
保存 新規追加 CD情報を保存します。変更の場合、閉じると自動で保存します。
非表示 Web検索結果、新譜検索結果 CD情報を検索結果で非表示になるように設定します。
削除 変更 CD情報を削除します。
再取得 設定されている条件でWebからCD情報を取得します。
再取得をタップすると取得するサービス選択画面が表示されます。
取得すると、反映項目選択画面が表示されるので、反映したい項目を選択してください。
アーティストWeb検索 アーティスト名を設定した状態でWeb検索画面を起動します。


3-2.購入サイトを開く

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

3-3.購入予定

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

3-4.画像操作

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


3-5.ジャンル、棚コード、タグ

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

・ジャンル
例えば、「ロック」などを入力して下さい。

・棚コード
例えば、「CDラック1」や「レンタル」、「処分済み」などを入力して下さい。

・タグ
ご自由にお使いください。

3-6.お気に入り

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


△目次に戻る


4.検索画面




登録済みのCDを検索できます。検索したい条件を設定して、CDラック画面に戻ると該当のCDだけが表示されます。メニューのクリアで検索条件を初期状態に戻します。

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

検索中のCDラック画面は、以下のようになります。
検索状態は、CDラックを終了して、再度起動した場合も保持しています。



△目次に戻る


5.選択変更画面と選択保存画面

CDラック画面で、CDを選択して、変更ボタンで選択変更画面を表示します。複数のCDに同じ変更をしたい場合に使用します。
新譜検索結果画面やWeb検索結果画面で、CDを選択して、保存ボタンで選択保存画面を表示します。検索結果の複数のCDに同じ内容で保存をしたい場合に使用します。



5-1.保存

CDラック画面やWeb検索結果画面で選択したCDに、入力した変更内容を反映させて保存します。

5-2.クリア

入力した変更項目のチェックを全てクリアします。

5-3.変更項目

購入予定、アーティストなどの変更項目にチェックを入れます。

5-4.変更内容

チェックを入れた変更項目の変更内容を入力します。


△目次に戻る


6.画像拡大画面


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

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


△目次に戻る


7.Web検索画面




CDタイトルやアーティスト名、発売元、JANを指定して、CD情報をWeb検索します。
CDにバーコードがない場合やバーコードが読み取れない場合などに使用してください。

7-1.ボタン

・実行
CDタイトルやアーティスト名、発売元、JANの入力した検索条件でWeb検索を実行します。

・キャンセル
Web検索を実行中にタップできます。実行をキャンセルします。

・クリア
入力した検索条件をクリアします。

・前回実行結果
前回の検索結果を表示します。

7-2.CDタイトルやアーティスト名、発売元、JAN

アーティスト名、発売元は登録済みの一覧から選択できます。

7-3.並び替え

Web検索する並び順を指定します。Web検索結果画面の並び替えの「指定順」が相当します。

7-4.取得ページ数

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

7-5.その他

楽天で売れているランキングを検索することができます。
CDタイトルやアーティスト名、発売元、JANを空欄で、並び替えを「売れている」、取得ページ数を「1」として実行してください。30位までのランキングが表示されることになります。


△目次に戻る


8.検索結果

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



8-1.並び替え

CDの一覧の並び替えを行います。操作方法は、CDラック画面と同じです。

8-2.選択モード切り替え

複数選択して、保存や非表示ができます。操作方法は、CDラック画面と同じです。

8-3.CDの一覧

CDをタップすると、入力画面が表示されます。入力画面でも保存や非表示ができます。


△目次に戻る


9.新譜検索

新譜検索を実行すると、登録しているCDの一番新しい発売日以降に発売されたCDがないかWeb検索します。
新譜検索は、楽天サービスのみを使用します。

新譜検索の対象は、必要なアーティストのみにしてください。除外で新譜検索の対象外となります。
対象が多すぎると、通信量が増えてしまったり、バッテリーを消費してしまいます。

9-1.新譜検索画面

CDラック画面のメニュー「新譜検索」で、以下の新譜検索画面が表示されます。



ボタン 説明
検索実行 除外以外のアーティストの新譜検索を実行します。
前回実行結果表示 検索結果を表示します。

9-2.実行

上記①の検索実行ボタンをタップすると新譜検索が実行されます。
実行中は、通知、CDラック画面、新譜検索画面に「新譜検索実行中です。」と表示されます。
通知か、新譜検索画面の「キャンセル」で中止できます。

9-3.完了

新譜検索が完了すると、通知、CDラック画面、新譜検索画面、ログ画面に「新譜検索が完了しました。〇冊の新譜が見つかりました。」と表示されます。

9-4.結果表示

新譜検索の結果は、以下のいずれかで表示できます。
・完了の通知をタップ
・CDラック画面の完了のメッセージ横のアイコンをタップ
・上記の「前回実行表示」ボタンをタップ
・新譜検索画面で実行した後、新譜検索画面を閉じずに完了したときに表示される結果表示確認メッセージでOKをタップ
検索結果は、8.検索結果を参照してください。

9-5.エラー

楽天サービスからエラーが返ってきたアーティスト名は、通知に「エラー:〇〇」と表示します。アーティスト名が誤っている場合は、修正してください。誤っていない場合は、除外としてください。

9-6.設定

新譜検索画面の設定アイコンをタップすると設定画面が表示されます。
CDラック画面のメニューの設定の「新譜検索」からも表示できます。
自動新譜検索(定期的に自動で新譜検索)を実行させたい場合も、設定画面で設定してください。
詳細は、こちらを参照してください。

9-7.Androidの設定

新譜検索は、バックグランドで実行します。Androidの設定の「バックグランドでの使用を許可」は、有効にしてください。

この設定の表示方法は以下の通りです。
①設定の「本アプリのAndroid設定」をタップ
②アプリのバッテリー使用量をタップ


△目次に戻る


本アプリでは、画面の下部に表示されるバナー広告や入力画面などの画面終了時に表示される全画面広告などがあります。
定期購入により、全ての広告が非表示になります。また、動画広告視聴により、全画面広告のみが非表示になります。

10-1.動画広告視聴

動画広告を視聴すると、その日に限り、全画面広告が表示されません。1日1回のみ視聴できます。

以前の動画広告視聴による広告非表示期間の取得は終了しました。
終了前に取得した広告非表示期間は有効です。

10-2.定期購入

定期購入すると全ての広告が非表示になります。


△目次に戻る


11.設定

11-1.一般


11-1-1.アイテム編集


・アーティスト編集

登録されているアーティストが一覧で表示され、編集ができます。
除外のみを表示したり、対象のみを表示することができます。また、全てを除外としたり、全てを対象とすることができます。

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

11-1ー2.使用設定

お気に入り、ジャンル、棚コード、タグを使用するか設定します。
項目を使用しないに設定した場合、各画面でその項目は表示されなくなります。

11-1-3.表示設定

・タブ表示位置調整

CDラック画面のタブ(横並びのグループ)の順番や表示、非表示が設定できます。
タブの行をタップすると、タブの表示/非表示を切り替えられます。
タブの行をドラッグ(長押しして移動)して並び順を変更できます。

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

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

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

・テーマ
ライト、ダーク、システムのデフォルトから選択できます。

11-2.新譜検索


11-2-1.新譜検索


・結果の通知を表示
結果の通知を表示するかどうかを設定します。
通知のありなしに関わらず、結果はログ画面にも表示されます。
Android13以降では通知の権限の許可が必要になります。
メニューの「本アプリの通知の設定」から表示されるAndroidの設定でも通知の表示切替ができます。

・CDラック画面に結果を表示
結果をCDラック画面に表示するかどうかを設定します。結果の通知が表示できない場合は強制的に表示されます。

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

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

11-2-2.自動新譜検索

バッテリーが少ないときに実行してしまわないように、充電中でバッテリーが20%以上のときに実行します。

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

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

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

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

11-3.キャッシュ

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

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

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

11-4.バックアップ

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

11-4-1.Googleアカウント、権限

バックアップ機能を使用するにはGoogleアカウントの設定と権限の許可する必要があります。
Googleアカウントの「設定」ボタンをタップして、アカウントの選択を行ってください。
次に、権限が許可されていない場合は、「許可」ボタンをタップして、「Google Drive上の特定のファイルのみの参照等」の許可を行ってください。
アカウントを変えたい場合は、Googleアカウントの「クリア」をタップしてから、再度、設定を行ってください。

11-4-2.バックアップ実行

本画面内の「直近のバックアップ結果/状態」に結果が表示されます。
また、「実行終了を通知」で、通知の表示切替ができます。
通知のありなしに関わらず、結果はログ画面にも表示されます。
Android13以降では通知の権限の許可が必要になります。
メニューの「本アプリの通知の設定」から表示されるAndroidの設定でも通知の表示切替ができます。

11-4-3.自動バックアップ設定/解除

自動バックアップを設定すると、毎日、指定した時刻に変更の有無をチェックし、変更があれば、バックアップを行います。
「実行終了を通知」については12-5-2と同じです。
バッテリーが少ないときに実行してしまわないように、充電中でバッテリーが20%以上のときに実行します。

11-4-4.復元実行

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

11-4-5.端末内バックアップ実行

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

11-4-6.端末内復元実行

Google Driveではなくスマホ内のバックアップファイルから復元します。
後述の【補足】のために追加した機能です。
【補足】以前のバージョンで保存していたバックアップで復元したい場合
Google Drive側の仕様変更により、以前のバージョンで保存していたバックアップが本アプリからは見えなくなりました。それらのバックアップで復元する方法です。
(1)「Googleドライブ」アプリでバックアップをスマホ内にダウンロードします。
マイドライブの「com.bnbnapp.cdrack」フォルダ内の日付フォルダ(例:「2021/01/01 03:00:15」)内の「backup.zip」です。
(2)本アプリのバックアップの「端末内復元実行」ボタンをタップします。
(3)前述の①でダウンロードした「backup.zip」を選択します。


11ー5.定期購入

メニューか設定の「定期購入について」から購入できます。

11ー5-1.定期購入

「購入する」をタップすると、Google Playの定期購入の画面が表示されます。
最初に、無料試用期間が7日間あります。その後、1ヶ月100円となります。

特典は以下となります。
(1)全ての広告が非表示になります。

11ー5-2.定期購入解約

解約はアプリからはできないため、Google Playから行います。
「解約する」をタップすると、Google Playの定期購入のページが表示されます。
「CDラック」をタップして、「定期購入を解約」をタップすれば解約できます。

注意:アプリをアンインストールしても定期購入は解約されません。

11ー5-3.注文IDコピー

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


△目次に戻る

11ー6.CSV入出力

全データを端末内にCSV出力、または、端末内からCSV入力します。
CSV入力は、現在のデータは全て削除されます。あらかじめバックアップを行ってください。
CSV出入力は補助的な上級者向けの機能となります。
外部アプリの仕様に合わせて修正することは致しません。
また、修正したCSVファイルの入力によるエラー調査も致しません。

11ー6ー1.CSV出力

CSV出力ボタンをタップし、以下のファイルの出力先を順番に指定します。
・CD情報(cd.csv)
・タグ情報(tag.csv)
・画像の圧縮ファイル(image.zip)

11ー6ー2.CSV入力

CSV入力ボタンをタップし、以下の入力ファイルを順番に指定します。
・CD情報(cd.csv)
・タグ情報(tag.csv)
・画像の圧縮ファイル(image.zip)


△目次に戻る

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ファイル名に、大文字を使っているからでした・・・。

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

以後、気を付けます。


2017年3月16日木曜日

こんなの欲しかった!スマホスタンド

こんにちは。

便利グッズを紹介したいと思います。

androidのアプリ開発を行っているのですが、デバッグで、スマホとパソコンを繋いで、スマホで動作確認をします。

パソコンでコードを書くときは、繋いだまま、座っているところの横に置いたり、パソコンデスクの上に置いてました。

動作確認するときに、いちいちスマホを手に取っていました。

どうもやりにくく、スマホをパソコンの画面の前に立てられたらなぁと思っていました。

ただ、あったとしても高いんだろうなと思っていたのですが、なんとなくAmazonで探してみました。

はじめは、車で使うスマホスタンドがヒットしてたのですが、パソコンの横に立てるのにいいものを見つけました!値段も安く、1,099円です。即、買いました!

写真を載せます。




スマホを載せるだけです。載せる部分の厚さは1.3mmあります。
大抵のスマホは載せられると思います。 
また、角度を自由に調整できます。





後ろです。穴が開いているので、後ろにコードを通せます





底です。ストッパーが4か所ついています。画面をタップしてもスタンドは動きません。






スマホを置きました。コードも差せます


パソコンからスマホへ操作の移行にストレスがなくなり、とても開発がしやすくなりました。
ちなみに、スマホの設定で、充電中に画面をスリープにしないようにしています。

androidの開発をしていなくても、パソコンを使っている人にもよいのではないでしょうか。

タブレットにも使えると書いてあります。タブレットは持っていないので、試せないですが・・・。

Amazonの広告です。




私は、黒を買いましたが、銀もあるようです。iPhoneなら、銀ですかね。
お値段が少し高くなって、 1,198円です。





Unitテスト Mockito、PowerMockitoで、Staticメソッドをモック

こんにちは。

前回に続いて、UnitテストでMockito、PowerMockitoを使います。

今回は、Staticメソッドをモックします。例として、設定クラスのSharedPrefrencesクラスをあげます。


Build.gradleの設定は、前回のページを参照してください。
まずは、import部分です。


続いて、import部分以外を載せます。


細かく見ていきます。クラス宣言部分に、アノテーション「@RunWith(PowerMockRunner.class)」と「@PrepareForTest({PreferenceManager.class})」を付けています。
前者は前回も付けましたが、後者はPreferenceManagerクラスのStaticメソッドをモックするために付けます。



そして、以下の部分で、PreferenceManagerクラスのStaticメソッドgetDefaultSharedPreferencesをモックしています。



whenに指定する関数の引数は、以下のように、anyString、anyBooleanなどを指定できます。これは、String型の何か、Boolean型の何かを意味します。


少し、はまったのがgetStringのモックですが、ActivityからgetStringするようにし、テストは以下のようにしました。