メモ2ブログ

メモtoウェブログ。旧ブログはこちら。 http://sakebook.blogspot.jp/

android

スマホのキャプチャを扱いやすくするCLI「pbssc」を作った

久しぶりの更新です。 コードレビューや動作確認などでスマホ画面のキャプチャを貼り付けたくなることがあります。 そういう時に、シュッとキャプチャをとってClipboardに貼り付けられるツールを作りました。 github.com インストールはHomebrew経由で行えま…

Flutter製AndroidアプリできちんとSplashを設定する

Pluginのマイグレーション作業をしてたら気になって調べたのでまとめます。 情報はFlutter v1.17.5のものです。 Splash Androidのときにまとめましたが、Flutterでも同じです。 sakebook.hatenablog.com Flutterの場合、公式にドキュメントが用意されており…

Gradleタスクでadbを実行してアプリを起動する

ちょいちょいターミナルからビルドしてアプリを立ち上げたりとかしたくなるときがあり、都度一発でできてなくて面倒なところがありました。 そうすればいいのかーって思ったのでメモと、ちょっと汎用的にしたものを共有。 こちら見かけたやつです app/build.…

続続・Androidアプリ開発を学生に教えた話

今までと同じく、TRUNKから講師の依頼があったので講師をしてきました。 過去の話はこちらです sakebook.hatenablog.com sakebook.hatenablog.com 進め方 週一で、一回あたり2~3時間の全8回のコースで、全体を通すとおよそ2ヶ月のコースとなり、今までで最長…

JavaからKotlinに変換してSupport LibraryとMockitoとRobolectricでハマった話とその解決方法

先日勤務先で開発合宿に行きました。プロダクトのKotlin化が途中だったので、仕上げてきました。 スライドでは省略した、ハマった点の詳細を共有します。 確認できるサンプルを用意してあります。サンプルの環境は次の通りです。 Android Studio: 2.3.3 Supp…

BITRISEでPrivateなDockerイメージを利用してビルドする(Push時のみ)

自分のDockerイメージを作成したので、CIサービスでも利用して、環境を持ち運べるようにしたいなと思いました。 sakebook.hatenablog.com BITRISEがモバイルアプリのCIサービスとして良いという話を見かけたので、BITRISE上で自分のDockerイメージを利用して…

AlpineベースのAndroidビルド環境のDockerイメージを作成した

なるべく小さく、sdkmanagerにも対応させた、CI用のDockerイメージを作成しました。 Emulatorなどを利用したAndroid Testにはまだ未対応ですが、Unit Testは実行できます。 PublicなDockerHubに上げたかったのですが、ライセンス違反という話があるのでPriva…

RecyclerViewで複数のDividerを実装するライブラリ「MultiLineDivider」を公開しました

以前の記事で、RecyclerViewで複数のDivider実装する方法をまとめたのですが、これを使うには ItemDecoration を実装したクラスを作る必要がありました。 そのあたりをよしなにして導入できるライブラリを公開しました。 github.com 使い方 DividerItemDecor…

RecyclerViewで複数のDividerを実装する

RecyclerViewでは、Divider(区切り)は自分で実装しなければなりません。 標準の線を引く方法はよく見つかるのですが、複数の線を引いたり、逆に線を引かなかったりするというのがあまり見つからないのでまとめました。 Support Libraryに追加されたDividerIt…

DroidKaigi 2017で登壇してChrome Custom Tabsについて発表しました。

スライドとサンプルアプリと、そのコードです。 speakerdeck.com play.google.com github.com スピーカーから見たDroidKaigiと、それにまつわる個人的なメモです。 スピーカーから見たDroidKaigi DroidKaigiスケジュール 日程 出来事 行動 2016.10.01 CFP募…

Bottom Navigationをガイドラインぽく実装する

Bottom Navigationはサポートライブラリが提供されています。 しかし、単純に使うだけではガイドラインぽくなりません。 ガイドラインぽく実装してみました。 ガイドラインぽさ Navigation Barを含んでBottom Navigationにする 下にスクロールすると隠れる …

Link Stackをメジャーアップデートしました

リンクをちょっとだけ後で読むアプリ、Link Stackをメジャーアップデートしました。 play.google.com このアプリを作った経緯はこちらです。 sakebook.hatenablog.com メジャーアップデートの機能紹介と、なぜその機能を付けたかについて書きます。 2つの新…

ニッチなアプリ「Screen Scanner」を作った

スマホに表示されているバーコードを読み取るアプリを作りました。画像を渡して読み取ることもできます。カメラで読み取る機能は現状つけていません。 play.google.com 動機(1年半前) 今から1年半ほど前の話です。 スマホのサイト上に表示されたQRコードを読…

GenymotionにGooglePlayを入れるのが簡単になってた

以前もGenymotionでGooglePlayを動かせるようにする記事を書いたのですが、それよりも簡単な方法が、公式のQAで紹介されていました。 sakebook.hatenablog.com 次のサイトから、zipファイルを落として起動しているGenymotionのEmulatorに入れるだけです。フ…

Shinjuku.aar第1回に参加した

Shinjuku.aarとは Shinjuku.aarは、新宿界隈のAndroid技術者たちが 技術ネタで気軽にワイガヤできる コミュニティです。 発表ごとにディスカッションタイムを設けており、発表中の質問やツッコミも随時ウェルカム! さらに、ディスカッションが盛り上がるよ…

MashwmallowでqueryIntentActivitiesの挙動が変わってた

Chrome Custom Tabsを使っていて、公式のサンプルにあるCustomTabsHelperを流用していたのですが、Mashwmallowでうまく動かないことがありました。 CustomTabsHelper内で、PackageManager#queryIntentActivitiesを使っているのですが、その挙動がMashwmallow…

スプラッシュにはActivityはいらない

スプラッシュ iOSだとLaunchScreenとか言われる、起動時に出てくる画面です。 Androidだと、ユーザに無駄な待ち時間を与えるということで不要だと言われてたのですが、最近はGoogle製のアプリが、軒並みスプラッシュを入れてきています。 Bottom Navigation…

GenymotionにGooglePlayを入れようとするとAn error occured while deploying the fileが発生する

Genymotionについては以前触れたのでこちらで。 sakebook.hatenablog.com An error occured while deploying the file. GooglePlayを入れるための準備をしていると次のエラーが発生しました。 Genymotionのバージョンは2.6.0でした。 エミュレータを作り直し…

Androidエンジニアが企画展に作品を出した話

2016/4/30~2016/5/15、2週間と1日、「CreativeAdventure」という、企画展がARTnSHELTERで開催されました。 そこで「Indoor Street」という作品を展示しました。企画展に作品を出すという経験での学びや感想をつらつらと書きます。 きっかけ 大学時代にU-moa…

AndroidでKuromojiを使う

Kuromoji KuromojiはJavaで書かれているオープンソースの日本語形態素解析エンジンです。 Androidでオフラインでも即座に形態素解析ができるように組み込んでみました。 LuceneのJapaneseTokenizerではなく、AtilikaのKuromojiを組み込みました。 はじめに言…

忘れてしまったAndroidの署名情報は見つかるかもしれない

Androidのアプリの署名に使う情報を忘れてしまうことが、稀にあります。 やってはいけないことですが、稀にあります。 別PCで作業してていつもMaster Passwordに任せっきりだったりとか、久しぶりに更新をかけようとしたアプリで起きたりします。 同じ署名の…

jsoupのデフォルトのUser-Agentはなんなのか。

jsoup JavaでHTMLをいい感じにParseできる便利なライブラリです。 WebページにアクセスしてHTMLを取得し、それを加工することでWebページ内のコンテンツを簡単に取得することができます。 スクレイピング先が、User-Agent(UA)によって表示を変えている場合、…

Instagramのユーザページと詳細ページへ暗黙的Intentで遷移する。

普段アプリで表示しているであろうページに、ブラウザで表示する場合があります。 ブラウザアプリを作っていて、何もしないままだとWebページが表示してしまうので、普段表示している方であるアプリへ遷移させます。 Instagram ユーザページと詳細ページを表…

続・Androidアプリ開発を学生に教えた話

再び 以前と同じく、TrunkでAndroid開発のトレーニングを請け負いました。 sakebook.hatenablog.com 今回は、1ヶ月でカメラアプリを作成してストアへ申請するというものでした。 1ヶ月と言っても、1回3時間の講義を4回行うという形式です。 前回の反省を踏ま…

都道府県の情報を簡単に扱うためのライブラリをKotlinで作った。

都道府県コードと都道府県名を変換するようなことをJavaで書いたのが非常に辛かった。 もう同じことをしないでいいように、使いまわせる形にした。 Javaでリスト操作ができなかったのでKotlinでさっと操作したいと思ったのがモチベーションです。 実際Kotlin…

Android Support Library 23.2で追加されたChrome Custom TabsのBottom barを試してみた。

Chrome Custom Tabs Webページを自分のアプリ内ブラウザで開くかのごとく、Chromeを使って開くことができる機能です。 利用するにはChromeのバージョンが45以上であることが必要です。 Chrome Custom Tabs自体は23.1.0から提供されていた機能ですが、新たにB…

potatotips第26回に参加した

potatotipsとは potatotipsはiOS/Android開発のTipsを出し合う勉強会です。 参加者はTips持参必須です! なお、ポテトチップスは必要に応じて各自で持参しなければなりません。 今回は株式会社Supershipで行われました。オフィスに行ってみたかったので、久…

Realmのマイグレーションで Configurations cannot be different if used to open the same file. が発生する

スキーマに変更があったので、マイグレーションを行ったら上記のエラーが発生した。 先に言っておくとマイグレーション自体は本質的な問題ではなかった。Realmのインスタンスの生成方法に問題があった。 Realmのバージョンは 0.87.4を使用。 マイグレーショ…

Parallaxでリッチなチュートリアルを作成する

時々見かける、手が込んでる感じがするチュートリアルを作成するためのチュートリアルです。 6つのパターンを紹介します。GitHubに上がっているコードを元に説明します。 github.com 背景をグラデーションさせる インジケーターを表示する インジケーターを…

動きに合わせて色をグラデーションさせる

2色間の色の変化を、時間指定ではなく値の変化で動的に行います。 ArgbEvaluator アニメーションで使いますが、単独でも利用できます。 どこかでインスタンスを生成します。 private ArgbEvaluator mArgbEvaluator = new ArgbEvaluator(); 次のメソッドを呼…