u-ryo's blog

various information for coding...

Category: Android

Recent Bookmarks

| Comments

最近の、といってももう数ヵ月も前のものですが、 bookmarkしかねてbrowserのtabを開きっぱなしなのを閉じる前に、 メモしておきます。

Vuzix M100

Kotlin KOTOHAJIME

| Comments

Kotlin事始め

最初、title間違えました。 タイプミスです。 Ergodox EZ(キー配列をカスタマイズ出来るキーボード)が必要かもしれません...

Android開発を、というかIoTに乗ってSmart Glass(Vuzix M100)の アプリ開発を任命付けれられています。 それはそれでありがたいのですが、 今更ながらAndroid開発を学んでいます。 素のAndroid Javaを使う、というのはあまりにもイケてなさそうなので、 いちいちon何々なんてやってられませんよ、ということで、 Kotlinを使ってイマドキのReactive Programmingを、 と思っています。 Kotlinやってると、Groovyでもいいんじゃないの? と思ってしまうのですが、 殊Androidについては、同梱libが大きくなってしまうなど、 やはり後発の強みもあってKotlinのようです。 ただ、Android開発者がJava loveだそうで、 今後のJava8の取り込みようによっては、 Javaだけでも行けるのでは? という気も少しします。 しかしそれは普及率を考えるとまだまだ遠いので、 今はやはりKotlinかと。

しっかし、Android開発って結構めんどいんですね。 IDEがないと開発できないって、 古いtypeの人間としてはそこから苦痛なんですが...

最初は、森洋之,基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応 プロが本気で教えるアプリ作りの基本「技」 (ヤフー黒帯シリーズ),SBクリエイティブ,2016.7 を間違い直しながら写経することで Android開発を「Hello World」から卒業してから、 長澤太郎,Kotlinスタートブック,リックテレコム,2016.7 を写経しています。 そこでハマったことを。

  1. 実行しても、エラーメッセージを吐かずにemulatorが一瞬立ち上がった後終了 → Run対象をMainActivityTestにしていたから
  2. Dagger2でinjectionするようにしたらprofileImageUrlを取れなくなった → .dagger.ClientModule#provideRetrofit.addConverterFactory(GsonConverterFactory.create(gson))gsonを抜かしてしまっていた
  3. Dagger2でinjectionしたtestでCastがこけてうまく行かない → build.gradletestInstrumentationRunner 'sample.qiitaclient.MockTestRunner'に変更しないとならないのと、RunEdit ConfigurationsAndroid TestsMainActivityTestSpecific instrumentation runner (optional):〜.qiitaclient.MockTestRunner に変更しないとならない

IDEに慣れてないので、fileばっかり見比べてました。downloadしたお手本sampleではDagger2 Testがうまく行くのに、何で自分のはうまく行かないんだろう、ってずっと悩んでました。IDEでのproject settingに問題があったとは。 stackoverflowのTest running failed: Unable to find instrumentation info for: ComponentInfo{} — error trying to test in IntelliJ with Gradleで見付けました。 こんなところに設定があるなんて、知りませんよー。

Crosswalk

| Comments

Crosswalk という、WebViewを独自に持つことでAndroid間の動作性を統一するlibraryを使ってみました。最近のAPI levelに対応するだけなら、敢えてこんなの使わなくてもいいのかも。

わけあって、Crosswalk sample applicationの一つをcompileしてみました。

how to installは、official pageのまま。

ANDROID_HOMEは、Sdk directoryを指す模様。

それから、android commandを裏で動かすので、そこへのPATHが必要でした。

1
2
$ ANDROID_HOME=/home/u-ryo/Android/Sdk PATH=$PATH:/home/u-ryo/Android/SDK/tools crosswalk-app check android
$ ANDROID_HOME=/home/u-ryo/Android/Sdk PATH=$PATH:/home/u-ryo/Android/SDK/tools crosswalk-pkg -p android client

android commandはGUIを要求するので、Cloud9のconsoleでは動かせませんでした。

Android Video Calling with CrossWalk and PeerJS 見てやってみたんですが、ionic2からはionic browser listというのがなくなって、ionic plugin add cordova-plugin-crosswalk-webviewになったことと、その後ionic platform add androidすると、

1
2
3
4
5
6
Installing "cordova-plugin-crosswalk-webview" for android


        After much discussion and analysis of the market, we have decided to discontinue support for Android 4.0 (ICS) in Crosswalk starting with version 20.

        So the minSdkVersion of Cordova project is configured to 16 by default.

と言われてしまいました...

動かしたかったtargetは、Android 4.0.4なので、Crosswalkダメですね。 実際、「CPU Mismatch」と言われて、x86のものでもarmのでも動きませんでした。 あうー。

Zaim

| Comments

最近、家計簿アプリ「Zaim」がマイブームです。

銀行口座連携くらいでは驚かなかったんですけど、 OCRによる「レシート読み取り」がここまで出来るとは、 思っていませんでした。 セブンイレブン、ローソン等のコンビニ系レシートなら、 ほぼ一発で完璧に読み取ってくれます。 日付、内訳は勿論、店名も「セブンイレブン○○店」まで。 電話番号を読み取って、 それをインターネットで検索してるんですね。 なるほど。

当初はMoney Forwardを使っていたんですが、 レシートの内訳も管理したくて、 より利用者の多いZaimに乗り換えました。

zaimの銀行連携について、 セキュリティの不安を提起する尤もな向きもあるようです。 そうですね、確かに。 Zaim側が生パスワード、保持してないと出来ない仕組ですから、 彼ら、持っちゃってますよね。 でも、便利なのでつい... 本当は、「自分でCSV落として食わせてね」だったと思いますけど、 それじゃぁここまで広がらなかったのでしょう。

それより、OCRがここまで進化していたとは。 おかげで、溜まりに溜まっていたレシートを、 うん百枚単位で片付けられました。 でも、こういうのってスマホを持ってないと気付かないものですね。