takaiwa.net

Android、Java、Web系、Linux、マラソン等の備忘録

2015/12/29

Google Play MusicとEDMと音の設定

0 件のコメント
Google Play Musicを使って1ヶ月が経ち月額課金がスタートしました。1ヶ月使ってみた感想を書こうと思ってましたが、そう言えば既に似たようことを書いてました。

なので、イコライザー等の話を少々...

ブロステップが好き

EDMが好きと言っても、電子音楽全般が好きなのではなくて、ブロステップが好きなんだと気づいたニワカです。ブロステップはダブステップの一種なのですが、要はskrillexやKnife Partyの楽曲が好きだということがわかりました。最近はこちら(@Music_News_Net)のアカウントやYoutubeのおすすめ、Google Play Musicのステーションから良さそうな曲を探しています。



2015/12/19

Android Studioでテスト用のファイルを読み込む

0 件のコメント

やりたいこと

  • Android Instrumentation Testsでローカルのjsonファイルからテストデータを読み込んでテストに利用
  • src/main/側のディレクトリは使いたくない

2015/12/16

JUnitで型の異なるListをテストする時に便利なクラスを作ってみた

0 件のコメント


テストで2つのリストを比較する場合、共通した以下の検証があるかと思います。
  • サイズのチェック
  • 中身のチェック
  • ループ何回目でAssertionErrorが発生したか
型が異なる場合は、中身のチェックの共通化は一筋縄にいかないので、そこだけ呼び出し元で中身を検証するようなクラスを作りました。


使い方例はListVerifierTest.javaの方に記述してます。abstractメソッドで中身のチェックを行います。これで呼び出し元のコードがスッキリできるかと。

ListVerifierTest.javaの29行目を以下のように書き換えてテストを失敗させると

List<Integer> bar = Arrays.asList(3, 8);

以下のようなエラーが出力されます。

java.lang.AssertionError: AssertionError at index: 1
Expected: 8
Actual: Foo{result=7}

参考


2015/12/12

Androidスマートウォッチにインストールされているアプリのバージョンの確認

0 件のコメント
Runkeeperのサポートに不具合(NullpointerException)直してとTwitterで言ったら、次のバージョンで修正したよと言われたので試してみたらアプリが落ちたので、直ってねーじゃねーかと言うためにスマートウォッチにインストールされてるRunkeeperのバージョンを調べました。

※ちなみに、上記リンクでRunkeeper Support氏の言ってるv5.12はスマホアプリ側のバージョンです。

スマホの場合、アプリのバージョン(Version Name)は、アプリ自体にある設定画面に記載されているか、下図のようにOSの設定に記載されています。

スマートウォッチ(ro.build.version.release=5.1.1)では、このようなアプリ一覧がありません(たぶん)
下記のコマンドの手順でバージョンを取得します。大まかに言うとapkファイルのAndroidManifest.xmlを調べます。

2015/12/06

JazzとEDMが好き

0 件のコメント

大して音楽に興味がない人生だった

小中学校の音楽の授業が苦痛で、中学からは流行ってるからとJ-popを聞き、社会人になると電車や車、徒歩の移動で何もないよりは音楽を聞いた方がいいからとJ-popを中心に聞いてましたが、好きで聞いてるわけではなかったです。人に合わせるように聞いてた感じです。

2015/11/15

[Fixed]Runkeeper is terminated abnormally on a stand-alone Sony Smart Watch 3.

0 件のコメント
Dear Android Wear developer at Runkeeper.


I always start the Runkeeper, leaving the smartphone in my hourse, run wearing only Sony Smart Watch 3.
When returning home after running, I synchronize the smartphone and Sony Smart Watch 3.

Previously it was working.

When the version of this screen,



The app was not terminated abnormally.
Even if I ran about 20 km, the app did not crash on the watch.



Now

Recently become such the screen.



In this version, when I run about 2-3 km or 20-30 minutes, Runkeeper is terminated abnormally every time.


ADB Logcat

I tried to connect the PC and the watch with USB. It had been displayed as follows on the ADB logcat:

11-15 14:16:51.122: D/AndroidRuntime(7917): Shutting down VM
11-15 14:16:51.122: D/AndroidRuntime(7917): --------- beginning of crash
11-15 14:16:51.168: E/AndroidRuntime(7917): FATAL EXCEPTION: main
11-15 14:16:51.168: E/AndroidRuntime(7917): Process: com.fitnesskeeper.runkeeper.pro, PID: 7917
11-15 14:16:51.168: E/AndroidRuntime(7917): java.lang.NullPointerException: Attempt to invoke virtual method 'double com.fitnesskeeper.runkeeper.core.model.BaseTripPoint.getTimeIntervalAtPoint()' on a null object reference
11-15 14:16:51.168: E/AndroidRuntime(7917):  at com.fitnesskeeper.runkeeper.core.filter.NegativeTimeFilter.apply(NegativeTimeFilter.java:17)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at com.fitnesskeeper.runkeeper.pro.services.RunKeeperTrackingService.onLocationChanged(RunKeeperTrackingService.java:192)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at com.google.android.gms.internal.bg$a.handleMessage(Unknown Source)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at android.os.Handler.dispatchMessage(Handler.java:102)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at android.os.Looper.loop(Looper.java:135)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at android.app.ActivityThread.main(ActivityThread.java:5254)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at java.lang.reflect.Method.invoke(Native Method)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at java.lang.reflect.Method.invoke(Method.java:372)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
11-15 14:16:51.168: E/AndroidRuntime(7917):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

NullPointerException!!!

Please fix it

I'm going to run the first full marathon next year. This is my only hope. Pleaseeeeee!



※この記事はTwitterでの問い合わせ用に書きました
2015/11/17

2015/12/28

2015/10/09

Pattern Calendar 1.2.3をリリースしました

0 件のコメント

このアプリは?

歯医者やバイトのシフトなど不定期な予定を簡単に端末のカレンダーへ投稿するAndroidアプリです。予定は予め作成しておきます。
予定を投稿するところだけGIFにしてみました。

2015/09/30

Google Playアプリ内課金実装でつまづいたメモ

0 件のコメント

恐れ多くもへっぽこアプリへ課金で広告解除等の実装しようと思っております。既に4月頃リリースしたアプリにはうまく実装できていたのですが、今度バージョンアップのリリースしようと思っているアプリへは一筋縄にいかなかったので、つまづいた点などをメモしておきたいと思います。初めて実装する場合は、クレジットカードの番号とか銀行の口座番号とか入力が必要だったと思いますがその辺りの手順は割愛します。

2015/09/22

Applicationを参照するActivity起動のテストをしたい。あるいは、Activityの結合テスト

0 件のコメント
Applicationとはandroid.app.Applicationのことで、これを継承したクラスをマニフェストに定義しておくと、Activity内でgetApplication()で取得できます。


Activity1でApplicationを継承したクラス内のフィールドに値をセットして、Activity2でその値を参照するといったことができます。Applicationはアプリが起動している間は保持されるので、いろいろ使えるわけですが、その値を利用して、Activity起動時に分岐するような処理を入れている場合のテストを考えます。

2015/09/21

【解決しました】Sony Smart Watch 3が使い始められない!!

11 件のコメント
スマートウォッチのアプリを作ってみようとAmazonでSony Smart Watch 3を購入しました。Sony Smart Watch 3を選んだ理由は、GPSが付いておりRunkeeperというランニングを記録するアプリを単体でスマートウォッチ上で動かせるという記事を見たからです。

結論から言うとまだ使い始められてませんし、解決策もわかりません。とりあえず試してみた事などをダラダラ書いておきます。進展があり次第追記します。
2015/09/24:使えるようになりました。下の方に追記しています。

まず、スマートウォッチにUSBのコネクタを繋げて30分充電。次にセットアップ作業に取りかかりました。Android 4.3以上のスマートフォン/タブレットが必要とのことで、2012年版Nexus 7にAndroid 5.1.1が入ってるので、これにGoogle PlayからAndroid Wearをインストール。Android Wearを起動してスマートウォッチとBluetoothでペアリングすると、ダウンロード処理が開始されました。


時間かかりそうだったので、しばらくしてから見てみるとエラーダイアログが表示されてしまいました。エラーダイアログは以下の3つ。
  • 問題が発生したため、Google Play開発者サービスを終了します。
  • 問題が発生したため、Android Wearを終了します。
  • 問題が発生したため、プロセス「com.google.process.gapps」を終了します。

2015/09/12

windowsからGAE/GoでHello world

0 件のコメント

環境

  • OS : Win 7 64bit
  • Go : go1.5.1.windows-amd64.msi
  • Google App Engine SDK : go_appengine_sdk_windows_amd64-1.9.26.zip
  • Python : python-2.7.4

2015/09/10

不定期な予定を簡単に投稿するアプリ Pattern Calendar 1.1をリリースしました

0 件のコメント
このアプリは3年前くらいに僕が初めてGoogle Playへリリースしたアプリなのですが、当時作り方がまだ未熟だったので修正しないで作り直しました。


2015/08/27

FragmentStatePagerAdapterにセットしたFragmentの参照

0 件のコメント
ViewPagerにセットするアダプターをFragmentStatePagerAdapterを継承したクラスで実装する場合、そのクラスにセットしたFragmentを参照するには、StackOverflowで以下のように内部にリストなりマップなりで持つみたいなコードを見かけました。

※このコードは動作を確認してません。だいたいこんなイメージということで
外部からこのAdapter経由でSubFragmentを参照したい場合、getItemを呼ぶなり別にメソッドを設けてfragmentsを参照するなりという方法が紹介されてました。リンクは忘れました。
でも、これだと、端末回転時やActivityが後ろに回って破棄されるような場合に、fragmentsが空っぽになってしまい参照できません。(維持する方法もあるんでしょうけど....)なんで空っぽかと言うと、端末が回転した時はgetItem()メソッドが呼ばれません。

と、少し悩んでいたのですが、別にそんなことをしなくてもFragmentStatePagerAdapterの以下のメソッドを呼べば参照することができます。

public Object instantiateItem(ViewGroup container, int position)

containerにはViewPagerを入れておけばいいと思います。
まあ、よくドキュメントを読めということですね....


関連:ViewPager + FragmentStatePagerAdapter画面回転時等のメモ

2015/07/05

Emacsキーバインドとアプリケーションショートカットキーを併用

0 件のコメント
プログラミングをしながらの上下左右キーはキーボードのホームポジションを離れることもさることなら、手首を折り曲げて操作するので、最近つらいです。

そういう思いで検索してたら上記のリンクの記事を見つけました。これなら手首を酷使する事もないだろうと。

2016/03/09:記事を修正しました。
Windows10アップグレード後の挙動の記載と紛らわしい不要な情報を削除などしました。

2015/05/22

Android画面回転後にActionBarが消える問題

0 件のコメント

確認した環境

  • 端末のOS
    • Android 4.0.4
    • Android 5.1.1
  • targetSdkVersion:22
  • Android Support Library:22.1.1
  • Activity:AppCompatActivity
  • Fragment:android.support.v4.app.Fragment

サンプル

ActionBarに今月を表示する簡単なものです。

この画面で端末を倒すと、

2015/05/17

ATOK Passport [プレミアム]でクラウド辞典サービスをちょっと使ってみた

0 件のコメント


今までデスクトップで英和辞典と言えば、マイクロソフトのBookShelfかWebサービスのWeblio辞書を使ってて、BookShelfは速いが情報が古いし少ない。WeblioはWebサービスなのでページ表示が遅かったりもう一枚ブラウザのウィンドウを用意したりとしっくりきてませんでした。

2015/05/15

SO-01EのGPSを改善

0 件のコメント

端末購入とSIM

手頃な値段のSO-01E(中古)がAmazonで売られてたので購入。データ通信はOCNモバイルONEのSIMを指して運用を考えました。Runkeeperなどに使えたらと。商品が届きアームポーチ入れてみるとちょうど入ってこれはいい!と思ってたのですが、GPSの追跡が全然ダメでした。

2015/05/10

Android StudioでサクサクTDDできない!

0 件のコメント

まだ移行してなかった

2014年12月にAndroid Studio 1.0がリリースされて、年末にAndroid Studioへ移行しようと思ってましたが、EclipseのようにJUnitでサクサクテストするやり方がわからなかったので引き続きEclipseを使ってました。サクサクテストというのは、Run as > JUnit Test > Android JUnit Test Launcherで起動するJUnitテストです。

2015/05/09

デスクトップでAndroid端末のCPU使用率を視覚化するJavaFXのjarファイルを公開しました

0 件のコメント
Android SDKのadb shell topコマンドの結果をグラフ化するものです。



e(fx)clipseでJavaFXのjarファイル作成

0 件のコメント
JavaFXのjarファイル作成で、以前はEclipseのメニューの File > Export > Runnable JAR fileで出力したjarファイルでWindowsでもLinux上でも実行できてた気がするんですが、

最近Windows上のEclipseで作成したJavaFXのjarファイルをLinux Beanで実行すると以下のようなエラーで実行できませんでした。

2015/05/06

DroidKaigi (2015/4/25) 資料とかメモ

0 件のコメント
個人的なメモや感想です。まだ全部に目を通しきれてないです...


公式サイト:http://droidkaigi.github.io/
※マテリアルデザインなサイトですね。

twitter:https://twitter.com/DroidKaigi
facebook:https://www.facebook.com/DroidKaigi
togetter:http://togetter.com/li/812559
カンファレンスアプリ:https://play.google.com/store/apps/details?id=com.droidkaigi.conference2015s

2015/05/02

note linkerバージョン1.2をリリースしました

0 件のコメント
今回の対応内容は以下の通りです。

  • ノートブックおよびタグの絞り込み機能
  • 目次ビューワーの高速化
  • 目次作成処理の高速化
  • 細かいバグの修正
特に目次ビューワーはバージョン1.1までボロボロで、画像などがあるとかなり表示が遅くなってたかと思います。またはアプリが落ちてたかと...

画像表示部分を大幅に見直したため表示スピードがかなり速くなってます。そのため画像を含む目次の閲覧がスムーズに行えるかと思います。


また、目次作成のスピードも改善しました。
今回いくつか不具合も改善してますが、バージョン1.2で発生した不具合やご不明な点がありましたらこの記事コメント欄やメールTwitterにてご連絡ください。

ダウンロードはこちらから

2015/04/19

画面の軽量化、ウィジェット、広告OFFなど対応したToDo Picker 1.2.1をリリースしました

0 件のコメント

概要

以下について対応したToDo Picker バージョン1.2.1をリリースしました。
  1. 画面の軽量化
  2. ホーム画面にノートのショートカットを作成できるウィジェット機能を実装
  3. 広告OFFオプションの追加(設定画面よりアプリ内課金が必要)
  4. その他バグ修正

2015/02/28

Androidのマテリアルデザインのサンプルを試したメモ1

0 件のコメント

こちらの記事を参考に試してみました。

導入に関してはこちらを参考に

環境

  • targetSdkVersion:21
  • 実行環境:androVM_vbox86p_4.1.1_r6.1-20130222-gapps-houndini-flash_1
  • IDE:Eclipse 4.3.2
  • AppCompat v7:リビジョン番号不明 → 21.0.3

2015/02/13

スマホスタンドの留め具を締める

0 件のコメント
どうでもいい話なのですが、もしかしたら誰かの役に立つかもしれないし、知恵の輪を攻略したような気分なので書いておきます。

2015/01/19

androidのショートカットとウィジェットまわりのメモ

0 件のコメント

ショートカット作成

アプリ上の操作でショートカットを作成

Androidのサンプルソースcom.example.android.apis.app.LauncherShortcutsのsetupShortcutメソッドが参考になると思います。
起動するActivitiyは
shortcutIntent.setClassName(this, this.getClass().getName());
このコードは自分自身を起動するようにしてます。
何かキーと一緒に作成する場合は

shortcutIntent.putExtra(EXTRA_KEY, "ApiDemos Provided This Shortcut");
の所に設定すればいいと思います。これを起動したActivityのonCreate()で
String extra = intent.getStringExtra(EXTRA_KEY);
のように取得できます。

2015/01/12

Mockitoを使ってActivityの分岐のテスト

0 件のコメント

テスト内容

Webサービス等のAPIを使って、ログイン未ならログイン画面をログイン済みならホーム画面を表示するようなAndroidアプリを考えます。このアプリのユニットテストを行うにあたり、ログイン状態の取得やWebサービスへアクセスするなどの実際の処理は行わないで、仮の実装でログイン未を返す場合とログイン済みを返す場合のテストケースを作成して、画面が遷移するかを確認できるようにしたいと思います。

テストはActivityUnitTestCaseで行います。この時、画面遷移の分岐をonCreateでやるか、onStartでやるかで変ってくるので、その2つについてサンプルを作成しました。