カテゴリー別アーカイブ: Android

Android関連の記事まとめ

【Android】AndroidNetworkInfoGetter【開発支援ツール】

久々にgithub.comに何かpushしたくなったので昔作った開発支援ツールを改修しました。
いろいろ放置していたのもあって、結構カオスな状態だったのですがJavaScriptの復習がてらに改修しました。

その名も

AndroidNetworkInfoGetter

node.js製で、今のところしょぼいWebアプリですが開発した当初はこいつにすごい助けられたのを覚えています。

https://camo.githubusercontent.com/c647106fa077116e5ca476ea4f9f9b6ba87b4485/687474703a2f2f74616b656c61622e7375622e6a702f77702d636f6e74656e742f75706c6f6164732f2545332538322542392545332538322541462545332538332541412545332538332542432545332538332542332545332538322542372545332538332541372545332538332538332545332538332538382d323031372d30392d31372d31302e33322e32392e706e67

画面こんな感じです。

https://github.com/shotakeu/AndroidNetworkInfoGetter

実は昔githubに公開してそのまま放置していたという。。。



続きを読む 【Android】AndroidNetworkInfoGetter【開発支援ツール】

bitbucketのBoards機能

【個人アプリ】TwitMorseのタスク管理にbitbucketのBoards機能を使ってみる【管理ツール】

さすがに半年も開発現場から離れていると、いろんなプロジェクト管理ツールが出てきていたり、使っていた管理ツールに新機能ができていたりでとても戸惑います。有名なプロジェクト管理ツールだと、redmine,zilla,backlog,,,あと最近はtrelloなどでしょうか。
1年のうちにめまぐるしく変わる開発ツールのトレンドに翻弄される方も多いのではないでしょうか。というか私がそれです。

半年の放浪で完全に浦島太郎状態です。

今日は風邪が悪化して休みをもらったので、せっかくだし、個人開発アプリで何かつかってみようかな、と。
続きを読む 【個人アプリ】TwitMorseのタスク管理にbitbucketのBoards機能を使ってみる【管理ツール】

TwitMorseのつぶやき詳細画面のレイアウトを調整しただけ

Androidアプリ「TwitMorse」version1.6.1をリリースしました。

こんにちは。絶賛就職活動中の元社畜です。

先日とあるWeb系の会社の最終選考で、Twitterアカウントばれして、

「Twitter名、『ハイパーポエムクリエイター』さん、なんですね、何か唄ってみてください」

と言われ、

突然のことで頭が真っ白になってしまってシドロモドロになったので、もう就職活動が嫌になってきています。

続きを読む Androidアプリ「TwitMorse」version1.6.1をリリースしました。

TwitMorse ver1.5.8 リリースしました

ver1.5.7で発生していたクラッシュの緊急対応を行いました

投稿画面を開くとクラッシュする不具合が発生していました。
ご迷惑をおかけしました。

https://play.google.com/store/apps/details?id=jp.sub.takelab.twitmorus

続きを読む TwitMorse ver1.5.8 リリースしました

Y!mobile->mnp->TONE

ワイモバイルが契約から2年経ったのでMNPでトーンモバイルに移行しました。

その時tone店舗の受付でmnp番号発行にてまどりましたのでメモ。

http://www.ymobile.jp/support/process/portability/

MNP発行にはまず電話です。

ワイモバイルの場合:161

↑これに電話します。toneのパンフレットにはドコモ、ソフトバンク、auの3種類しか書かれてません。

音声ガイダンスに従いダイヤルしていくと、オペレータに繋がります。結構混んでます。繋がるまで5分くらい待ちます。

オペレータに繋がったらスグにmnp番号の発行をお願いしましょう。軽い本人確認があり、注意事項の説明を受けたりします。いろいろ余計な案内をしてきますが、MNP番号発行に至るまでの時間稼ぎなので待ちます。

発行されたら直ぐ口頭で言ってもらいましょう。それをメモします。(後でSMSで送られてきますが届くまで遅延があります)

MNP予約番号、これがないとMNP出来ないので予め店頭でやっておくとスムーズです。

トーンに移った感想は別途書きます。

自分の開発したAndroidアプリにApp Indexingを導入してみた話

最近”App Indexing(アップインデックシング)”というのが流行っているらしく、仕事でもAppIndexing案件に携わるようになった。
しかし、実のところ、自分でもAppIndexingがなんなのかよく分かっていない。
この度プライベートで開発しているAndroidアプリ「TwitMorse」に導入してその効果を検証してみることにする。

続きを読む 自分の開発したAndroidアプリにApp Indexingを導入してみた話

Android 画面回転時にActivityを再起動させない方法

職場で教えてもらったので後学のために残します。

続きを読む Android 画面回転時にActivityを再起動させない方法

アプリにDeeplinkを導入させる ― Android

Androidアプリで話題になっているDeeplink(ディープリンク)をTwitMorseに導入してみたのでその方法をメモします。

続きを読む アプリにDeeplinkを導入させる ― Android

nexus7 2012 地震の日に逝く

 
2015年9月12日午前5時頃に起きた東京の調布で震度5弱を記録した地震。

なんとなく眠れなくて、布団の中で悶々としていると、

ゴゴゴゴゴゴゴゴゴゴ

「地震が起きた時は脱出路を確保するために窓を開ける」という知識を基に窓を開けに走った。夢中だった。

サッと窓をあけて揺れが収まるのを待っていたら

Nexus7が床でピクピクしていた・・・

私が踏みつぶしたのである・・・。

画面は割れ、完全に表示する機能を失いながらも懸命に速報の通知音を出していました。。。

とても悲しいです。

Nexus7ヤマダ電機にてWiMAXと同時購入

この時買ったNexus7。
GoogleもNexus7の販売を停止したそうで。

たくさんの思い出をありがとう、Nexus7。

Android ActionBarを画面下に表示する方法

何がしたかったか

Before

Screenshot_2015-09-14-11-46-38

After

Screenshot_2015-09-14-11-45-11
ひとつメニューにアイコンを設置するので、ActionBarを画面の下に表示させたかった。例えばTwiccaのようなUIにしたかったのです。

その方法

方法はプログラムを書くかとおもいきや意外とmanifestファイルの編集で終わりました。

AndroidManifest.xml

<activity
            android:name=".MentionsActivity"
            android:uiOptions="splitActionBarWhenNarrow"/>

アクションバーを下に持って行きたいActivityに

android:uiOptions="splitActionBarWhenNarrow"

を追記するだけです。

多分プログラムから制御する方法もあると思うのですが、この方法が一番早かった。


Android ArrayAdapterからstartActivityする方法

AndroidのListViewでは独自のAdapterを作ってListViewにセットすることができます。
今回、独自のAdapterを作ってその中からあるアイコンをタップした時に別画面へ遷移させる方法がわからなかったので調べてみました。

続きを読む Android ArrayAdapterからstartActivityする方法

androidbootstrap

AndroidBootstrapがアツい!と俺の中で話題に

「アプリのデザイン、誰かやってくれないかなー」と思っている個人開発者は結構多いはず。
私も「デザインができる人と友達になりたい」などと他力本願な思考が頭の中を占めていました。

続きを読む AndroidBootstrapがアツい!と俺の中で話題に

Your content must have a ListView whose id attribute is ‘android.R.id.list’ の罠

3連休、日がな一日を個人開発のアプリブラッシュアップに使っている私です。
公開しているAndroidアプリ、TwitMorseにSwipeRefreshLayout(リストを指で引っ張ると更新するやつ)を加えようと、がんばって何度もNullPointerExceptionにはまったりしていました。
今日はエラーログからある問題を解決したのでメモします。 続きを読む Your content must have a ListView whose id attribute is ‘android.R.id.list’ の罠

Java .equalsメソッドの罠

Javaの.equalsメソッドの罠にひっかかって2週間くらいなやんだのでメモります。
開発してるTwitMorseの逆変換機能の実装の時に直面しました。

equalsメソッドは時折同じ文字列の比較をしてもfalseを返すことがあります。

私が引っかかったコード

protected String convertMorseToText(String text) { 
     String[] morse = text.split(" ", 0);
     for (String moji : morse) { 
     if (moji.equals("--・--")) { 
         convertText += moji.replaceAll("--・--", "ア"); 
     } 
     return convertText; 
}

何をしたかったかというと、
textで入ってきたモールス信号を全角空白で分割し、”ーー・ーー”という文字列があった場合に「ア」に変換して返す
というものでした。

if (moji.equals("--・--")) {

しかし、この一文はfalseとなりスルーされてしまいます。何度”ーー・ーー”を入力しても一致しないものとして処理されていました。
これに2、3週間悩みました。

デバッガで調べていたところどこでfalseになっていたかというと、
Stringクラスのequalsメソッドのある部分でfalseが返されていました。

    @Override public boolean equals(Object other) {
        if (other == this) {
          return true;
        }
        if (other instanceof String) {
            String s = (String)other;
            int count = this.count;
            if (s.count != count) {
                return false;
            }
            // TODO: we want to avoid many boundchecks in the loop below
            // for long Strings until we have array equality intrinsic.
            // Bad benchmarks just push .equals without first getting a
            // hashCode hit (unlike real world use in a Hashtable). Filter
            // out these long strings here. When we get the array equality
            // intrinsic then remove this use of hashCode.
            if (hashCode() != s.hashCode()) {// ここにひっかかる
                return false;
            }

どうもhashCodeの違いでequalsを使っても一致しなかったらしい。

そこで以下のように書き換えてみたところうまく機能した。

protected String convertMorseToText(String text) { 
     String[] morse = text.split(" ", 0);
     for (String moji : morse) { 
     String enc = new String(moji);
     if (enc.equals("--・--")) { 
         convertText += enc.replaceAll("--・--", "ア"); 
     } 
     return convertText; 
}

入力されたtextを全角空白で分割する所までは一緒。
違いは、新しくencという文字列をmojiを使って生成して比較するという部分でした。
これでhashCodeの違いを解消できました。

equalsメソッドをオーバーライドしたりhashCodeメソッドをオーバーライドしたりという解決方法もあるにはあったのですが、自分はこの方法でequalsメソッドの罠を回避しました。

後学のためにメモとして残しておきます。

R.array.listの書き方と用途メモ

以下のようなコードでR.array.listを見かけて作り方がわからなかったのでも私的メモを残す
[java]
// ListViewにデータをセットする
ArrayAdapter<charsequence> adapter = ArrayAdapter.createFromResource(self, R.array.list, android.R.layout.simple_list_item_1);
[/java]
続きを読む R.array.listの書き方と用途メモ