カテゴリーアーカイブ OS

asaba 著者:asaba

【cordova】unable to load platformAPIでブラウザが開けなかった時の解決法

今回は再びコルドバの話題に戻ります。

先日cordovaを7.0.1から8.0.0にアップデートした時のことです。

直後にブラウザで動きを試したいと思い、いつものようにコマンドでnpm run serveでブラウザを実行したところ、下記のエラーが出現しました。

コルドバのバージョンをcordova.jsやモジュールにも認識させないといけなかったみたいです。

browserのplatformを入れ直したところ一発で解決しました。

一旦rmで消して↓


cordova platform rm browser

addで追加します


cordova platform add browser

ちなみに他のplatformを消す必要はないのでそこは大丈夫です。

一応このエラーの解決はしましたが、以前chromeで開けてたアプリがIEで表示されるようになってしまいました。原因は調査中です。

解決方法が見つかり次第このブログに書いていきたいと思います。

 

 

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

“純正Android端末”なGoogle Pixelシリーズ、ついに日本での発売が決定!!!

今朝、突然のビッグニュースが飛び込んできました!!!

Google PixelシリーズはGoogle社が直接設計・販売する正真正銘の純正ブランドで、今回発売が予告されたAndroidスマートフォンはPixelシリーズの新モデルのスマートフォンであるPixel 3である可能性が高いとのこと。

Googleの「Pixel 3」日本発売が濃厚に。ティザーサイト公開 – 価格.com

Pixel 3はAndroid OSの最新バージョン”Android 9 Pie”が搭載される予定となっており、また、Google公式ビルドのAndroid OSがインストールされるため、OSのアップデートも継続的に入手できる可能性が高いと思われます。

さらにPixelではGoogleの最新の成果(“Google Lens”や”Google アシスタント”のような)もいち早く試すことができるのも大きな特徴で、Google・Androidのファンにとってはまさに夢のような端末になっています。

Pixelシリーズのスマートフォンは、今まで第二世代まで出ていましたが、いずれも日本国内での販売はありませんでした。
そればかりか、発展途上国向けとされる(Wikipedia)純正Android OSを搭載したブランド、”Android One“が日本国内で発売されており、一部では、現状iPhone一強となっている日本国内向けにGoogleがPixelシリーズの端末を発売すること自体が絶望視されてきました。

Google Pixel 3は日本発売されないだろう……と考える3つの理由 – naenote.net

そういった経緯もあり、今回の発表にはガジェット界隈全体で大きな話題となっています。

現状日本で発売されているAndroid端末はAndroid Oneを除き、新発売の機種に最新のAndroid OSが搭載されなかったり、発売から1、2年ほどでメーカーやキャリアがアップデートを打ち切ってしまったりする問題があり、Androidへの待遇はあまりいいものではありませんでした。
スマートフォンのスペックも一定のラインまで達してしまった現在、Androidを搭載する端末もどこか陳腐化してしまっているような印象だったので、今回のGoogle Pixelの発売がそういったAndroidスマートフォンの現状に風穴を開けてくれるのではないかと密かに期待をしています。

ただ、以前から指摘されていたように、端末を”買わせる”ことで収益を上げようとしてきた国内の大手キャリアが、Pixelのように比較的”長く使える”端末をどのように受け入れていくのかはとても気になるところです。

なお、今回発表された”日本版 Pixel”に、おサイフケータイの搭載があるのではないか、と予測する記事もあり、Pixelの”日本仕様”への対応の可否も気になる点となっています。

グーグルスマホ「Pixel」日本上陸が確定 ── iPhone対抗の肝は「おサイフ」対応である理由 – Business Insider Japan

Googleは米国時間の10月9日に、Made by Googleというイベントを計画しているとのこと。
Pixelの日本発売が予告されて初のイベントとなるので、どんな発表がされるのか是非チェックしたいですね。

また、Google公式のティザーサイトでは、最新情報のメールマガジンの登録ができるようになっているので、Pixelの情報が気になる方は是非登録してみてはいかがでしょうか。

Google Pixel

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

【Excel】特定の列や行を固定しスクロールできる範囲を制限する方法

超初心者向けではありますが、便利なのでご紹介。
横もしくは縦スクロールが発生するような長いシートを扱うとき、シートの先頭辺りに配置した、日付や項目名が書かれているセルはスクロールしたくない!というときがあるかと思います。
そういったときは、「ウィンドウ枠の固定」という操作を行い、指定したセルのスクロールをできないようにし、スクロールできる範囲を指定しましょう。

 

指定方法はいたって簡単で、まずスクロールをしたい範囲の一番左上のセルを選択します。
例えば、下記のようなシートがあり、列Aと、行1~2をスクロールできないようにしたい場合、セルB3を選択します。

そうしたら、上のリボンメニューから「表示」を選択し、「ウィンドウ」から「ウィンドウ枠の固定」をクリックします。
するとメニューが表示されるので、一番上の選択肢の「ウィンドウ枠の固定」をクリックします。
なお、上の画像は既にウィンドウ枠の固定を指定済みなので、解除の項目が選べるようになっています。

ちなみに、スクロールを固定したい範囲が列Aのみの場合は「先頭列の固定」を、行1のみの場合は「先頭行の固定」を選んでも同じことができます。

 

以上、Excelシートで、特定のセルを固定し、スクロール範囲を指定する方法でした。
かなり初歩的なことではありますが、これを行うと、横や縦に長いグラフをスクロールしたときに項目名が隠れてしまう!ということが無くなるので、かなり便利です。
ちょっとしたことではありますが、こういった操作をして便利に使ってください。

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

【Android】Intentを使ってカメラを起動する方法

今回は、タイトルにもある通り、Androidアプリでカメラを起動する方法についてです。
なお、カメラの起動には、画面遷移の際に用いられる、Intent を利用します。

参考にさせていただいたサイトはこちらから。

Take photos|Android Developers
https://developer.android.com/training/camera/photobasics

 

さて、カメラを起動する機能の実装方法ですが、必要なコードは実は下記の2行くらいで済みます。

static final int REQUEST_IMAGE_CAPTURE = 1;

// カメラを起動
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);

あとは、AndroidManifest.xmlタグ内に、下記を指定します。

<uses-feature android:name="android.hardware.camera" android:required="true" />

こちらはカメラを起動する際に必要なので、お忘れなく。

で、写真が無事に撮影できると、onActivityResult() が呼び出されるので、そこで行わせたい処理を記述します。
今回は、ImageView に撮影した写真を表示するように指定しています。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bitmap bitmap;
        ImageView imageView = findViewById([ImageViewのID]);

        if( data.getExtras() != null){
            bitmap = (Bitmap) data.getExtras().get("data");
            if(bitmap != null){
               imageView.setImageBitmap(bitmap);
            }
        }
    }
}

ここまでを実行すれば、カメラの起動から、撮影した画像の表示までは問題なく動作します。

 

以上、Androidアプリで Intent を使ってカメラを起動する方法でした。
あとは、画像の保存機能の実装ですが、そこまではまだできていません。
原因としては、ストレージの権限あたりかと。
実装出来たら、その方法についても改めてまとめたいと思います。

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

【Android】ImageViewの画像を180度回転させる方法

久しぶりにネイティブアプリを開発しておりますが、その中で、ImageViewの回転が意外と面倒だったので、備忘録としてまとめ。

経緯としては、下の画面のようなじゃんけんアプリを作っている際、相手の手を回転させたくて方法を調べました。

些細なことなんですけど、じゃんけんは相手の手が自分の手とは逆なのが普通なので、こうしたほうがよりそれらしくなるんですよね。

 

画像の回転や縮小・拡大には Matrix を利用します。
が、基本的に画像処理は重い処理なので、あまり多用しないように気を付けてください。

なお、今回参考にさせていただいた記事はこちら。

[Android] Matrixで画像を回転、フリップ、縮小させる
https://akira-watson.com/android/matrix.html

コードは下記のとおりです。
onCreate() 内に記述してください。

Image View imageView = findViewById(R.id.[ImageViewのID]);
Bitmap bitmap_origin = BitmapFactory.decodeResource(getResources(), [画像パス]);

// 画像の横、縦サイズを取得
int imageWidth = bitmap_origin.getWidth();
int imageHeight = bitmap_origin.getHeight();

// Matrix インスタンス生成
Matrix matrix = new Matrix();
 
// 画像を中心に180度回転
matrix.setRotate(180, imageWidth/2, imageHeight/2);
 
// 180度回転したBitmap画像を生成
Bitmap bitmap_rotate = Bitmap.createBitmap(bitmap_origin, 0, 0, imageWidth, imageHeight, matrix, true);
 
imageView.setImageBitmap(bitmap_rotate);

コードを見てもらえれば分かりますが、CSS のように単純に回転はできず、画像そのものをビットマップに変換してから、回転させて表示するという処理が必要になります。
少々面倒ですが…こうしてコードをまとめておけば、以降はこれをコピー&ペーストするだけで済みますね。

 

以上、ImageViewの画像を回転する方法でした。

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

噂されていた新型iPhoneがついに発表!!! ラインナップは “XS” “XS MAX” “XR” の3種類!!

今日午前2時に、Appleの製品発表イベントで、以前からうわさされていたiPhoneシリーズの新モデルが発表されたようです!!!

発表されたのは3機種
https://www.apple.com/jp/iphone/compare/

今回の新機種はすべてiPhone Xベースになったようです。
左から
iPhone XS iPhone XS Max iPhone XR
の3ラインナップになるようです。

つまり、iPhoneではついにホームボタン無し、ノッチありのデザインが”当たり前”になることになります。

上記のURLから、詳しいスペック一覧も確認できるのですが、その中から個人的に気になったポイントを上げてみます。
まずびっくりするのがこちら。

XSとXS Max はなんと最大容量が512GBに。
もう一般的なモバイルPCよりも大きくなってしまっています。クレイジーすぎです。

iPhoneで動画をたくさん撮る人にはとても嬉しい発表かもしれませんね。

次はプロセッサ。

今回の3機種については、すべて同じプロセッサが搭載されるようです。
廉価版にも最新のプロセッサが搭載されるのは嬉しいですね。

では廉価版と上位版の違いはどこにあるのか、というところですが、まずカメラに差が出てきそうです。

XS、XS Maxは光学ズームがありますが、XRはデジタルズームのみのようです。
ズームしたときの画質も、XS/XS Maxの方が綺麗に撮れそうですね。

こちらはちょっと注意したいポイント。
XS/XS Maxは”ギガビット級LTE”に対応していますが、XRの場合、LTE-Advancedまでの対応になっています。
もっともキャリアが対応していなければギガビット級LTEに対応していても速度が出ませんが、今後のことを考えたときに、より速い通信速度を求める方は注意が必要になるかもしれませんね。

ちなみに、噂されていたデュアルSIMスロットですが、実際はnanoSIMスロットと”eSIM”スロットの2つとなったようです。
eSIMは新しい”内蔵型SIM”の規格で、ソフトウェアによってデータを書き換えることでキャリアを切り替える仕組みになっています。
いろいろな事情から、こちらはキャリアが対応していないと使用することができないため、実質的にはnanoSIMスロット×1のような構成になりそうです。

eSIMの詳細はこちらの記事がわかりやすいので確認してみてください。
次世代SIM規格「eSIM」(イーシム)って何だ? 世界では動き始めているeSIMをわかりやすく解説 – モバレコ

最後に、気になるお値段について。

XRは84,800円~、XS Maxはなんと¥124,800~となるようです。ちょっと高い…?

その代わり、一世代前の機種となったiPhone 8・iPhone 7 が値下げされ、少し手が届きやすくなりました。
これはちょっとうれしいですね。

アップル、iPhone 8/7などを10,000円~11,000円値下げ  – 価格.com 新製品ニュース

今後さらに盛り上がってきそうなApple界隈。

新OSのiOS 12とmac OS Mojaveも間もなくリリースということで、今後の動きにも目が離せませんね。

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

【アプリ】AndroidでキャッチしたBeaconの情報を確認できるアプリ「Beacon Scanner」

少し前に、CordovaでiBeaconを取り扱う記事を投稿しましたが、そもそもBeaconのUUIDなどがわからなかったので、それを別のアプリで取得しました。
使用したアプリは、「Beacon Scanner」というAndroidアプリです。

Google Playのページはこちらから。

Beacon Scanner – Google Play のアプリ
https://play.google.com/store/apps/details?id=com.bridou_n.beaconscanner

画面のスクリーンショットはこんな感じ。

使い方は、アプリを起動して右下の再生ボタンをタップするだけ。
Beaconの信号をキャッチすると、認識に必要なUUIDやMajor、Minor の情報が表示されます。
なお、Beaconの信号取得には BluetoothON にする必要があるので、そこはお忘れなく。

 

以上、Beaconの信号取得ができるAndroidアプリのご紹介でした。
操作方法も画面もシンプルで使いやすいので、おすすめです!

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

Ubuntuのアップグレード機能を使って、16.04から18.04へアップグレードしてみる。

久々に、UbuntuのOSアップグレードを試してみました。
今回は16.04から18.04へのアップグレードです。

インターネットにつながっていて、かつ最新のパッケージリストを取得できていれば、上のようなダイアログが出現するかと思います。
出現しない場合は、

sudo apt update

を実行してみてください。

(※アップグレードは失敗するとOSが壊れる可能性のある結構リスキーな操作です。PCの強制シャットダウンなどの不正操作を行わない限り基本的に壊れることはないとは思いますが、念のためアップグレード前にバックアップを取っておくことをお勧めします。)

Ubuntuのバージョンをアップグレードする場合は”いますぐアップグレードする”をクリックします。

管理者権限が必要となるので、sudoが使えるユーザーの認証情報を入力します。

リリースノート(英文)が表示されるので、内容を確認して”アップグレード”をクリックすると、アップグレード処理が開始されます。

サードパーティのリポジトリはすべて無効化されます。
自分でリポジトリを追加した場合は、アップグレード後に再度追加する必要があります。

最終確認が出てきます。
“アップグレードを開始”をクリックすると、新しいバージョンへの上書きが実行されます。

暫く待ちます。

アップグレード後に使用するディスプレイマネージャー(GUIの動作を管理するアプリケーション)を、従来のLightDMを使うかGDM(Gnome標準)に変更するか聞かれます。
18.04でのデフォルトはGDMですが、自分の場合LightDMを選択しました。
現時点では特に不具合は出ていないようですので、ここはお好みで選択しても大丈夫かと思います。(後から切り替えることもできます。詳しくは検索してみてください。)

18.04ではサポートされない古いパッケージ(アプリやライブラリなど)を削除するか聞かれます。
対象のパッケージが一覧で確認できるので、削除されても問題ないか確認して問題なければ”削除”を選択します。

すべて完了すると、再起動を促されるので必ず再起動をクリックします。

この時点で壁紙がすでに新しいバージョンのものに差し変わってますね。
気付きましたか?

再起動してログインすると、初期画面が表示されます。
画面に従って初期設定を進めていきます。

これで更新作業は完了です。

昔のUbuntuはアップグレードすると不具合が結構出ることもあったのですが、今回はアップグレードによって発生したと思われる目立った不具合は見つけていません。
CUIでの使用がメインというのもあるかもですが、安定性はどんどん上がっている気がしますね。

興味のある方は是非お試しください。

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

【Xcode】アプリを実機で起動した時の「iPhone is busy: Processing symbol files」エラーの対処法

Xcodeでたまに見る実機での実行エラーについて。
今回遭遇したのは、「iPhone is busy: Processing symbol files」というエラーでした。

エラー全文は、以下の通りです。

iPhone is busy: Processing symbol files(iPhoneがビジー状態:シンボルファイルの処理)
Xcode will continue when iPhone is finished.(iPhoneが終了するとXcodeが続行されます)

 

原因としては、シンボルファイルの処理に時間がかかっていることだったので、待っていればいつか終わるらしいです。
なお、参考にさせていただいた記事はこちらから。

iPhoneアプリを実機で動作させようとしたらエラー|房総ITサービス
http://boso-it.com/xcode/iphoneアプリを実機で動作させようとしたらエラー/

が、Macのスペックにもよりますが、だいたい処理の終了まで10分程度かかるとのこと。
私含め、そんなに待てない!という方は、別の方法として、iPhoneの再起動をお試しください。

再起動は、一度アプリの実行を停止し、念のため、Macと繋がるケーブルを抜いてから行ってください。
私の環境ではこれで上手くいきました。
こちらの方法については、下記の記事を参考にしました。

実機デバッグで、busyエラーが出た時の対処 – ramkaの朝ごはんはピーナッツパン
http://ramka.hateblo.jp/entry/2018/02/14/013549

 

以上、Xcodeでアプリを実機で動かそうとしたときのエラーについてでした。
もし、同じエラーに遭遇した場合は、参考にしていただければと思います。

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

【Cordova】FCMによるプッシュ通知のアイコンが白い四角になるときの対処法

調べていたのは別の症状についてだったのですが、これも有益そうだったので、備忘録としてまとめ。
Cordovaで開発中のアプリに、FCM(Firebase Cloud Messaging)を利用したプッシュ通知機能を追加したのですが、Android端末に送られてきた通知のアイコンに指定した画像が反映されず、単なる四角形になってしまったときの対処法について。

参考にさせていただいたサイトはこちらから。

IonicでFCMによるpush通知を行う – Qiita
https://qiita.com/saihoooooooo/items/34712738d5cc6f03cdf4

また、使用しているプラグインはこちらです。

GitHub – fechanique/cordova-plugin-fcm: Google FCM Push Notifications Cordova Plugin
https://github.com/fechanique/cordova-plugin-fcm

 

で、対処法ですが、そもそも原因はアイコン画像が指定されていないか、指定方法が間違っているのが原因です。
そのため、下記の場所にそれぞれアイコンを保存します。

  • platforms/android/res/mipmap-ldpi
  • platforms/android/res/mipmap-mhdpi
  • platforms/android/res/mipmap-hdpi
  • platforms/android/res/mipmap-xxhdpi
  • platforms/android/res/mipmap-xxhdpi
  • platforms/android/res/mipmap-xxxhdpi

そして、config.xml で、下記のようにアイコンの指定を行います。

<platform name="android">
    <resource-file src="resources/android/fcm_push_icon/drawable-ldpi-icon.png" target="res/mipmap-ldpi/fcm_push_icon.png" />
    <resource-file src="resources/android/fcm_push_icon/drawable-mdpi-icon.png" target="res/mipmap-mdpi/fcm_push_icon.png" />
    <resource-file src="resources/android/fcm_push_icon/drawable-hdpi-icon.png" target="res/mipmap-hdpi/fcm_push_icon.png" />
    <resource-file src="resources/android/fcm_push_icon/drawable-xhdpi-icon.png" target="res/mipmap-xhdpi/fcm_push_icon.png" />
    <resource-file src="resources/android/fcm_push_icon/drawable-xxhdpi-icon.png" target="res/mipmap-xxhdpi/fcm_push_icon.png" />
    <resource-file src="resources/android/fcm_push_icon/drawable-xxxhdpi-icon.png" target="res/mipmap-xxxhdpi/fcm_push_icon.png" />
</platform>

なお、厳密にこのとおりでなくても良いようなので、ファイル名などは適宜変更してください。

あとは、送信時のJSONデータに、アイコンと色を指定すればOKです。

{
  "to": [デバイストークン],
  "priority": "high",
  "notification": {
    "icon"  : [アイコン画像],
    "color" : [色コード],
    "title" : [アプリ名],
    "body"  : [メッセージ],
    "sound" : "default",
  }
}

…が、私の環境ではまだ直っていないので、きっとどこかにミスがあります…。
恐らくですが、アイコン画像の場所とかが怪しいかな。

 

以上、Androidでプッシュ通知にアイコン画像が反映されていない時の対処法でした。
意外とこういう小さな箇所って、だからこそ目についたりするので、気を付けたいですね。

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