カテゴリーアーカイブ OS

村上 著者:村上

【Cordova】端末にファイルを保存するプラグイン「cordova-plugin-file-downloader」【未動作】

Cordovaアプリにて画面にダウンロードボタンを配置し、それをタップしたら、あらかじめ指定しておいた画像ファイルをダウンロードする、という処理を行いたいのですが…現在、絶賛苦戦中です。
今回使用しているプラグインは「cordova-plugin-file-downloader」です。
コードがとてもシンプルで簡単だったので、指定ミスはないはずなのですが…。
エラーが発生しない、私の苦手なパターンにハマっています。

公式ページはこちらから。

GitHub – mramonlopez/cordova-plugin-file-downloader: Phonegap plugin to download a list of files or a single file to the phone, check consistency and unzip if necessary (Android and ios)
https://github.com/mramonlopez/cordova-plugin-file-downloader

cordova-plugin-file-downloader – npm
https://www.npmjs.com/package/cordova-plugin-file-downloader

 

プラグインの導入時は、下記のコマンドを実行します。

cordova plugin add cordova-plugin-file-downloader

もっともシンプルな実装方法は下記のとおりです。

downloader.init({folder: "[端末の保存先ファイル名]"});
downloader.get("[保存したいファイルのパス]");

1行目の初期化については、オプションがいくつかありますが、folder については必須事項なので、必ず指定してください。
例えばアプリ名などの文字列を指定すればよいかと。
他にも、zipファイルをダウンロードした際に、ダウンロード完了後に解凍する unzip や、展開後の zip ファイルを削除する delete オプションもあります。
また、wifiOnly という、Wi-Fiに接続されているときのみダウンロードを行うというオプションもあります。
なお、これはデフォルト値が true なので、あえて指定する必要はなさそうです。

 

プログラムとしては以上なので、こちらを実行すれば動作するはずが…何故かダウンロードできず。
ログには、download [ダウンロードしたファイルのパス] to [端末に保存したファイルのパス] とか、Saved file: [端末に保存したファイルのパス] というメッセージがあったので、ダウンロードできているようにも見えたのですが、いくら探してもダウンロードした画像が見つかりませんでした。
なおインストール時に、下記を config.xml の タグ内に追加しろとあったので、それについては対応しました。

<preference name="AndroidPersistentFileLocation" value="Compatibility" />

こちらのコードの意味は、以前の設定(Compatibility)をそのまま使用してファイルの保存するという意味になるとのこと。
value は Internal という値を指定することも可能で、こちらでは内部の保存場所を使用します。

 

幸い、若干の時間的猶予はあるので、引き続き調査したいと思います。
もしくは、違うプラグインを使うことを検討してもいいかもしれませんね。

  • この記事いいね! (0)
takahashi 著者:takahashi

【要注意】WIndows に iCloud をインストールしているユーザーはWindowsUpdate経由でOctober Updateを適用できない可能性

WindowsにiCloud for Windows 7.7をインストールしていると、互換性の問題でWindows Update経由のOctober Updateの適用がブロックされるようです。

iCloud for Windows7.7はOctober updateとの互換性がなく、アップグレードツールを用いて手動で行った場合は、October Update適用後にiCloud for Windows 7.7が起動できなくなります。

「iCloud for Windows 7.8.1」を公開 ~「Windows 10 October 2018 Update」に対応 – 窓の社

上記記事によると、リリースノートに修正履歴はないものの、修正が確認されている iCloud for Windows7.8.1 がAppleから公開されており、更新することで問題を回避できるそうです。

iCloud for Windowsを使用されている方で、WindowsにOctober Updateを適用する予定の方は、先にiCloud for Windowsの更新を必ず行ってからWindowsをアップグレードした方がよさそうです。

  • この記事いいね! (0)
takahashi 著者:takahashi

Windows10で起動直後にも関わらず勝手にサインインされる問題の対策法

複数アカウントがあるWindows10で、起動直後でサインイン操作をしていないにも関わらず、サインイン済みになってしまっていることがあります。

この挙動は、起動後から各ユーザーアカウントに設定されている処理などをバックグラウンドで行わせたいときに有効ですが、シャットダウンの際はそれぞれのアカウントをひとつづつサインアウトさせてからでないと正常なシャットダウンができないため面倒です。

今回はこの機能を無効化する方法をご紹介します。

左下のスタートメニュー(Windowsマーク)をクリックしてメニューを表示し、中から歯車アイコンを選択します。
開いたウインドウから
アカウント->サインインオプション
を開きます。

中の”プライバシー”という項目中に”サインイン情報を使用してデバイスのセットアップを自動的に完了し、更新または再起動後にアプリを再び開くことができるようにします。”のチェックをオフにします。

これで以降は自動でログインされなくなります。

  • この記事いいね! (0)
takahashi 著者:takahashi

車用Android向けホームランチャーアプリ”Car Launcher”

Androidタブレットナビ化計画の一環でインストールしたホームアプリをご紹介します!

Car Launcher“というアプリです。

車用ランチャーアプリには、単なるランチャーで、ホームボタンを押すと素のホームアプリに戻ってしまうものもありましたが、こちらのアプリはちゃんとホームアプリとして動作するので、完全に差し替えできます。

デフォルトのUIはこんな感じです。

音声検索や天気、時刻、音楽プレーヤーへのショートカットなどが一通りそろっています。

また、上のAdd App からよく使うアプリケーションを追加できます。

このUIもそこそこ使いやすそうではあるのですが、個人的にデザインがあまり好きではなかったので…

こちらのUIに変更しました。
よりランチャーっぽくなっていい感じです。

Android端末をカーナビ代わりにしている方には是非お勧めです。

  • この記事いいね! (0)
村上 著者:村上

【Android】端末の戻るボタンが押されたときに処理を実行する

Android アプリを開発中、端末の戻るボタンが押下されたかどうかを検知したいことがあると思います。
例えば、EditText エリアに何かを入力中に、うっかりボタンを押してしまっても、前のページに戻る前に確認のアラートを出すような機能を追加するときや、そもそも戻るボタン自体を無効にしたい、などです。
私も極たまにしか使わないので、備忘録としてまとめます。

 

といっても実装はとっても簡単で、下記のように onBackPressed をオーバーライドするだけです。

@Override
public void onBackPressed(){
    // 行いたい処理
}

あとは、この関数内で、戻るボタンが押されたときに実行したい処理を書くだけです。

私の場合、下記のような実装を行いました。

@Override
public void onBackPressed(){
    // EditTextに入力された文字列を取得
    EditText editText = findViewById([ID名]);
    if (editText.getText().equal("")) {
        finish();
    } else {
        // ダイアログ表示
        new AlertDialog.Builder(this)
                .setTitle([タイトル])
                .setMessage([メッセージ])
                .setPositiveButton("OK", (dialog, which) -> {
                    // OKが押された場合、Activity を終了し、前のページへ
                    finish();
                })
                .setNegativeButton("キャンセル", null)
                .show();
    }
}

上のコードでは、戻るボタンが押されたときに、EditText に入力された文字列を取得しています。
この時、EditText に何か文字が入力されていた場合、まだ編集中とみなし、警告のダイアログが表示されるようにしています。
EditText が空だった場合や、ダイアログでOKが押された場合は、finish() を実行し、現在表示されているアクティビティを終了して、前のページに戻ります。

 

なお、戻るボタンを検知する方法としては下記の記述方法もあります。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK) {
        // 戻るボタンの処理
        
    }
}

この書き方を用いると、戻るボタン以外の検知にも使えます。
複数のボタンの検知の処理を書きたい場合には、こちらのほうが便利ですね。
ですが、今回は戻るボタンの検知のみが行えればOKだったので、私は前者を使いました。
なんといっても、関数名が分かりやすいですし。
このあたりは、好みと実装内容によって使い分けてください。

 

以上、Androidアプリで戻るボタンが押されたことを検知する方法でした。

  • この記事いいね! (0)
村上 著者:村上

【アプリ】眠れない夜にはメトロノームがいい?「Metronome Beats」

不眠症ではないはずですが、たまに眠れない夜とかがあったりします。
今までは、「寝たまんまヨガ」とか「Relax Melodies」を使っていたのですが、先日下記の記事を見つけたので、早速実践してみました。

寝つきが悪かった方が一瞬で眠れるようになった方法を描いた漫画に「効果ありそう」「逆に無理そう」「この方法も」など様々な声 – Togetter
https://togetter.com/li/1288882

なんでも、15~30分間くらいの時間、メトロノームを掛けて寝るだけというもの。
リズムは 20~30 くらいの聴いていて遅いと感じるくらいで、かつ音量もかなり小さめに設定するといいそうです。

 

私が使っているアプリは「Metronome Beats」です。
Google Play で探していて、なんとなく画面が格好良くて使いやすそうだったのでこちらをチョイスしてみました。
勿論、他に愛用しているアプリがあるなら、そちらをご利用ください。

インストールはこちらから。
ちなみに、Androidです。

メトロノームのビート – Google Play のアプリ
https://play.google.com/store/apps/details?id=com.andymstone.metronome&hl=ja

そして、実際のアプリ画面はこんな感じ。

主に使うテンポとかタイマー機能の設定が分かりやすいです。
画面を見れば分かると思いますが、私はテンポを 19 で設定しています。
私の場合、このリズムが深呼吸のタイミングにぴったりなんです。
また、タイマーは 30分に設定しています。
勿論、これは私の好みの値なので、適宜気持ちいいと思えるようにカスタマイズしてください。

実際にここ2~3日使ってみたところ、確かに寝つきが良い気がする…!?
実は一人暮らしを始めてから、実家に帰ると時計の秒針がうるさくて眠れない事があったのですが、これは音量が調整できるのと、テンポがゆっくりなためか、全く気になりません。
まあ思い込みしやすいタイプなので、プラシーボ効果とかもありそうですが…それで寝られるなら良いと思います。
しばらく継続して使ってみようと思います。

 

以上、おすすめのメトロノームアプリと、個人的なおすすめ設定値のご紹介でした。
寝つきが悪いと感じている方は、ぜひお試しください。

  • この記事いいね! (0)
takahashi 著者:takahashi

自分のスマホにGoogleLensが来たので試してみた!

自分はAndroid 6搭載のスマートフォンを使用しているのですが、ある日ふとGoogleアシスタントを起動したところ、”Google Lens”が追加されていました。


Google Lensとは、スマートフォンのカメラを使って得られた画像に映っているものや文字をAIが認識し、それらに関連する情報を検索・表示してくれる仕組みです。
最初はGoogleのリファレンススマートフォンであるPixelシリーズのみで利用が可能でしたが、現在はほぼすべてのAndroid端末で利用できるようです。

 

例えば、社内にあるグループ会社のはまぞうの旗。

これをGoogle Lensに読み込ませると…

こんな風に画像だけで関連する情報を簡単に検索できます。

他にも、花を撮影すればその花の名前を判定したり、名刺を撮影すれば記載内容を全てテキストにして取り出したりなど、かなりいろんなことができるようです。

結構面白い機能なので、対象の端末をお持ちの方は是非一度試してみてはいかがでしょうか。

  • この記事いいね! (0)
takahashi 著者:takahashi

【Linux CUI Tips】screenコマンドを使用時の入力や実行結果をログファイルに保存する方法

CUI上で長時間かかる処理を行わせて放置したい時や複数のターミナルを使い分けたいとき、SSHなどの接続が切れて処理が中断してしまうのが怖いときなどにscreenコマンドを使用すると非常に便利です。

このscreenコマンドですが、実はscreen内で出力された内容をファイルに保存する方法があるのをご存知でしょうか。

しかも、screenを使っていれば前準備無しでログの保存ができます。

ターミナル上で

screen

と入力し、screenに入ったら、

Ctrlキ+Aキー

を押したあと、すぐに

Shift+Hキー

を押します。
すると左下にメッセージが表示されます。

この状態になれば、ログが記録されるようになります。

停止する場合はもう一度

Ctrlキ+Aキー

を押した後に

Shift+Hキー

とすればログの記録は停止されます。

なお、ロギング中のscreenでログファイルを開いてしまうと無限ループしてログファイルの容量が一気に膨れ上がってしまうそうなので注意してください。

参考サイト:
ターミナルのログを自動保存したい – まちゅダイアリー

  • この記事いいね! (0)
村上 著者:村上

【備忘録】Firebase Cloud Messagingでのプッシュ通知の送信について

実は似たような記事を以前にも投稿しましたが、今回はメッセージを送付する際のHTTP構文についてです。
というのも、送信メッセージやタイトルを変えるだけならまだしも、パラメータを変更したり、追加・削除するときに毎回調べていたので、いい加減自分のためにまとめようと思ったからです。

そのため、この記事は私的重要ポイントのみをまとめてあります。
ご了承ください。

ちなみに、以前の記事はこちら。

【PHP】FireBase Cloud Messagingを利用したプッシュ通知をPHPから送る方法 – 株式会社シーポイントラボ|浜松のシステム開発会社
https://cpoint-lab.co.jp/article/201810/【php】fireBase-cloud-messagingを利用したプッシュ通知をphpから送る/

 

さて、まず Firebase の公式サイトのHTTP プロトコルについてのページがこちら。

Firebase Cloud Messaging の HTTP プロトコル|Firebase
https://firebase.google.com/docs/cloud-messaging/http-server-ref?authuser=0

このページですら毎回検索して探すので、こうしてまとめたかったというのが主ですね。

次に、各項目について。
送信先を指定するパラメータ to について、その具体的な指定値です。

指定値 対象
/topics/all 全端末に送信
/topics/android Android端末にのみ送信
/topics/ios iOS端末にのみ送信
/topics/[トピック名] 特定のトピックに登録されている端末にのみ送信
[デバイストークン] 特定の端末

こちらに関しては、特に説明不要かと思います。
送信先を指定したい場合、こちらの to の値を変更しますが、例が載っていなかったので、よく使いそうなもののみを抜粋しました。

次は dry_run というパラメータです。
こちらは未指定の場合のデフォルトは false になっています。
このパラメータを true にすると、実際にプッシュ通知を送らずに、レスポンス結果を取得することができます。
送信のテスト時に使うパラメータですね。

あとは、badge という、ホーム画面のアイコンにバッヂを追加するためのパラメータです。
こちらにバッヂの値を指定すると、プッシュ通知を受信した時にバッヂが追加されます。
なお、0 を指定すると、バッヂは削除されます。

よく使うのはこのあたりでしょうか。
他にも、Androidのみの設定で icon というパラメータでプッシュ用のアイコン画像を指定できます。
これがないと、アイコンが白い四角形になってしまい非常に味気ないので、Android アプリに通知を送る際は指定したほうが良さそうです。

 

以上、FCM でメッセージを送付する際のHTTP構文についてでした。
なお、レスポンスデータについては、上で挙げた Firebase の公式サイトのHTTP プロトコルについてのページの下の方に載っているので、こちらも参考にしてください。

  • この記事いいね! (0)
takahashi 著者:takahashi

Windowsのインターネット接続が頻繁にリセットされる時に確認したいこと

今朝PCを立ち上げたところ、Google Chromeで”接続が中断されました”というエラーが頻発し、どのページも正常に表示できない状態になってしまってい、またSlackなどの他のアプリでも接続が不安定になる症状が発生しました。

いろいろ調べたところ、原因が判明しました。

スタートメニュー(Windowsロゴ)を右クリック->ネットワーク接続->アダプターのオプションを変更する
からネットワークアダプタの一覧を確認したところ、Microsoft Wi-Fi Direct Virtual Adapterが現れたり消えたりを繰り返していました。

Microsoft Wi-Fi Direct Virtual Adapterとは、ノートPCなどに搭載されている無線LANモジュールを仮想的に分割することで、ノートPCを無線LANのホストとして使うことができるようにする仕組みが有効になっている際に現れる仮想アダプタのようです。

公式ドキュメントが探し出せなかったので、挙動からみた独自の解釈になってしまいますが、このMicrosoft Wi-Fi Direct Virtual Adapterが有効になっていることで、接続中のWi-Fiアクセスポイントから切断することなくMiracastやWi-Fi Directが利用できるようになっているようです。

また、Windows10に搭載されている”ホットスポット”機能(所謂逆テザリング)を有効にした時も、このMicrosoft Wi-Fi Direct Virtual Adapterの働きによって、他のWi-Fiデバイスから無線LANアクセスポイントとして認識されるようになります。

このMicrosoft Wi-Fi Direct Virtual Adapterですが、何らかの原因で動作がおかしくなってしまい、現れたり消えたりを繰り返したり、メトリック(複数ネットワークカードがある際のネットワークカードごとの優先度)の優先度が高く設定されてしまい、他のネットワークのトラフィックを奪ってしまうことでネットにつながらなくなってしまう、ということがしばしば起こります。

今回も症状的にそれが疑われたので、対策をしてみました。

まず、スタートメニュー(Windowsマーク)をクリックし、中から”デバイスマネージャー”を選択します(※要管理者権限)
開いた画面の中のメニューの

表示->非表示のデバイスの表示

をクリックし、接続されていないデバイスも含めた全デバイスを表示します。

次に、”ネットワークアダプター”の左にある “>”マークをクリックして項目を開きます。

その中にある

“Microsoft Wi-Fi Direct Virtual Adaptor #数字”
となっているものを右クリックし

”デバイスのアンインストール”をクリックします。

ウインドウが表示されるので”アンインストール”をクリックします。

この手順を”Microsoft Wi-Fi Direct Virtual Adaptor”がすべてなくなるまで行います。

※最悪の場合OSの再インストールが必要になる場合のものもありますので、今回の操作では”Microsoft Wi-Fi Direct Virtual Adaptor #数字” 以外のアダプターは絶対に削除しないように注意してください。

削除が完了したらOSを再起動します。

再起動後、再度
スタートメニュー(Windowsロゴ)を右クリック->ネットワーク接続->アダプターのオプションを変更する
を開き

画像の
“Microsoft Wi-Fi Direct Virtual Adaptor” が追加されていれば成功です。

自分の環境ではこの操作で冒頭の症状は解消しました。

お困りの際は是非参考にして頂ければ幸いです。

なお、一応システム周りの変更になりますので、操作には十分注意して自己責任でお試しください。

  • この記事いいね! (0)