Lionaroid技術ブログ

Androidやドローンに関する技術的な記事やiRacingなどのシミュレータに関する記事

Android Things(Raspberry Pi 3)のStarter Kitを動かしてみた

f:id:lionas:20171122202144j:plain

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なるものにプロジェクトを登録しなければならないので、注意が必要です。

動作デモ

youtu.be

ソースコード(Kotlin)

github.com

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 Startedgeneral 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ビルダーでサポートされません。基本的wait_for_emulator のようなスクリプトを移植し、テストがエミュレータで実行可能なように .travis.yml を適用する必要があります。

依存性の管理

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 ガイドに記載されている内容でオーバーライド可能です。

複数の JDK でテスト

任意のJVM言語について、複数のJDKに対してテストすることが可能です。

ビルドマトリクス

Android プロジェクト向けでは、env と jdk はビルドマトリクスを生成するための配列として与えられます。

実際に使ってみて

相当簡単にビルドの実行ができました。ただ、Androidのライブラリプロジェクト(例えばFacebook SDK)を使用するプロジェクトを実行するにはひと工夫必要そうです。

[書評] OpenGL ES 2.0 Android グラフィックスプログラミング


最近、仕事でOpenGL ES2.0を扱うようになったので、参考書を買いました。
OpenGL関連本は数多く出ていますが、AndroidOpenGLを扱うには、この「Open GL ES2.0 Android グラフィックスプログラミング」が最適だと思います。
1章の「OpenGL ES 2.0って何?」から始まり、2章では環境構築、3章で点の描画、4章で三角形の描画、5章ではテクスチャーの取り扱い、6章でOpen GL ES(シェーダ言語)など、丁寧な解説が一通り行われています。
7章以降は3Dに関する章ですが、個人的には2Dの取り扱いが必要だったので、6章まで読み込みました。

誤植は若干あるので、コードを写経しているとハマってしまう可能性大です(特に引数の値に注意!)。
ただ、それぞれのメソッドの意味を理解して記述していけば、誤植部分は避けられると思いますので、サンプルコードを打ちながら学ぶスタイルの方にもオススメできる本です。

OpenGL ES2.0+Androidを始めたい方に、自信を持ってオススメできる本です!

執筆した Android Studio 周辺記事まとめ

最近、仕事で Android Studio を本格的に触り始めたので、周辺技術の執筆した記事をまとめました。

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 では、開発者のアプリケーションと、ユーザがボイスコマンドを使ってアクションを実行するインテントをマッチさせることが可能になります。
単一の音声インテントによって複数のアプリケーションが登録されるかもしれません。その際、ユーザはいずれのアプリケーションを使うかを目的に応じて選択するでしょう。