Androidのユーザー補助サービス(Accessibility Service)は楽しい

先日クックパッドで開催された potatotips #42 でAndroid のセキュリティよくなってきた話という発表をしました。 Androidのセキュリティに関する改善の歴史と、ユーザー補助サービスによるアプリ権限奪取のデモという内容でしたが、短い時間での発表だった…

ヤドカリをハッキングするゲームが面白い

ここ最近、職場で勧められたヤドカリをハッキングできるゲームをやっている。 www.jp.playstation.com 主人公の名前は変更できなかったので、カニカマではない。 ロボヤドカリをハッキングできるという理由だけでろくに下調べもなく買ってしまったのだが、ハ…

なぜプレイヤーキャラクターの名前がカニカマなのか

プレイヤーキャラクターの名前を自由入力させるゲームを遊ぶときはキャラクターの名前をカニカマにしています。 なぜ本名やハンドルネームではないのか? また、なぜカニではないのか? という点について嫁から突っ込まれたので、現時点での僕の考えを記録し…

TextAppearance のプレビュー画面を作る

AndroidのリソースXMLを読み書きできない人に TextAppearance の定義内容を共有するためには、わかりやすく定義内容を一覧できる仕組みが必要です。 できれば、以下のように実際のアプリ内の表示とあわせて見られるのが一番良さそうです。 このプレビュー画…

スプレッドシートでよく使う関数メモ

意外とスプレッドシートを良く使うので、最近使って便利だった関数をメモしておきます。 JOIN 配列要素を結合するのに使う。 char(10) が改行文字なので、取ってきたデータを1セルの中で表示したい時は JOIN(char(10), 配列) みたいな感じにすることが多い。…

Genymotion VD for AWS を試したメモ

Genymotion VD for AWS を少し触ったのでメモとして残しておきます。 Genymotion とは Genymotionとは、Androidの非公式エミュレータの一種です。 その昔Androidの公式エミュレータが遅かった時代に流行しましたが、いまはx86仮想化を利用した高速な公式エミ…

RecyclerViewのパフォーマンスチューニング

パフォーマンスチューニングと書くと大げさかもしれない。 最近何度か RecyclerViewのパフォーマンス面の修正をする機会があったので、最低限これくらい見ておくと良さそう、という項目についてまとめました。 各アイテムのstable ID Adapterの各アイテムが…

2016年発売Android端末のdp解像度まとめ

はじめに 一昨年、昨年とその年に発売された端末のdp解像度について(わかる範囲で)まとめてQiitaに投稿していたのですが、今年はブログに書きます。 理由としては、Androidにディスプレイサイズの変更機能やマルチウィンドウのサポートが追加された結果、And…

プロジェクタを買いました。

エプソンのホームプロジェクタ、EH-TW5350を買いました。 といってもプロジェクタを買うのは初めてではなく二代目。 これまでは2008年に購入したソニーのVPL-AW15という機種を使っていました。 さすがに最新のプロジェクタと比べると微妙なスペックですが、…

Android Developers リンク集 + DPI早見表

はてなブログだと表がはみ出して見づらかったので、いくつか追記した上でQiitaに書きなおしました 🙇 qiita.com

今年発売されたAndroid端末のdp解像度をまとめた記事を書きました。

「最近は320dpの端末も少なくなっているので…」という話を自分でしながら本当に少なくなっているのかイマイチ確証がなかったので今年も調べて書きました。 ソフトバンクの開発者向けサイトに情報が全然なかったり一部の端末のdpiを調べようとググっても「dpi…

Androidソースコードレビューで指摘する事が多い項目まとめ2

去年Androidソースコードレビューで指摘する事が多い項目まとめという記事を書いた時はアプリ全体を一度に見るような機会が多かったため、内容も大きめのものばかり書いていましたが、最近はプルリクエスト単位でレビューする機会が増えたので細かい項目につ…

AndroidTVでDeployGateを使う

2015/12/18 14:23 追記: DeployGateからダウンロードできるAPKがLEANBACK_LAUNCHERに対応したので以下の内容は不要になりました! AndroidTVでDeployGate使うためのアプリ作りました。 nein37/deploygate-android-tv · GitHub AndroidTVでDeployGateアプリ…

最近Android TVアプリの開発で困ったこと

雑にメモ Android TVを正確に判定するのが難しい Android DevelopersのAndroid TV実装ガイドにはTV端末をチェックするという項目があり、 UI_MODE_TYPE_TELEVISIONで判定すればいいよと書いてある。 しかし実際にはUI_MODE_TYPE_TELEVISIONなのにAndroid TV…

最近気になっているGoogle Play Servicesの機能

Google Play Services7.5、7.8で素敵な新機能がいっぱい追加されたけど全然追いつけていないのでメモだけ…。 Nearby Nearbyは近くにあるAndroid/iOS端末同士でやりとりすることができる機能です。 メールやSMS、QRコードなどを介することなく接続できるので…

DroidKaigiの発表者を募集中です!

4月25日(土)にDroidKaigiというAndroidエンジニア向けのイベントが開催されます。 DroidKaigi | 2015/04/25 私も縁あってこのイベント運営に関わっているのですが、つい最近実行委員会内で「もっと気軽に応募してほしい!」という意見がありました。 DroidKa…

Genymotionの有料アカウントについて

Genymotionについて Genymotionは高速なAndroidのエミュレータです。 基本的な機能についてはググればいっぱい出てくるので割愛します…。 有料アカウント GenymotionのHPに無料アカウントと有料アカウントで使える機能の違いは書いてあるのですが、具体的に…

端末情報を調べるときに見るページ

au auの開発者向けページは他キャリアの同様のページとくらべて非常にわかりやすい。 他がひどいのでわかりやすいというだけで高評価だ。 Android(TM) 技術情報 | 開発者向け技術情報 | au 端末スペックは細かく乗っていて一覧性が高い。 更新スピードも早く…

Android Develoeprsの歩き方

はじめに この記事はAndroid Developersを便利に使うための方法が書いてあります。 前提としてAndroid Developersのページ構成などをある程度理解している必要があるので、まずは下記記事を参考にAndroid Developersの構造を把握してください。 Android Deve…

Android Developersでよく読むページ

Android Developersを読むときの注意点 どのページにも言えることですが、一見目次のように見えてもページ階層と関係ないリンク集だったりすることがあります。 たとえばBest Practicesというページの「BLOG ARTICLES」は一見このカテゴリの子ページリンクに…

Androidでよく使うdp指定まとめ

dpとは dpの仕組みについては過去にまとめています。 いまさら聞けないdp入門 本記事ではレイアウトを組んだり画像を用意する際によく使う数字をいくつか紹介したいと思います。 レイアウトの場合はそのままdp指定できますが、画像はdpサイズを元に各dpi用の…

タブレットUIアンチパターン

はじめに Android Developersではいくつかのページに渡ってタブレット端末のUI設計について説明しています。 本記事ではそれらの説明を元に、タブレットでアプリを表示した際に問題となりやすいデザインアンチパターンについて説明します。 参考URL Supporti…

ActionBarタブ・ドロップダウンリストの置き換え方法まとめ

はじめに API level 21以降、NAVIGATION_MODE_LISTやNAVIGATION_MODE_TABSといったActionBarと連動したナビゲーション要素が非推奨となりました。 これらのUIの置き換え方法についてはAndroid Developersで該当定数のリファレンスに「Consider using other c…

2014発売Android端末のdp解像度まとめ

はじめに Android端末は機種数が多く、OSバージョンやハードウェアがそれぞれ異なるためにAndroidでアプリを作ることは大変だと言われています。 特にディスプレイについてはそれぞれが異なった画面サイズや解像度を持つため、Androidの画面設計は複雑だと思…

AppIndexingについて

AppIndexingとは AppIndexingとは、ウェブページURLやキーワードとアプリの特定画面へのディープリンクを紐付け、Google検索結果から直接アプリの特定画面を起動させるための仕組みです。 現在はウェブサイトにアプリ用ディープリンクを埋め込む方法(狭義のA…

Android 5.0 差分メモ

自分用あとで読むメモ Android 5.0 概要 Android Lollipop | Android Developers 新API 概要 Android 5.0 APIs | Android Developers API 差分 API Differences between 20 and 21 Support Library 変更点 Support Library | Android Developers Support Lib…

【Android】いまさら聞けないdp入門 という記事を更新しました。

Qiitaに書いていた【Android】いまさら聞けないdp入門 - Qiitaという記事を更新しました。 (この記事も元々は同じ内容を記載していましたが、両方メンテすると大変なのでQiitaへのリンクページにしました) さすがに公開から1年以上経つとAndroid Developers…

Androidアプリのタブレット対応レイアウトまとめ

はじめに タブレットとスマートフォンの最大の違いは画面の横幅です。 Androidアプリをタブレット対応させる際は、いかにして画面の横幅を埋めるかが重要になります。 この記事では余白を埋める様々なパターンについて解説しています。 Android Developersの…

Android UI/UX アンチパターン

参考資料 Android Developers Amazon.co.jp: Smashing Android UI レスポンシブUIとデザインパターン: Juhani Lehtimaki, 佐藤 伸哉, 株式会社クイープ: 本 画面全般 スプラッシュ画面 必要のないスプラッシュ画面の表示はやめましょう。 なぜダメか 多くの…

Androidソースコードレビューで指摘する事が多い項目まとめ

業務でソースコードレビューを行う機会が増えたので、複数回指摘した項目や気になった実装などをまとめてみました。 こういう観点をできる人と共有できるといいなあ…。 2014/09/29 23:00 一部修正しました。 業務上ソースコードレビューの名目で仕様・デザイ…

ListViewのpadding設定

ListViewにpaddingを設定する ListViewで子要素の配置を調整する場合、通常はandroid:paddingで描画領域を、android:dividerHeightで子要素同士の間隔を設定する。 この時、単純にandroid:paddingだけ指定すると以下のようにリストの上下端で子要素が途切れ…

3行未満のAndroid Tips集

記事にするまでもない3行未満で書けるレベルのTipsとリンク集。 常識レベルのものも含む。 URLのパスの結合にはUri.withAppendedPathを使う スラッシュの重複を省いてくれて便利。 http://developer.android.com/reference/android/net/Uri.html DBのColumns…

はてなブログはじめた

Markdownに慣れきってしまうとBloggerで日記を書くのが苦痛になったのではてなブログを始めた。 とりあえずQiitaに書いた記事も転記してみたが、体裁が一部おかしいかもしれない。 Qiitaに投げるまでもない小ネタとかはこっちにまとめていきたい。 コンゴト…

買ってよかったAndroid関連電子書籍まとめ

Androidの技術書、どうせ買うなら電子書籍がいいよね!と電子書籍をあちこちで買ったり買い直したりしてるので知見を共有します。 どこで買うべきか 電子書籍で技術書を購入する際、なるべく制限の少ないものを探すことが重要です。 何も考えずに買ってしま…

設定画面のインテントアクションまとめ

はじめに Androidでは、アプリが必要な権限を持っていれば、アプリから端末の設定(一部)を変更することができます。 この仕組はアプリが必要とする機能を確実に使用するためには有用ですが、インストール時に設定変更権限が必要な旨がダイアログ表示されてし…

画面回転時のActionBarの挙動まとめ

はじめに ActionBarの一部の機能は、端末の画面の向きによって挙動が異なる場合があります。 この記事では特に画面回転時に大きく挙動が変わる部分についてまとめました。 MenuItemの表示数が変わる ActionBarに表示されるMenuItemの数は画面幅のdpによって…

SyncAdapterの実装メモ

SyncAdapterとは SyncAdapterとは、AccountManager上のアカウントとContentProviderを紐付けることにより、クラウド上のデータと端末のデータを同期させる仕組みです。 一般的な動作としては「ContentResolverにAccountManagerのアカウントとSyncAdapterを登…

AccountManagerでアカウントを管理する

はじめに AccountManagerにおいて、アカウントの管理やトークンの取得を直接行うクラスのことをAuthenticatorと呼びます。 それにあわせて、この記事ではAuthenticatorを実装したアプリのことをAuthenticatorアプリと呼ぶことにします。 Authenticatorアプリ…

AccountManagerを利用する

AccountManagerとは AccountManagerとは、Androidにおいて様々なWebサービスのアカウントを管理するための仕組みのことです。 アプリはAccountManagerを利用することで以下のような様々なことができるようになります。 アカウント情報の取得 アカウントの編…

ActionBarのメニューにCheckBoxを表示する

前置き ActionBarでは、メニューをすべて表示することができなかったり"showAsAction="never"を設定したメニューがある場合、一部のメニューをActionBar右端のドロップダウンに格納することがあります。 Andorid Developersではこの機能をAction Overflowと…

トグルボタンの実装

トグルボタンとは トグルボタンとは、ユーザが2つの状態(On/Off)を交互に切り替えることのできるUIです。 AndroidではToggleButtonやCheckBoxがこれに当たります。 API Level 14でON/OFFをわかりやすく切り替えるためのViewとしてSwitchが追加されました。 h…

<uses-permission>設定の罠

<uses-permission> Androidアプリが特定の機能を利用する場合、AndroidManifest.xmlにその機能の一覧を<uses-permission>として記述します。 たとえば、マイクによる録音を行うアプリの場合、以下の様な記述が必要となります。 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.nein37.kanidaisuki" > </manifest></uses-permission></uses-permission>

AndroidのUtilsクラスまとめ

はじめに androidのUtilsをまとめた資料が見当たらなかったので作りました。 android.*パッケージに含まれるものだけまとめています。 TextUtils 文字列操作用Utils。 isEmpty()とかequals()とかよく使う。 文字列操作系も大体揃っていて便利。 isGraphic()…

Androidに最適化されたJavaクラス一覧

はじめに Androidではモバイル端末での処理に最適化されたいくつかの代替クラスが用意されています。 ほとんどがHashMap関係のメモリ消費を抑えるためのものですが、Android Developersにも代替クラスをまとめたページはないようなので、知っている範囲でま…

xmlns:toolsでAndroid Studioのレイアウトエディタを活用する

xmlns:tools? Androidのレイアウトファイルに以下のような記述が含まれていることがあります。

レイアウトの余白を埋める

余白を埋める 開発中、ViewとViewの間に余白を設けたい場合があります。 通常はmarginやdividerで調整しますが、間に余白のためのViewを置く場合もあると思います。 実はAndroidには、余白調整のためのSpaceというViewが存在しているのです。 Space SpaceはA…

Upボタンの実装メモ

はじめに Upボタンの実装サンプルとかあまり詳しく書いてないので自分が実装したときのメモをまとめた。 正確性にあまり自信がない。 Upボタン ActionBarの左端にはUpボタンと呼ばれる上位画面へ遷移するための機能がある。 ナビゲーションバーのBackボタン…

安全にファイルを操作する

AtomicFile API level 17からファイルを安全に操作するための仕組みとしてAtomicFileが導入された。 これは書き込み開始時に元ファイルをバックアップし、失敗時にはロールバックすることでファイルの破損を防ぐ仕組みだ。 SupportLibraryにもr11から追加さ…

マルチペインレイアウトを簡単に実装する方法

はじめに マルチペインレイアウトについての説明は省略する。 http://developer.android.com/design/patterns/multi-pane-layouts.html マルチペインレイアウトのうち、左側ペインがリスト・右側ペインが詳細になっているものをMaster/Detailパターンと呼ぶ…

スリープ時にもBroadcastを処理する方法

スリープとBroadcast 端末がスリープ状態の場合でもBroadcastReceiver.onReceive()の呼び出しは通常どおり行われる。 ただし、onReceive()からServiceを呼び出して処理させる場合、その処理が中断されてしまう可能性がある。 確実にバックグラウンド処理を行…