eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

Android

システムレイヤーにOpenGL対応Viewを追加する

Manifest設定 システムレイヤーへの描画は専用のPermissionがある <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> WindowManagerでViewを登録 レンダリング用のViewとタップ用のViewを分けると設計が楽になる場合がある SurfaceViewは軽量だが、View移動ができない OpenGL側でViewportを調整してあげると</uses-permission>…

Android Studio 3.2-Beta1 導入

Experimental設定が追加 Navigation Editorが標準で無効化された 新たに Settings > Experimental が追加された そこで有効化できる 旧バージョンからアップデートしてビルドが通らない ~/.gradle/ を削除することで復旧できる ASの場合は Invalidate Caches…

ARCore for Unityの事始め

ARCoreのサポート端末 少し前にサポート端末が拡充された Nexus5X, Nexus6Pがサポートされた Xperia XZ1Compactもサポートされた 一般的に使うには辛い ARKitのほうは手軽で強い コアライブラリ ARCore by Google コアライブラリ これがないと始まらない ア…

Android Studio 3.2 Preview18 所感

Kotlinアップデート 1.2.50 ConstraintLayoutのpackage名がもとに戻っていた 幻だったのだろうか implementation/apiでbuild.gradleに記述した依存関係がビルドに反映されない Jetifierが悪さをしている可能性がある こいつらを gradle.properties から外す…

AndroidStudio 3.2-Canary17の所感

Moduleの依存グラフが表示されるようになっていた いつからだろうか Build Variants > i アイコンから見れる 依存Moduleの依存は見れない app > sdk > ktx のような依存グラフにはなってない そのうち改善される? Android API-28公開 これでライブラリ公開…

RangeBarで始めるCustomViewとDataBindingとMVVM

どういうことがしたいのか こんなUIをMVVMで簡潔に実現したい。 ユーザーに心拍数(下限、上限)等の一定範囲データを設定させる その際、実装コストを減らしたい なるべく現代的に仕上げたい UIは RangeBar を利用する RangeBarを操作すると、対応する値が…

Android NDKでprotocol buffersを利用する

Protocol Buffersとは Protocol Buffersは2008年の7月7日=鑑純夏さんの誕生日にGoogleが公開したデータシリアライズ・デシリアライズライブラリです。なお、七夕は雨です。 IDLという独自のテキストフォーマットでデータを記述し、複数プラットフォーム間で…

複数スレッドでGLの処理が可能なGLSurfaceView作りました

複数スレッドでGLの処理が可能なGLSurfaceView作りました Githubで配布しています https://github.com/eaglesakura/multicontextglsurfaceview 何が出来るのか GLSurfaceViewを継承したクラスです。動作には互換性があり、GLSurfaceViewをMultiContextGLSurf…

Mac OSでPerfHUD ESを利用してNexus7のOpenGL ES負荷を測定する

Mac OSでPerfHUD ESを利用してNexus7のOpenGL ES負荷を測定する いろいろあってヨドバシポイントを2万円分手に入れたので、検証機としてNexus7を購入しました。Nexus7はTegraを搭載していて、便利なツールがMacでも使えるので、そのメモです。 標準ツールで…

Android NDKで"Unknown Application ABI:" エラーが発生した場合の対症療法

Android NDKのデバッグは容易になった・・・はずなのに Androidアプリは基本的にSDKを利用し、Java言語で記述します。ですが、Android NDKを利用することでC/C++言語でもアプリを記述できるのは周知のとおりです。 最初は「できるやつだけついてこい」的にほ…

Galaxy NexusでETC1テクスチャを利用する場合の注意

ETC1とGalaxy Nexus AndroidのOpenGL ES実装はETC1をサポートするようになっています。 ETC1テクスチャは4x4のピクセルブロックを基本とした圧縮を行うため、利用するには次のような制限があります。 縦横のピクセル数が4の倍数であること そのため、Android…

SurfaceTextureでMediaPlayerやカメラ映像をOpenGLテクスチャとして使う場合の注意点

SurfaceTextureによるテクスチャへのマルチメディアレンダリング Android 3.xからSurfaceTextureクラスが導入されて、OpenGLとカメラ・ビデオ等のマルチメディア連携が楽になりました。 具体的には、テクスチャとしてビデオやカメラの映像を取り込めるように…

特定のAnnotationが付いたクラスやメソッドだけをProguard対象から外す

Android NDKとProguardは相性が悪い Proguardとは 今更説明することも無いかと思いますが、ProguardといえばAndroiderにとっては欠かせないお友達です。 Javaのコードは容易に逆コンパイルされて、簡単に内容を解析されてしまいます。 逆コンパイル自体を防…

GLTextureViewを公開しました

Android 4.0(API Level 14)からTextureViewというViewが登場し、OpenGL ESの応用範囲が格段に広くなりましたが、GLSurfaceViewに相当する補助クラスが未だに登場していません。 Google的には必要ないという考えかもしれませんが、SurfaceViewよりもTexture…