著者アーカイブ asaba

asaba 著者:asaba

【androidJava】初心者向け:文字列から数値型に変えたい時

今日は渡された文字列をint型で受け取りたい時の方法を書いていきます。

intentなどで渡された値の照合などをしたい時は結構あると思います。自分もすっかり忘れてしまっていたので備忘録として下記に残します。ほんの少しですが。

<pre>num = Integer.parseInt(intent.getStringExtra(MainActivity.EXTRA_MESSAGE));

MainActivityから受け取った値をInteger.parseIntで変換していますね。この処理の後はもうint型の値として使うことが出来ます。

最近はandroiddevelopmentとか見なくなったので細かい変更などがされているか分からなくて不安でしたが、上記の処理でも問題なく動きます。もしよろしければ参考にしてみてください。

P.S.alt+Enterキーさんは偉大だったと改めて感じました。

asaba 著者:asaba

【firebase】firebase:cloud Massegingで送信失敗した時の解決策

firebaseはcloudを使ってデバイス同士のやりとりを高速で体現できることが特徴で、主にチャットの機能にも使われています。オフラインからオンラインになったタイミングで通知を流したりとプラグインと組み合わせることで好きなタイミングで機能を追加することができるなど、モバイルアプリを開発するユーザーにとってはありがたい機能がそろっております。

今回はfirebaseのcloud massegingを使ってデバイスにプッシュ通知を送信できなかったときの対策を備忘録として書きます。

例えば、メッセージ送信の際に突然めせーじが遅れなくなり送信失敗と赤いアイコンが出てしまったとき。

そのような時は、FCM登録トークンに着目しましょう。赤く囲んだところです。

 

このエラーは、デバイスのトークンがアプリを消してしまった際に違うトークンIDに変わってしまったことが原因です。

回答としては、現在のトークンIDをconsole.log(xxx)で調べ、それを先ほどの赤く囲んだところにコピペするだけです。

開発中のアプリを新しくインストールしたりアンインストールしたり繰り返していると、トークンIDがすり替わっているのを忘れてしまいがちなので、そこは気を付けたいと感じました。

 

asaba 著者:asaba

【android Java】初心者向け・Linearlayoutの使い方

今日は、androidstudioのレイアウトについて気づいたことを備忘録に残したいと思います。

今回はLinearlayoutの使い方をメインに綴ります。

お題の主役であるLinearLayoutは、ある部品を等しく一直線に並べたいと思ったときによく用いられます。Layoutの中でも最も使用頻度が高く汎用性のあるレイアウトといっていいでしょう。htmlでいうdivの役割と似ていますね。

使い方は、シンプルで一直線に並べたい部品を中に囲むだけ。下記のように書くだけです。

例えば、ボタン三つを横一列で中心に表示したい時は
android:orientation="horizontal"
android:layout_gravity="center"

と<Linearlayout内でプロパティを決めます。
Designタグを見て下記のようになっていれば成功です。

これだけならすごく簡単ですね。

複数の部品を決まった場所にそれぞれ配置したいとなってくるとRalativelayoutを使う必要がありますが、簡単なアプリを作ってみたいというかたはまずはLinearlayoutから触ってみてください。他にもTablelayoutやGridlayoutなど様々な特徴を持ったレイアウトがありますが、使う機会があったらまたやんわりと紹介していきたいと思います。

 

 

asaba 著者:asaba

【android Java】document already exists at the specified project location

また新規プロジェクトを作る時のネタになります。

最近あるアプリを作りたくて新しくemptyのアクティビティを作った時のお話です。かなり初歩的なエラーを踏んでしまい、その戒めを込めて綴っていきます。

その時のエラー時の画像です。

黄色い三角マークで、document already exists at the specified project locationと表記されているエラー。これは新しくプロジェクトを作る時に、ディレクトリのフォルダ名を明記していないときに起こります。

後ろに/(スラッシュ)とフォルダ名(何でもいい)をつければ正常にプロジェクトが出来上がります。いじるところは赤く囲ってあるところだけ。

原因は、document直下でgradleやideaなどがまとまったフォルダにないと後にビルドするときに見つけることができずnot foundになってしまうためです。

新しいプロジェクトを作る時は、必ずひとまとめにできるようにディレクトリ作成時にフォルダを付け足してあげましょう。

 

asaba 著者:asaba

【android Java】Binary XML file line #8: You must supply a layout_width attribute.

android studioで新しくプロジェクトを作ってrayout.xmlを少しいじった後に試しにビルドをしてみたらいきなりエラーがでました。以下がLogcatで出たエラーです。

 

layout_widthと書いてあるので、一番上のschemeが書いてある下あたりでandroid:layout_width=”match_parent”が抜けていて横幅が不明になっているのだと思われます。一緒にheightの方もつけてあげれば無事動くと思います。

少し昔の参考書にありがちなのですが、layout_xml部分が意外と何も書かれていないことが多く、見逃してエラーを出してしまいがちです。一応gitにも出版元のコードが置いてありますが、ほとんど更新されていなく結局自分で手直しせざるを得ません。バージョン変更に伴いandroid studioやgradleの扱いも少し変わってきてるのでこれから勉強する方はできれば2018出版の参考書を購入することをお勧めします。

asaba 著者:asaba

【android Java】プラグイン初心者から見た上質なプラグインの選び方

バックグラウンドでアプリを動かすことができるプラグインは、OSにもよりますがどれも正式にライセンス登録されていて数もそれなりに多くどれを使えばいいか迷ってしまいます。

apacheCordovaの公式ページを使っていましたが、検索機能が使い物にならないのでコルドバのプラグインを探すときはこちらのhttps://www.npmjs.com/package/cordova-plugin-deviceを使っています。プラグインの用途や対応OSなども丁寧に掲載されているので、自分の作っているアプリに向いたプラグインを見つけることができます。npmという大きなロゴが目印です。余談でした。

さて、今自分が気になっているプラグインが三つ。

cordova-plugin-background-push

・cordova-plugin-background-mode

・cordova-plugin-background-fetch

一通りの機能は見ましたが、性能的にはどれも一緒でしたね。しかもどのサイトを見回しても使っているユーザーがそこまでいないのも気になった感じ。cordova-plugin-background-modeに至ってはビルド時にエラーのままリリースされたみたいなので、導入したら自分の環境に合わせなくてはいけないという手間のかかりよう・・・。うーん。試してみないと分からないですけどね。

cordova-plugin-background-fetchは公式曰くandroid・iosともに対応しているようですが、スタックオーバーフローを見るとこのプラグインではiosでしか動きませんというグローバルなエンジニアさんの意見がちらほら・・・どっちやねん!!という話です。プラグインをほいほい簡単に入れられるならば別に構わないのですが、前回記事のを筆頭にgradle関係のエラーが多発してしまって面倒な目に会っているので筆者は少々ナーバスになっているのです。すみません。

残りのcordova-plugin-background-modeも余裕があれば入れて動かしてみたいと思います。(こいつだけやたら説明が長かったような・・・)

とりあえず使えそうなバックグラウンドプラグインを上げてみました。非公式プラグインであれば海外のエンジニアさんのブログでも取ってこれるので中国文字やキリル文字に耐えてそっちを使ってみてもいいかもです。(リリース時にリジェクトされるかもしれないですけど。)

とりあえず自分が心得ているプラグインを決めるときの大事な点は

・公式ライセンスを持っているか

・使用実績が多くgitなどのサイトでも取り上げられているか

・更新頻度が多く、比較的新しい日にちに更新されているか

の三つです。情報量の多いプラグインなら保守の難易度も大分下がりますし人に説明しやすいところも利点の一つだと思います。以上プラグイン初心者目線での議題でした。

 

 

 

 

asaba 著者:asaba

【android Java】ERROR:idea not supported サブタイトル:赤きエラー再び

cordovaで新しくプラグインを導入しようとしたらERROR:.idea not supportedというエラーに見舞われたのでその解決策を。

コマンドでcordova platforms rm .ideaと入力して一旦.ideaを削除します。

その後に入れたいプラグインをaddすれば無事導入が完了します。たったこれだけ。

スクショをと思ったのですが忘れてしまったので活字で表現させていただきました。

プラグインを入れようとすると必ず立ちはだかるプラットフォームのエラーですが、種類が多く性格上忘れやすいので随時更新していく必要があると感じました・・・。という訳で今後も似たような事例をとりいれていきたいと思います、それでは!

 

 

 

asaba 著者:asaba

【iponeアプリ】日本全国AEDマップ

gpsで許可さえすれば近くのAEDをすぐに探せるというアプリを見つけたので使ってみました。

アプリをっダウンロードしてgpsを許可するだけで自分がいる地点のAEDがある施設をアイコンで示してくれます。

地点投稿機能もついており、利用時間の情報の追加もできます。知らない土地でAEDが必要になった時に非常に重宝されるのでこういう機能はいいなと感じました。

心臓の弱い方と一緒にいてもし万が一必要になった時はこれを使えば早い段階で救助ができるのでとても利用価値の高いアプリだと思います。これからもこのようなアプリが増えていってほしいですね~。

asaba 著者:asaba

Failed to fetch plugin:ERRの赤文字から逃れた話

前回【androidJava】プラグイン導入できない!?Failed to fetch pluginとは・・・

の記事で、ホラー映画さながらの大量の赤文字エラーが解決できないでいましたが、あっさりと解決することができました。

やり方も非常に簡単で、まずプラットフォームを全て消した後に、その後プラグインも全部rmで削除してしまいます。


cordova prugin rm


cordova platfoms rm

でその後に入れたいプラグインを入力します。

 

cordova prugin add 入れたいプラグイン

でも前回はiosとandroidも消したはず。ただ.ideaとbrowserを消していなかったのですが、全部削除しないとダメだったのか・・・?解決はしましたが腑に落ちない結末でした。
あと一応ソースツリーの作業ツリーのファイルも全て消しておいたほうがいいです。configとかpackageが先祖返りしてpluginなんて知らないってとぼけるかもしれないので・・・


とりあえず今後もしこのようなエラーを見かけたらプラットフォームとプラグインを疑ってみてくださいね。それでは!


 

 

asaba 著者:asaba

【androidJava】続・firebaseを使ったアプリをビルドしたらcould not find any versionで怒られた話

今日は、おとといandroid studioに怒られたエラーcould not find any versionの別の対策について書きます。(トップが象なのはgradle関係なので)

前回、上のエラーに遭遇した時は、「以下のようにbuild.gradle(android側)で、リポジトリを追加するコードを書き加えてあげましょう。」という対策を上げましたが

 maven { url "https://maven.google.com" } 

それでもまだエラーがでてくるよという方のためにもう一つの対策法も載せておきます。

まず、前回と同じandroid側のgradleファイルを開いて、dependencies内のclasspathに着目します。そこに書いてあるbuild.gradle〇.〇.〇という数字がありますが、これはgradleのバージョンを意味しています。つまり、何もいじらない段階でエラーが起きているということは、今使っているgradleのバージョンが古い若しくは存在しないバージョンを使っているために引き起こしていると考えられます。

さて、正常にする方法ですがbuild.gradle〇.〇.〇の上にカーソルを合わせると豆電球アイコンがでます。スクショを取り忘れてしまったので詳細を載せることはできませんが、豆電球の説明に従って適切なバージョンにアップグレードしてください。ちなみにCordovaLib側のバージョンはandroid側と合わせなくてもいいみたいです。

gradleのエラーは一回解決しても次々新しいエラーが出て訳の分からないことになるのであまり触りたくはないのですが、今回のようにバージョンが古かったりプラグインの設定を見直したいという方は慎重にいじってください。一回設定を間違えるとプラットフォームやnode.moduleを一から入れなおしたりと時やたら間を使ってしまうので・・・(汗)