- 1. 【Android Studio】NDKデバッグ変数表示のHEX化
- 2. スマホ用VRに6DoF機能やハンドトラッキング機能を実装してみた
- 3. Termux + Flutter + dart ffi で .so リロード対応し Android C/C++ + GUI アプリ開発を効率化するメモ
- 4. [Android / Kotlin] ノッチ(ディスプレイカット / 切り欠き)の部分も表示する方法
- 5. Delphiでインテントからファイルを受け取ってみる
- 6. 【Androidアプリ】AMD CPU RyzenのPCでエミュレータを使用する方法
- 7. Android 動画再生アプリ開発(ExoPlayer)
- 8. Androidでも Markdown + PlantUML したい
- 9. Gradleのimplementationとapiの違いメモ
- 10. [Unity] ビルド関連処理を自分なりに基盤化し始めました
- 11. DataBindingでsealed classを使いたい
- 12. 文字列→塩基配列の相互変換ツールをつくってみた(アプリ版)
- 13. FlutterのNavigatorの使い方と仕組み
- 14. Androidでリモートコントローラにリストを表示する際のポイント
- 15. iOS, Mac, Androidのアプリをリリースしてみた
- 16. adbコマンド
- 17. FlutterのListViewでリストを削除した際のA dismissed Dismissible widget is still part of the tree
- 18. Android で Debian のデスクトップ環境を動かして日本語入力できるようにするところまで
- 19. Androidーイベントリスナ
- 20. [Unity][Fee]UnityAndroidからContent://のファイルを読み込む。
【Android Studio】NDKデバッグ変数表示のHEX化
## アプリではHEX表示出来てNDKでは出来ない・・・。んな訳ない!
—
でも、ググっても出てこない・・・
~~(しかたなく)~~ Google Issue Trackerで問い合わせ!
⇒ 無事解決できた!というお話。—
## Googleからの回答
This is something we inherit from CLion. You can turn on hex view following this instruction:
https://www.jetbrains.com/help/clion/using-hexadecimal-view.html⇒ CLionベースなので、こんな感じで設定変更したらHEX表示できるよ!との回答。
—
### Enable hexadecimal view (少しアレンジ)
—
1.
In Find Action dialog (Shift+Ctrl+A on Linux/Windows, ⇧⌘A on macOS) type Registry; open Registry, type cidr.
スマホ用VRに6DoF機能やハンドトラッキング機能を実装してみた
(Unityアセットやコードは[こちら](https://github.com/NON906/HandVR))
—
皆さんこんにちは。
早速ですが、VR(バーチャルリアリティー)は勿論ご存じですよね?
ゴーグルを付けてやる、あれです。今では、ゴーグルやコントローラーの位置を認識して、自由に動き回れる6DoFという機能があります。
また、最近ではOculus Questがハンドトラッキングに対応した、ということも聞きます。しかし、このようなVRは、OculusやViveといった、専用のゴーグルが必要で、そのために手軽に試せない、という印象があると思います。
私も実は持っていません。しかし、スマホをはめるだけで出来る簡易的なゴーグルも存在します。
今では100均でも売っているそうです。
これであれば、安い出費で手軽にVRが体験できる、ということです。
ただ、現状では6DoFやハンドトラッキングに対応したものがほとんどありません。ということで、実際に作ってみました。
といっても、一から作るのは私には無理なので、既存の技術を流用します。
開発環境はUnityで、現在は
Termux + Flutter + dart ffi で .so リロード対応し Android C/C++ + GUI アプリ開発を効率化するメモ
## 背景
* C/C++ がメインの Android アプリを開発している(GLES/Vulkan グラフィックス, レイトレーシング, 画像処理, 機械学習など)
* 実機で動かして実際のパフォーマンスを知る必要がある, エミュレーターでは実行が対応していない or 実行が遅すぎる
* PC で NDK でクロスコンパイル -> apk 転送 -> 実行がめんどい
* グラフィックや機械学習系だと lldb デバッグはなかなかフィットしないし, デバッグとしては画像などを出したいその上で, C/C++ メインアプリに UI や, Android のカメラ画像などの取得が欲しい(カメラ画像に対するリアルタイム StyleTransfer アプリ開発ととか)
* imgui や SDL で GUI だとスマホの画面だと操作しずらい. カメラからの画像とか使いたいときに連携がめんどい
* Kotlin + Jetpack UI でもいいが, iOS, PC とも統一できて, hot reload ができ, 最近(?) native module のロードに対応した
[Android / Kotlin] ノッチ(ディスプレイカット / 切り欠き)の部分も表示する方法
ノッチを付けずに戦ってるメーカーはかっこいいと思います。
# ノッチ、ディスプレイカット、切り欠きとは
iPhone X(嘘ですEssential Phoneです)から始まった上のかけている部分。この部分にはカメラや顔認証に必要な部品があったりする(顔認証対応端末のみ)。
中華系が真似したせいで流行ってしまった?Pixel 3 XLに関しては他端末よりも大きめのノッチがついてたりする。(カメラが自撮り側のみ2つついているため。広角だよ←使ったことないけど)
基本的にはこの部分にはステータスバー(?や?や?等があるバーのこと)があってアプリは侵略できない。
# ノッチがない端末でノッチを出す方法
開発者向けオプション→ディスプレイカット→縦長のカットアウト
を選択することでノッチを表示できます。
ステータスバーが広くなって違和感あると思うよ。# ノッチがある端末でノッチを隠す(利用しない)方法
Pixel 3 XLでの場合です。
開発者向けオプション→ディスプレイカット→非表示
を選択することでノッチを利用しない設定にできます。その他サードパーティのアプリでノッチ領
Delphiでインテントからファイルを受け取ってみる
#はじめに
[前回の記事](https://qiita.com/himajin_sekky/items/154896605afe5af4c3d3)と対になるものです。 Delphi 10.3 CommunityEditionにて確認しています。##暗黙的インテントを受け取る
参考:
[Delphiサンプル FMX.Android Intents Sample](http://docwiki.embarcadero.com/CodeExamples/Rio/en/FMX.Android_Intents_Sample)
[Delphi 10 SeattleのAndroidアプリケーションでIntentの送受信をするには](https://www.gesource.jp/weblog/?p=7140)###インテントフィルタ
最初にAndroidManifest.template.xml
を編集し、受け取りたいインテントの種類に応じた内容を追加します。
例えば、Googleドライブでファイルを選択し自アプリで開く場合は、VIEWというアクションになります。(拡
【Androidアプリ】AMD CPU RyzenのPCでエミュレータを使用する方法
## 概要
– 開発環境によっては、Android Virtual Device(AVD)を起動することができません(ex. Windows 10 Home, AMDプロセッサ)
– Andoridアプリを開発する上でAVDを使用できないと、いちいち実機にインストールしたり、.apkを出力して[Nox Player](https://jp.bignox.com/)などのエミュレータで動作確認をしなければならず効率が落ちます
– 当方も最初はこの方法を採っていましたが、デバッグがしづらく途中で我慢ができなくなり、自身の環境でもAVDを使う方法はないか調査しました-> の結果をまとめたのが本記事です
## 環境
– OS: Microsoft Windows 10 Home
– プロセッサ: AMD64 Family 23 Model 17 Stepping 0 AuthenticAMD ~2000 Mhz
– BIOS: LENOVO 8PCN45WW
– Android Studio 3.4.1## 手順
### ハイパーバイザープラットホームの有効化
`Windows
Android 動画再生アプリ開発(ExoPlayer)
#Android Exoplayerの使い方
Exoplayerとは簡単に言うとAndroidで動画再生をするためのAPIをたくさん用意したライブラリです。通常1から動画プレイヤーを開発しようとすると、動画デコード、音声デコード、ストリーミング、復号化などを全て作らなければなりませんが、Exoplayerでは簡単なAPIですぐに実装できます。
API 16以上のSDKであれば使用できるのでハードウェアにも依存せず使用できます。
**[下記公式URL]**
[ExoPlayer | Android デベロッパー | Android Developers](https://developer.android.com/guide/topics/media/exoplayer)##Exoplayer導入
初めにExoplayerライブラリをプロジェクトに追加します。###google(), jcenter()追加
まず、build.gradleに下記を追加します。“`build.gradle
repositories {
google()
jcen
Androidでも Markdown + PlantUML したい
# Androidでも Markdown + PlantUML したい
注記:残念ながら日本語入力ができなくなっていました。現在調査中のため、以下の手順は実施しないでください。
今の所、私の探した範囲では Markdown + PlantUML が書けるAndroidアプリは存在しないっぽい(個別には存在する)ので、Linux(Debian)上で Visual Studio Code と Graphviz をインストールして書けるようにしてみました。
Linux(Debian)を構築していない人は、事前に[ここ](https://qiita.com/tacchi/items/ef905b9b07eabbe5bbfc)を見てDebianの環境を設定してください。## Graphviz のインストール
Graphviz は文字列を基に図を書くためのツールです。
その図の中に PlantUML も入っていると思ってください。
なお、Graphviz は Java の上で動くので Java のインストールも必要です。
一緒にインストールします。1. デスクトップ画面の一番左下の鳥
Gradleのimplementationとapiの違いメモ
# `implementation`と`api`
|コンフィグレーション|依存関係の伝播|
|:–|:–|
|`implementation`|しない|
|`api`|する|# サンプル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302946/bab8f73e-e1d8-9b78-c9fa-86b88a3b6ef0.png)このとき、プロジェクトAから見て
|プロジェクト|利用可否|
|:–|:–|
|B|使える|
|C|使える|
|D|使えない|
|E|使える|
|F|使えない|
|G|使える|となるはず。
# 参考
– [ビルド依存関係の追加 – Android Developers](https://developer.android.com/studio/build/dependencies.html#dependency_configurations)
– [The Java Library Plugin – Gradle User Manual](
[Unity] ビルド関連処理を自分なりに基盤化し始めました
## 目的
– アプリビルドのCIなどで要求される機能を実装## 現在の機能
– 設定ファイルおよびSchemeに応じたビルド設定の反映
– ライブラリの追加を避けつつデシリアライズ出来るようXMLに記述
– が、今後やりたい事を踏まえるとスクリプトでも扱いやすい形式にすべきか悩み中
– KeystoreやAppleDeveloperTeamIdなども設定ファイルから切り替え
– ログを詳細と簡易で出し分け
– AndroidでExport Projectしつつapk出力まで対応## 実行
– macOSでもWindowsでもbashから以下のコマンドで実行可“`
sh Batch/AppBuild.sh -p [プラットホーム] -c [設定名] -s [scheme] -e [実行メソッド名]
“`## 成果物
– https://github.com/cyber1496/UnityBuilder## 追加でやりたい事
– アプリアイコンの差し替え
– バージョン変更(BuildNumberのインクリメント)
– テスト公開用の各ストアへのアップロー
DataBindingでsealed classを使いたい
DataBindingでsealed classを使う
–用意したsealed class
“`kotlin
sealed class SealedClass(val str: String) {
object Hoge : SealedClass(“hoge”)
object Fuga : SealedClass(“fuga”)
}
“`
通常通りDataBindingを使う場合“`xml
文字列→塩基配列の相互変換ツールをつくってみた(アプリ版) # はじめに
[この記事](https://qiita.com/am10/items/41d94d5175dbf63fc706)で公開したアプリの中身についてです。[この記事(どこまでショボいアプリがAppleの審査に通るのか試してみた)](https://qiita.com/megumu-u/items/600b9187aa3fec6539af)をみてわりと機能が少なくてもアプリ公開できるのか!と思い正月休みにアプリをつくってみました。
[以前作ったこれ(文字列→塩基配列の相互変換ツールをつくってみた(PHP))](https://qiita.com/am10/items/63b1f747a630a2913841)をアプリにしてリリースしました。
# リリースしたアプリ
つくったアプリは有料です。(目指せ!!トータルダウンロード数25!!!)* Mac, iOS: ¥120
* Android : ¥100## Macアプリ
ターゲット:MacOS Catalina以降[DNA変換](https://apps.apple.com/jp/app/dna%E5
FlutterのNavigatorの使い方と仕組み
##はじめに
この記事では、[Navigator Widget](https://docs.flutter.io/flutter/widgets/Navigator-class.html)について解説します。(以下、Navigatorとします)
以下の2部構成です。1. Navigatorの使い方
2. Navigatorの仕組みただし、この記事では、遷移時のアニメーションの作り方については触れていません。ご注意ください。
この記事のサンプルコードは以下のページに置いています。
https://github.com/HeavenOSK/basic_navigator##Navigatorとは
[Navigator](https://docs.flutter.io/flutter/widgets/Navigator-class.html)はFlutterでページ遷移を実装する際に使用するWidgetです。##Navigatorの使い方
Navigatorの使い方について解説します。解説する内容は、以下の通りです。
1. 進む遷移をして、戻る遷移を行う
2. 戻
Androidでリモートコントローラにリストを表示する際のポイント
# 概要
ここでは、Android音楽プレイヤーを作る際、メディアの一覧表示に対応したリモートコントローラーにメディア一覧を表示するための情報について書きます。
画像は、Kenwood MDV-Z904W というカーナビの画面で、Play Musicを動かしたときに見られるリストの表示サンプルです。
![IMG20191107210704.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78503/6305932c-1c56-0074-bec6-8e6baaf96855.jpeg)
# 基本情報
## 対応機器
ここで述べるメディア一覧を表示できるデバイスですが、その特性上、高い解像度のディスプレイが付いている高機能な物に限定されてきます。具体的には、カーナビ、スマートウォッチなどが該当します(なので、それほど使う人は多くないんじゃないかと思っています)。ここでは、自分の持っているカーナビでの動作を想定しています。
## AndroidのMediaSession
Androidで音楽再生ア
iOS, Mac, Androidのアプリをリリースしてみた
# はじめに
アプリのリリース方法の備忘録です。**今からアプリをリリースしたい人はとりあえずデベロッパー登録してください**
登録まで2日くらいかかります。休日はさむともっとかかるのでアプリ作る前にデベロッパー登録しておく方がスムーズに進みます。
* Apple: 年会費 ¥12,980(2020/1時点)
* Google: 登録費 $25.00(2020/1時点)全部 Macbook Pro macOS Catalina(10.15.2)で作業しました。
# リリースしたアプリ
## Macアプリ
ターゲット:MacOS Catalina以降[DNA変換](https://apps.apple.com/jp/app/dna%E5%A4%89%E6%8F%9B/id1494127578?mt=12)
## iOSアプリ
ターゲット:iOS13以降[DNA変換](https://apps.apple.com/app/id1493994947)
## Androidアプリ
ターゲット:Android6.0以降[DNA変換](https://play.
adbコマンド
Androidアプリを開発するにあたって、
よく使うADBコマンドからたまにしか使わないけど毎回調べてしまうものまとめました。アプリ(APK)のインストール
–
デバイスに未インストール“`
adb install
“`インストール済み(上書きインストール)
“`
adb install -r
“`インストール済み(ダウングレード)
“`
adb install -d
“`接続済み端末の確認
–
“`
adb devices
“`端末指定
–
“`
adb -s*
“`
device idは接続済み端末の確認のコマンドにて取得
*はinstall, uninstallなど指定した端末に対して行いたいコマンドファイルの転送
–“`
adb push <転送するファイル名> <転送先のパス>
“`ファイルの取得
–
“`
adb pull <取得元のパス>
“`AlarmManagerの設定時刻
–
[【Android】adbを使ってAlarmManagerの実行予定時間を確認する](
FlutterのListViewでリストを削除した際のA dismissed Dismissible widget is still part of the tree
## はじめに
最近Flutterの勉強を開始しました。
初めてのアプリということで、[ToDoアプリ](https://github.com/kazumaz/flutter-study/tree/master/todo_app)の開発を行っていました。
ListViewというwidgetを使っているのですが、途中エラーが発生し困ったので解消法の共有です。
超初心者向けなのであしからず。
## 現象
上記のようなTodoリストを作成し、各 TodoはFlipすることで削除できるようにしました。
しかし、test3→test2→test1の順で削除すると、問題なく削除されるのですが、test3を削除する前にtest2を削除するとエラーが発生す
Android で Debian のデスクトップ環境を動かして日本語入力できるようにするところまで
Android に UserLAnd という Linux ディストリビューションを環境構築するアプリケーションがあるのですが、
デスクトップ環境でどうしても日本語入力が出来なかった(日本語入力が起動してくれない・・・)のであれこれ調べて試してみたものが以下になります。
このあと、Visual Studio Code + Graphviz で Markdown + PlantUML な環境も作りたいと思っています。
→[書きました](https://qiita.com/tacchi/items/ef88ee640f4d9306bc95)## 日本語入力(Anthy)のインストール
1. UserLAnd をイントール
2. UserLAnd を起動して Lxde を選択する(Debianを選択すると日本語入力の設定がうまく行かなかった)
3. IDとパスワード(VNCも含めて2箇所)入力しCONTINUEボタンを押す→XSDLを選択してCONTINUEボタンを押す
4. 数時間放置(端末の速度とネットワーク環境に依存すると思われる。)→Debianのデスクトップ画面起動(XServ
Androidーイベントリスナ
#目指す成果物
数字を入力して送信ボタンを押したら,以下のような文字列を表示させるものを作ってみましょう!
###ソースコード
https://github.com/syuheifujita/helloListener#手順
1. リスナクラスを作成する
タッチされるかを見張るためのリスナを作成する.“`MainActivity.kt
package com.example.hellolistenerimport androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widge
[Unity][Fee]UnityAndroidからContent://のファイルを読み込む。
#はじめに
自作ライブラリ開発日記です。
https://github.com/bluebackblue/fee_core#なにが問題なのか
「content://」から始まるファイルを読み込むためには「android.content.ContentResolver」を使用する必要がある。
VirtualFileとそうでないファイルでInputStreamの作成方法が異なる。#コード
“`cs
/** 更新。
*/
public System.Collections.IEnumerator Main(string a_uri)
{
//バイナリファイルとして開く。
Fee.File.Item t_file_item = Fee.File.File.GetInstance().RequestLoad(Fee.File.File.LoadRequestType.LoadFullPathBinaryFile,new Fee.File.Path(a_uri));//読み込み待ち。
while(t_file_item.IsBusy() == true){
yield r