AndroidとかiOSとかモバイル多め。その他技術的なことも書いていきます。

pycryptoのインストールがCentOS7.3 minimalで失敗する問題の対処

環境 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 結論 gccとpython-develをyumで入れる 調査 デフォルトで入れようとすると以下ログでこける。Cコンパイラがないとのことなのでgccを入れる [root@localhost ~]# pip…

Android通知のバージョンごとのUIの違い

自分用にメモ。以下のコードを実行したときのAndroid OSバージョンごとのUIを調べた。 Intent intent = new Intent(context, MainActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); …

CircleCIでAndroid SDKとGradleをキャッシュする

CircleCIで普通にビルドしていると毎回Android SDKとGradleのダウンロードが行われてビルド時間が長くなってくる。CircleCIにはデフォルトのキャッシュ以外にも自分でキャッシュの設定ができるので、Android SDKとGradleをキャッシュすることでビルドを短く…

Python3でSlackのステータスを変える

最近Slackにステータスの機能が実装された。ミーティング中や帰宅済みなど名前の横を見ればステータスがわかるようになって非常に便利になった。 https://get.slack.help/hc/ja/articles/201864558-Slack-%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%…

【Android】jacocoでコードカバレッジを取る

最近UTを書くようになってきたのでカバレッジを取ってみました。Gradleにjacocoのプラグインがあるのでそれを使います。 build.gradleはDroidkaigi2017のbuild.gradleを参考にしました。 apply 'jacoco' apply plugin: 'com.android.application' android { …

【UI Automator 2.0】UiObject2#longClick()が効かない問題の対策

UI Automator 2.0を使ってListViewのContextMenuのテストを書きたかったのですが、UiObject2#longClick()ではどうもまくいきませんでした。 動きを見る感じロングクリックの時間が短いですね・・・ 調べるとUiDevice#swipe()でロングクリックしたい場所の座…

【Android】SQLiteのテーブルからカラムを削除する

ALTER TABLE mytable DROP COLOMN mycolomnを実行すれば完了・・・と思いきや、SQLiteはDROP COLOMNをサポートしていないらしい。 http://www.sqlite.org/faq.html#q11 そのため、以下の手順でカラムを削除した テーブルのデータを全て取得 DROP TABLEでテー…

JenkinsでSlaveを作ってビルドする

久々にデスクトップを買ったのでUbuntuを入れてビルドマシンとして設定してみる。 Slave(Ubuntu14.0.4) まずJenkinsをインストールする。 [bash] wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c ‘echo deb…

ErgoDox EZを買いました

最近流行ってることもあり買いました。 https://www.indiegogo.com/projects/ergodox-ez-an-incredible-mechanical-keyboard-computers-health#/ 以前使っていたキーボードはテンキー付きで横に広いものでした。そのためキーボードの横にあるマウスを使うた…

【Android】UI Automator 2.0でUIテストをする

UI AutomatorはGoogleが開発しているAndroid向け自動UIテストフレームワークです。 2015年3月にバージョンが2.0になりGradleに対応しました。 有名なテストフレームワークのAppiumも中ではUI Automatorを実行しています。 Espressoとの違い Googleはテストフ…

【Android】MaterialShowcaseViewライブラリでチュートリアルを実装する

MyCurationの1.2.1でチュートリアルを追加しました。というのもインストールされてもすぐアンインストールされているようで、説明が足りなかったかな・・・と思い始めたためです。 実装を自分でやってもよかったのですが、デザイン的なセンスがないのと、あ…

2週間毎日GitHubにコードを上げ続けて思ったこと

最近私にしては珍しく2週間毎日GitHubにコードを上げ続けています。 (2週間ごときで何を言ってるだと思う方もいらっしゃるとは思いますが・・・) なんとなくで始めたことですが、自分にとっては結構よかったです。 よかった点としては 定期的なアウトプット…

【Android】App Standbyがわからない

App StatndbyはAndroid 6.0になって追加された省電力の機能である。 Doze と App Standby 用に最適化する | Android Developers アプリが以下の場合でないとき、そのアプリは"Idle"状態になり、"Idle"状態が長時間続くとバックグラウンドでの通信を1日1回し…

【Android】 リモートリポジトリに繋がらない環境でJUnitを実行する

ネットワーク環境に問題がないときは、Googleのページのやり方で設定すればJUnitの環境設定は簡単だけど、Proxyなどでmaven centralに繋がらない場合の対処法 jarファイルのダウンロード リモートリポジトリに繋がらないので、jarファイルをlibsフォルダに置…

【Android】自分でキュレーションを作るフィードリーダー「MyCuration」を公開しました

MyCuration -キュレーションを作るフィードリーダー - Google Play の Android アプリ だらだらと自分用に作ってたアプリがある程度まとまったので公開しました。 Android4.0以上対応です。 背景 開発の背景としては以下のような背景がありました。 feedlyが…

【Android】PreferenceActivity/PreferenceFragmentを使った設定画面

Androidの設定画面について AndroidではAPI1から設定画面を生成してくれるPreferenceActivityが用意されている Android 3.0で各設定画面をFragmentに分けるためのPreferenceFragmentが追加された Android 4.0ではPreferenceActivityが拡張され、PreferenceFr…

【Rasberry Pi】カメラモジュールでmmal: No data received from sensorエラー

Rasberry Pi B+とカメラモジュールを買ってみたので使ってみたところエラーで買い直しになった・・・ Raspberry Pi Camera Board | Raspberry Pi Video Module Raspberry Pi Camera Board | Raspberry Pi 【通販RS】 $ raspistill -o test.jpg mmal: No data…

【Java】メインスレッドから別スレッドの停止

自分用メモ。 メインスレッドからの停止 Thread#interrupt()で行う。Thread#stop()メソッドは安全性を壊す可能性があり、非推奨 Thread#interrupt()自体はインタラプト状態を変更するだけ。 ただし、スレッドがThread#sleep(), Thread#wait(), Thread#join()…

Intel Stick PCを買いました

インテルから発売されたIntel Stick PCを買いました。 インテル® Compute Stick(CSTK-32W) | スティック型パソコン(インテル® Compute Stick) | IODATA アイ・オー・データ機器www.iodata.jp Intel Stick PCとは インテルから発売されたスティック型のPC…

DockerでAndroidの環境を構築する

Androidでテストを同時並行に実行したいなーと思っていたので作ってみた。 phicdy/Docker-android-envgithub.com Javaのインストール dockerfile/javagithub.com こちらからコードを拝借。ただ、add-aptがデフォルトではUbuntuに入っていないのでatp-getでイ…

adbで端末のモデル名を取得する

adb shell cat /system/build.prop | grep ro\.product\.model | awk -F"=" 'NR==1 {print $2}' | tr -d ' ' | awk -v RS='\r\n' '{print $1}' 詳細はこちらから adbコマンドあれこれ - shima111の日記d.hatena.ne.jp ほとんどの機種は上記記事のコマンドで…

Alfredからビルドする

最近、なるべくマウスから手を離したくないなーと思ってなんでもかんでもターミナルでコマンドなりシェルスクリプトでやろうとしている。 ビルドに関してもオプションを受け取れるようにして、シェルスクリプトで切り替えているのだけども、実行するには一回…

JenkinsのJUnitでNoClassDefFoundError

JUnitの結果のXMLファイルがなぜかNoClassDefFoundErrorで読めなかったが、解決したのでメモ。 環境 Ubuntu 12.04 Jenkins 1.581 JUnit plugin 1.5 エラーと原因 エラーは以下の通り。 Process leaked file descriptors. See http://wiki.jenkins-ci.org/dis…

mitmproxyで端末の通信内容を見る

mitmproxyとは mitmproxyはコンソール型の通信監視ツールである。 mitmproxyは、プロキシを通じて通信サーバと端末の間に入り、その通信内容を表示する。 mitmproxy - home 例えばモバイルのアプリケーションを開発している際に、端末から実際に行っている通…

【Android】API16のuiautomatorでNoSuchMethodError

uiautomatorでNoSuchMethodErrorが発生して困っていた問題が解決したのでメモ。 発生までの流れ http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html に従ってテストプロジェクトを作り、ターゲットは、API16(4.1, 4.1.1)としていた。 そして(Andr…

【Android】ActionBarから検索して別Activityで結果を表示する

検索してもなぜか、同じActivityで受け取る例ばかり出てくるので、自分のメモ用に。検索を行うActivityをDoSearchActivity、検索結果を受け取るActivityをSearchResultActivityとする。 AndroidManifest 検索を行う側(DoSearchActivity)にandroid.app.defaul…

SmartWatch 3を1ヶ月使ってみて

前月ソニーモバイルコミュニケーションズから発売されたAndroid Wear端末のSmartWatch3を買いました。 SmartWatch 3を買いました - pluea engineering blog SmartWatch 3を買いました - pluea engineering blog SmartWatch3 SWR50 | ソニーモバイルコミュニ…

SmartWatch 3を買いました

11/28にソニーからSmartWatch 3が発売されたので早速買ってきました。 SmartWatch3 SWR50 | ソニーモバイルコミュニケーションズ SmartWatch3 SWR50 | ソニーモバイルコミュニケーションズ 値段はビックカメラで26870円でした。 予約なしで買えるのかなと少…

MarkdownをPandocとブラウザを使ってPDFに変換する

GithubのREADMEなどで使われるMarkdownの形式で文章を書いたり、メモを取ることが最近多くなってきた。 ただ、Markdownの形式で書いていると、人に渡すときに結構困る。 というのもファイルを渡す人がMarkdownに慣れているとは限らないし、そもそもMarkdown…

【iOS, Objective-C】 NSUserDefaultsを使って簡単なデータを保存する

iOSではデータを保存する方法が何種類かある。 ・ファイル ・データベース(SQLite) ・Core Data ・NSUserDefaults その中で一番簡単にデータを保存できるのがNSUserDefaultsである。 NSUserDefaultsではキーと値のセットで値が保存できる。 そのため、複雑な…

【Android】HanlderとMessageを使ってマルチスレッドの処理結果を受け取る

Androidアプリ内で重たい処理を行う場合、処理をメインスレッドで行うと処理が終わるまで画面が止まってしまう。 そのため、スレッドを分けて処理を行わせる。 その際に、処理結果を別スレッドから受け取るときの一つの方法としてHandlerとMessageを使う方法…

【Android】 CSVファイルを読み込んでパースする

Androidで初期データなどCSVファイルを処理したい場合がある。 その時は、CSVファイルをassetsと呼ばれるフォルダに置き、それを読み込んでパースを行う。 assetsフォルダはプロジェクトの一番上に作成する。 assetsフォルダへのアクセスはAssetManagerを通…

【Android】Linuxコマンドの実行

AndroidアプリからLinuxコマンドを実行するにはRuntimeクラスを利用する。 package xxxxxxxxxxxx; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import android.util.Log; p…

【Android】 端末にインストールされているパッケージ一覧をadbコマンドで表示

Android端末に入っているパッケージの一覧をadbコマンドで表示できる。 adb shell pm list package 結果は以下のようになる。 package:com.android.defcontainer package:com.htc.customappinstaller package:com.htc.android.qxdm2sd package:com.htc.sense…

【Android】 クリップボードへのコピー

Androidでクリップボードにテキストを追加してコピーできるようにするにはClipboardManagerを使う。ClipboardManagerはAPI 11(~3.0)までで使われていたものとAPI11から推奨となったもので2つある。 // API 10(2.3.*)まで import android.text.ClipboardManag…

ブログ開始

自分のメモ用とかのためにブログ始めます。