著者アーカイブ asaba

asaba 著者:asaba

【iosアプリ】夕ご飯が決まっていない、そんな時の強い味方 --今日の晩ご飯ーー

夕ご飯の計画が決まってない、自分で決めるのが億劫という方に向いてるアプリを見つけました。

名前そのままですが、「今日の晩御飯」というアプリです。

このアプリは、真ん中の押すというボタンを押すだけで、ランダムに料理名を出してくれます。画像ではエビフライとでています。(気に入らなければもう一度押してください)

で、料理名そのままの状態でレシピというボタンを押すと、なんとAPIを叩いてクックパッドのページに飛んでレシピを教えてくれます。

作ったことないなーとか余計な心配は一切しなくていいのでこれは助かります・・・!

更に、外食ボタンを押すと、googleに飛んで近くの店名(ここではジョイフルです)を教えてくれます。素晴らしすぎる・・・

友達や家族と何を食べるか意見が分かれた場合とかこのアプリを使えば盛り上がること間違いなしだと思います。

独身でも迷いを打ち消してくれるたのもしいアプリだと思います。

以上、優柔不断をスパっと打ち消してくれるアプリでした。短めですが今日はこれで終わります。

P.S.地元を離れてしばらく外食andスーパーのお惣菜ばかりだったので、もう少し早く出会いたかったです。

asaba 著者:asaba

【androidJava】rarativelayoutを使って画像を重ねる

前回は、linearlayoutを使って画像を横に揃えて表示するプログラムを載せました。

今回は、ralativerayoutを使って画像を重ねるところまで紹介していきます。

ralativerayoutとは、アクティビティに必要な部品を相対的に並べることで、デバイスが縦横してもデザイン崩れすることなく表示できるのが特徴です。

ある一つの部品を軸にすることで、周りのパーツを相対的に並べることで見やすいアプリを作ることができます。

ralativelayoutを使ったソースがこちらです↓

<pre><RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"

    >

<ImageView
    android:id="@+id/apple"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/apple"
    android:layout_alignParentBottom="true"
    tools:ignore="MissingConstraints"/>

<ImageView
    android:id="@+id/banana"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/banana"
    android:layout_alignParentBottom="true"
    tools:ignore="MissingConstraints"/></pre>
<pre></RelativeLayout></pre>

 

この中で重要な役割を担っているのが


<span style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">android:layout_alignParentBottom="true"</span>

このコードは、配置する下辺ビューを、親の下辺ビューに揃うように配置してくださいという意味を持っています。

これを応用すれば、ボタンの上からテキストや画像を重ねることも簡単にできます。

 

ralativerayoutを上手に使えば、モバイルアプリでは致命的なデザイン崩れも防ぐことができるので、これからiosやandroidでアプリを作ってみたいというかたはぜひともマスターしておきたいところですね!

自分もレイアウトは見様見真似だったので引き続きレイアウトの勉強も欠かさずしていきたいと思います。

 

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が必要になった時に非常に重宝されるのでこういう機能はいいなと感じました。

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