takelab.note

釣りと一人旅と冒険と少々の技術の記録

Tag: Android

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

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

その名も

AndroidNetworkInfoGetter

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

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

画面こんな感じです。

https://github.com/shotakeu/AndroidNetworkInfoGetter

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



Continue reading

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

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

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

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

と言われ、

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

Continue reading

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

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

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

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

Continue reading

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

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

Continue reading

有給を失った社畜が2015年を振り返ってみた

最近このブログを書いていないので、2015年の振り返りをしたいと思います。

Continue reading

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を作ってその中からあるアイコンをタップした時に別画面へ遷移させる方法がわからなかったので調べてみました。

Continue reading

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

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

Continue reading

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

3連休、日がな一日を個人開発のアプリブラッシュアップに使っている私です。
公開しているAndroidアプリ、TwitMorseにSwipeRefreshLayout(リストを指で引っ張ると更新するやつ)を加えようと、がんばって何度もNullPointerExceptionにはまったりしていました。
今日はエラーログからある問題を解決したのでメモします。 Continue reading

Java .equalsメソッドの罠

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

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

私が引っかかったコード
[java]
protected String convertMorseToText(String text) {
String[] morse = text.split(" ", 0);
for (String moji : morse) {
if (moji.equals("--・--")) {
convertText += moji.replaceAll("--・--", "ア");
}
return convertText;
}
[/java]

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

[java]
if (moji.equals("--・--")) {
[/java]
しかし、この一文はfalseとなりスルーされてしまいます。何度”ーー・ーー”を入力しても一致しないものとして処理されていました。
これに2、3週間悩みました。

デバッガで調べていたところどこでfalseになっていたかというと、
Stringクラスのequalsメソッドのある部分でfalseが返されていました。
[java]
@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;
}
[/java]

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

そこで以下のように書き換えてみたところうまく機能した。
[java]
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;
}
[/java]
入力された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]
Continue reading

ADT(eclipse)日本語化手順(Windows版)

ADT(Android Development Tools)に入っているeclipseを日本語化する手順メモします。
英語でも余裕、今すぐ開発したいという方は必要ありませんがなんだかんだで日本語化しておいたほうが効率が上がるような気がしたので、入れることにしました。。

WindowsでのAndroidアプリ開発環境の導入(ADTの導入)手順についてはAndroidアプリ開発環境 構築手順(Windows版)に書きました。
Continue reading

自作Androidアプリ アップデート版リリースメモ

自作Androidアプリのアップデート手順をまとめる。
既に自作のアプリをplaystoreに公開している前提で記す。
Continue reading

久々にAndroid―オリジナル時計アプリー!

ここのところ研究室で開催している講習会に追われてまともにモバイルアプリを書いてなかったので、なんか作ろうとおもってました。
そんなとき、部屋のデジタル時計が壊れていることに気づきました。ついこの前時間調整をしたのにいつの間にか2000年の1月1日にタイムスリップしていました。恐らくどこかの時間保存用の集積回路が壊れたのでしょう。それもそのはず、これまで何度も布団から落っことしてましたから。そんなわけで時計アプリでも作るかーと思いたち、さくっと作ってみました。

Continue reading

俺の愛機はIS01

まあメイン端末はiPhone4Sになっちゃうけどね。IS01はかわいいよ・・・本当に。一生懸命デバッグ用端末としてメモリをフルに使って動いてくれてるところとか・・・ほんとかわいい。。。
Continue reading

© 2018 takelab.note

Theme by Anders NorenUp ↑