20190710のAndroidに関する記事は4件です。

開発者向けオプションが有効なユーザに対してダイレクトリクルーティングする

タイトルは若干釣りです。元ネタはこちら

設定の取得方法を調べたのでメモしておきます
開発者にだけ採用ページへのリンクを表示するようにすれば、サービス愛を持ったエンジニアに応募してもらえてみんなハッピーになるはず・・・・・・!?

val status: Int = Settings.Secure.getInt(this.contentResolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED , 0)

有効にしている端末では1が返却されました。
無効な端末では0が返却されてました(手元になかったのでシミュレータで確認)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

RxJava+Kotlinでログを吐かせる便利拡張関数

fun <T> Observable<T>.logging(tag: String = Throwable().stackTrace[1].methodName): Observable<T> = this
    .doOnSubscribe {
        Log.d(tag, "doOnSubscribe")
    }
    .doOnNext {
        Log.d(tag, "doOnNext = $it")
    }
    .doOnError {
        Log.d(tag, "doOnError = $it")
    }
    .doOnComplete {
        Log.d(tag, "doOnComplete")
    }
    .doOnDispose {
        Log.d(tag, "doOnDispose")
    }

使うとき

rxObject
  .map { /* something to do */ }
  .logging("rxObject")
  .subscribeBy { /* something to do */ }

みたいにすれば、ログが吐かれる

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

プロファイラーを使ってOculus Quest実機での性能を計測する

はじめに

Oculus Questの実機でボトルネックになってる原因を確認したいなと思ったので、手順を残しておきます。
計測されたデータの分析については書きません。
参考:最適化をする前に覚えておきたい技術

前提

自分で作成したapkをOculus Questで実行できていること

環境

・Unity 2018.3.8f1
・USBでQuestに接続

手順

1. Autoconnect Profilerにチェックを入れてビルド

計測したい対象のアプリケーションをビルドする際にDevelopment BuildとAutoconnect Profilerにチェックを入れてビルドします。
image.png

2. apkファイルをQuestにインストール

作成したapkファイルをQuestにadb installでインストールします

3. プロファイラの情報に接続するためのコマンドを実行

adb forward tcp:34999 localabstract:Unity-{insert bundle identifier here}のコマンドを実行
※1 bundle identifierはPlayer Settings → Other SettingsのPackage Nameを設定(下の図の場合com.Sample.Test)となり、adb forward tcp:34999 localabstract:Unity-com.Sample.Testのコマンドになる
image.png
※2 Build And Runでインストール、アプリ起動する場合は内部的にこのコマンドを実行してくれますが、私は普通にインストールしてこのコマンドを実行する方が好きです。

4. プロファイラウィンドウを開く

Window → Analysis → Profilerを選択し、プロファイラウィンドウを開きます
image.png

5. アプリを実行、計測する

USBを接続したままでアプリを実行します。そしてプロファイラウィンドウのEditor → AndroidPlayerを選択します。あとは計測したいタイミングでRecordのボタンを押せば計測された情報が流れてきます。
image.png
image.png

あとはプロファイラを操作してボトルネックの箇所を特定しましょう!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OculusGo/Questのアプリを外部から無線で立ち上げる方法

イベントのデモなんかで体験者にアプリ起動方法を説明するのがメンドイので、なんとかできんかなぁと思ってたら普通にできたので、残しておきます。

準備

Oculus Go / QuestとPCをUSBで有線接続し、adbを実行できる状態にしておきます。
adbを実行するための環境はこれを読んでる方なら大体終わってると思うので割愛します(ネット上にいくらでも書いてあるし)

adbコマンドを打ち込んでいく

1. デバイスのIPアドレスを取得

cmd.bat
adb shell ifconfig wlan0

出力に"inet addr:192.168.x.x"みたいなのが出るのでそれがデバイスのIPアドレスです。
↓で使うのでコピーしておく。

2. TCP/IP接続

cmd.bat
adb tcpip 5555
adb connect 192.168.x.x:5555

上記connectが成功するとwifi経由でデバイスに対してコマンドを送れるようになったので、PCとデバイスのUSB接続を切断しておkです

3. 実行するアプリケーションのパッケージ名を取得する

cmd.bat
adb shell pm list package

これはビルド時に自分で命名しているので、わかっている場合は飛ばしておk。
売り物のアプリでパッケージ名が分かりませんってな時にでも使ってください。
上記を実行するとデバイス内にインストールされたパッケージ名の一覧がドバーっとでるので
その中からお目当ての物を自力で探してください。

4. 実行するアプリケーションのクラス名を取得する

cmd.bat
adb shell pm dump パッケージ名

上記を実行すると、これまたドバーっと色々情報が表示されて嫌になりますが、見るのは上記を実行した行の上から5行目辺りだけ。

cmd.bat
adb shell pm dump パッケージ名
DUMP OF SERVICE package:
  Activity Resolver Table:
    Non-Data Actions:
        android.intent.action.MAIN:
          xxxxxxx パッケージ名/クラス名 filter xxxxxxx // ←ここ
            Action: "android.intent.action.MAIN"
            Category: "android.intent.category.INFO"
            AutoVerify=false

上記の「パッケージ名/クラス名」の部分に書かれている文字列をコピペしておいてください↓で使います。filter xxxとかは要りません。
ちなみに、クラス名はUnityでOculusGo/Quest向けにビルドしている場合はcom.unity3d.player.UnityPlayerActivityになります。
なので、毎回この手順が必要というわけではないです。

5. アプリを実行する

cmd.bat
adb shell am start -n パッケージ名/クラス名

はい。これでOculusGo /Quest でアプリを外部から無線で立ち上げられたはずです。ヤッター

6. アプリを終了する

adb shell am force-stop パッケージ名

上記でアプリを強制終了できる

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む