Android Things(Raspberry Pi 3)のStarter Kitを動かしてみた
Raspberry Pi 3 Starter Kitを入手したので、機能確認用のアプリをKotlinで作ってみました。
Starter Kitには以下のものが含まれています。
- Raspberry Pi 3本体
- Rainbow HAT Project Board
- Special Edition Pibow Case
- 2.5A Worldwide Power Supply(電源アダプタ)
- 8GB microSD Card
電源アダプタは、microUSBのケーブルを使ってPCのUSBから供給するようにしたので、特に使いませんでした。
microSDカードは初期状態でパーティションが切られていたり、レストア用のパーティションがあったりしますが、大胆に全部消して Android Thingsのイメージを焼きました。
もし、予備のSDカードがあるのであれば、念のため取っておいた方がいいかもしれません。。
イメージのダウンロードの際、Android Things Consoleなるものにプロジェクトを登録しなければならないので、注意が必要です。
動作デモ
ソースコード(Kotlin)
Analyze Your Build with APK Analyzer日本語訳
Android Studio 2.2の新機能「APKアナライザー」に関する記事を翻訳しました。
gist.github.com Analyze Your Build with APK Analyzer日本語訳 · GitHub
Unity5 + Galaxy S6 edge(Gear VR) で、開発アプリが強制終了する不具合の対処方法
あらすじ
先日、Galaxy S6 edgeを手に入れたので、Gear VRに向けたアプリをUnity5で開発しようと思い、まずは起動用サンプルを作ってみました。
起動用サンプルは、新規プロジェクトにOVRPlayerController(Prefab)のみ追加したプロジェクトで、非常に簡単なものです。
早速、S6で実行してみたのですが、Unityのスプラッシュ画面起動後に強制終了。一方、OVRPlayerControllerを取り除けば、普通のAndroidアプリとして起動できることを確認。どうやら、OVR周りが悪さをしているようですが、原因がよくわからず・・・。
ちなみに、使用していたUnity5のバージョンは、5.0.1f です。
最初は開発環境を誤って構築していると思ったのですが、いくらやっても解決せず。
色々と検索していると・・・パッチの存在に気が付きました。Patch 5.0.1p1のパッチノート中に、次の記述を発見。
「(None) VR: Fixed GearVR startup crash on Galaxy S6 devices by enabling pbuffer Context support.」
これだ・・・!
という訳で、早速パッチを適用したところ、正常に起動できるようになりました。
対処方法
Unityの公式サイトから、Patch 5.0.1p1をダウンロードし、インストールする。
Unity - Unity QA - Patch Releases
2015/4/29現在は、Patch 5.0.1p2までリリースされているようなので、全てパッチを当てておくと良いでしょう。
Travis CI で Android プロジェクトをビルドする(β版)
Travis CIがAndroid のビルドに対応したそうです(β版ですが )。さっそく、公式ドキュメントをまとめてみました。
このガイドがカバーする範囲
このガイドは Android プロジェクトに関する ビルド環境及び設定のトピックに焦点を当てています。最初に、Getting Started と general build configuration guides を読んでください。
Android プロジェクト向け CI 環境
概要
Travis CI 環境は、複数のJDK, Ant, Gradle, Maven, sbt, Leiningen といった JVM 言語向けのビルドツールセットを提供します。
以下のように設定します:
language: android
.travis.yml ファイルで、プロジェクトは以下のプリインストールされた Android SDK 22.6.2 の Android 環境でビルドされます。
Android SDK コンポーネントのインストール or アップデートの方法
.travis.yml で、以下の例に示すように、オプションとしてインストールとライセンスを受諾した SDK のコンポーネントを定義できます:
language: android android: components: - tools - build-tools-19.0.1 - android-19 - sysimg-19 - extra-android-support licenses: - android-sdk-license-bcbbd656 - '.*intel.+'
(対話型のプロンプトで自動的に対話するためにコマンドが使用されるように、Tcl syntaxを使って)正規表現でライセンスを参照することができる一方、正確なコンポーネント名が指定されなければなりません。
特定のライセンスが指定されていない場合、Travis CI は デフォルトとして android-sdk-license-bcbbd656 のみ許容します。
language: android android: components: - build-tools-18.1.1 - android-8
依存性の管理
Travis CI Android ビルダーは、プロジェクトが(他に影響を与えずにテストを実行する前にプロジェクトの依存性を自動的に下げる )Maven や Gradle のような JVM ビルドツールによってビルドされることを仮定しています。
もしプロジェクトが Ant やその他のビルドツールでビルドされる場合、依存性は自動的にはハンドルされず、install: キーを使用して正確なコマンドを .travis.yml に指定する必要があります。
例:
language: android install: ant deps
Maven 向けデフォルトテストコマンド
プロジェクトがリポジトリのルートに pom.xml を含み、build.gradle を含まない場合、Maven 3がビルドに使用されます。テストスイートを実行するために使用されるデフォルトは次のとおり。
mvn install -B
これは、general build configuration ガイドに記載されている内容でオーバーライド可能です。
Gradle向けデフォルトテストコマンド
プロジェクトのリポジトリルートに build.gradle を含む場合、Gradle がビルドに使用されます。テストスイートを実行するために使用されるデフォルトは次のとおり。
gradle build connectedCheck
プロジェクトのリポジトリルートに gradlew ラッパースクリプトが含まれる場合、Travis Android ビルダーは代わりに使用を試みます。
デフォルトのコマンドは以下のようになります:
./gradlew build connectedCheck
これは、general build configuration ガイドに記載されている内容でオーバーライド可能です。
デフォルトテストコマンド
Travis CI が Maven または Gradle ファイルを見つけられない場合、Travis CI Android ビルダーは プロジェクトのビルドに Ant の使用を試みます。
テストスイートを実行するためのデフォルトは以下のように使用されます。
ant debug installt test
これは、general build configuration ガイドに記載されている内容でオーバーライド可能です。
例
- roboguice/roboguice(Google Guice on Android)
- ruboto/ruboto (A platform for developing apps using JRuby on Android)
- RxJava in Android Example Project
- Gradle Example Project (the wait for the emulator must be fixed)
- Maven Example Project (still using language: java, see pending pull request)
[書評] OpenGL ES 2.0 Android グラフィックスプログラミング
最近、仕事でOpenGL ES2.0を扱うようになったので、参考書を買いました。
OpenGL関連本は数多く出ていますが、AndroidでOpenGLを扱うには、この「Open GL ES2.0 Android グラフィックスプログラミング」が最適だと思います。
1章の「OpenGL ES 2.0って何?」から始まり、2章では環境構築、3章で点の描画、4章で三角形の描画、5章ではテクスチャーの取り扱い、6章でOpen GL ES(シェーダ言語)など、丁寧な解説が一通り行われています。
7章以降は3Dに関する章ですが、個人的には2Dの取り扱いが必要だったので、6章まで読み込みました。
誤植は若干あるので、コードを写経しているとハマってしまう可能性大です(特に引数の値に注意!)。
ただ、それぞれのメソッドの意味を理解して記述していけば、誤植部分は避けられると思いますので、サンプルコードを打ちながら学ぶスタイルの方にもオススメできる本です。
執筆した Android Studio 周辺記事まとめ
最近、仕事で Android Studio を本格的に触り始めたので、周辺技術の執筆した記事をまとめました。
- Gradleプラグインユーザガイド
- Android Studioのビルドシステムを説明しているAndroid Tools Project SiteのNew Build System の翻訳
- Getting Started with Android Studio
- Android Developer's Site の Getting Started with Android Studio の翻訳
- Android Studio - Eclipseからのマイグレーション
- Migrating from Eclipse の翻訳
- Android Studio Tips and Tricks
- Android Studio Tips and Tricks の翻訳
Android Wear - UI概要
Android Wearが発表されましたね。早速、勉強ついでに UI Overview を翻訳してみました。
概要
新しいフォームファクターは、新しいUIモデルに相当します。高レベルでは、Android Wear UI は、サジェスト(Suggest)とデマンド(Demand)のコア機能に集中した2つのメインスペースで構成されます。アプリーケーションはこれらスペースの両方に重要な役割を持つでしょう。
サジェスト(Suggest): コンテキストストリーム
コンテキストストリームはカードの縦のリストで、それぞれが便利な、または、タイムリーな情報の部品として表示されます。
Android携帯電話とタブレット上のGoogle Nowのように、ユーザは、重要な更新が簡潔に分かりやすく書かれたカードから、他のカードへ遷移するために縦にスワイプします。
一度に画面に表示されるカードは1つのみで、背景画像は追加のビジュアルな情報を提供するのに役立ちます。
アプリケーションは、最も有用な時にカードを生成し、ストリーム中に挿入することができます。
ストリーム中のカードは単一の通知よりも多いです。水平方向にスワイプすることで追加のページを表示することができます。
さらに水平方向にスワイプすると、タップ可能なボタンが現れるかもしれません。これは通知に対して何かしらのアクションをユーザに許すことを意味します。
カードは左から右へスワイプすることで、次回に情報が表示されるまでストリームから除去することができます。
エミュレータでは、画面の上部にマウスオーバーすると、端末の上部の青いバーが表示され、クリックするとホームに戻ることができます。
デマンド(Demand): キューカード
コンテキストストリームでユーザが何をしたいか予想できないようなケースにおいて、キューカードはユーザが端末と話すことを許します。
キューカードは、"OK Google" または ホーム画面の "g" アイコンをタップすることで開くことができます。
キューカードを上方向にスワイプするとアクションのリストが表示され、それらはタップすることもできます。
アクションリストは、音声アクションの Android インテントを含みます。
来たる Android Wear SDK では、開発者のアプリケーションと、ユーザがボイスコマンドを使ってアクションを実行するインテントをマッチさせることが可能になります。
単一の音声インテントによって複数のアプリケーションが登録されるかもしれません。その際、ユーザはいずれのアプリケーションを使うかを目的に応じて選択するでしょう。