- 1. MRTK2.7.3 + AzureSpatialAnchorsSDK2.12をHoloLens2、Android、iOSで動かす
- 2. 【Android】画像をピンチイン・アウト
- 3. プログラミング未経験から始める!Flutterでアプリ開発【ios/android】
- 4. exifinterfaceを使った画像回転処理の実装
- 5. Android, Gradle: Version Catalog と PluginManagement を使って Gradle プラグインを利用する
- 6. Google Play を導入せずに Windows Subsystem for Android を最大限活用する
- 7. [Kotlin]スクロールするとヘッダーに収納されるTextViewを力技で作成してみた。[Android]
- 8. Android: Github Actions で Gradle build daemon disappeared unexpectedly が発生するときの対処
- 9. Raspberry Pi4をAmazonプライムビデオ専用機に2
- 10. Android Studio でプロジェクトを作成後にリネームする
- 11. onNewIntentで状態を更新する(Jetpack Compose)
- 12. Ubuntu 20.04でCommand line toolsのダウンロードからAndroidエミュレーターを動かすまで
- 13. Jetpack Compose チュートリアルをただやってみるだけの記事 #1
- 14. Android のパッケージの公開設定
- 15. Android: Github Actions での最適な Gradle ビルドキャッシュ戦略
- 16. MotionLayoutの例を試してみる(ImageFilterView)
- 17. マテリアルなUIを単独で使用する方法
- 18. 接続中の複数のAndroidデバイスに一括でadb installするコマンド
- 19. Androidの画面分割で固定指示してた画面が勝手に回転してさらにアクティビティが勝手に再生させられてしまう件
- 20. Android開発のSDKでつまづいた
MRTK2.7.3 + AzureSpatialAnchorsSDK2.12をHoloLens2、Android、iOSで動かす
# 環境
– Windows10 PC
– iPhone 12 Pro
– HoloLens2
– Android 10
– Unity 20203.4f1# Azure
Azureポータルにログイン
Spatial Anchors Accountsにアクセス
各種値を入力して作成
下記値をメモしておく。
Account ID , Account Domain , Access Key# Unity
Unity HubからProjectを作成
[MixedRealityFeatureTool](https://docs.microsoft.com/ja-jp/windows/mixed-reality/develop/unity/welcome-to-mr-feature-tool)を起動しProjectPathを指定
![image
【Android】画像をピンチイン・アウト
Kotlinで書かれているコードが見つからなかったのでメモ。
“`CustomImageView.kt
class CustomImageView : View {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)private var bitmap: Bitmap? = null
private val bitmapMatrix = Matrix()
private val paint = Paint()// ピンチイン/アウト時、画像を拡大/縮小
private val scaleGestureDetector by lazy {
ScaleG
プログラミング未経験から始める!Flutterでアプリ開発【ios/android】
こんにちは。長谷川です。この記事では、自分の勉強もかねて、Flutterを使ったアプリ開発をなるべく易しく解説していくので、ぜひ最後までお付き合いいただけますと幸いです。
また、私自身こういった解説記事を書くのは初めてなので、至らぬ点は多々あるかとは思います。ぜひコメントで意見いただけると幸いです。##この記事の対象
今まで全くプログラミングしたことないけどアプリ開発してみたい人、です。プログラミングは専門用語や英語が多くて億劫。。という方も、丁寧に用語解説をしながら記事を書いていくので安心して読み進めてみてください。
##必要なもの
1、windows10以降搭載のパソコン or Mac
2、アプリを作りたいと思う熱意?大事!!##習得までのロードマップ
lesson0 : Flutterって?アプリ開発って?
lesson1 : とりあえずプログラミングする環境を作ってみる。
lesson2 : Dart言語を学習しよう。
lesson3 : オブジェクト指向プログラミングを学習しよう。
lesson4 : Widgetの使い方
lesson5 : Coming S
exifinterfaceを使った画像回転処理の実装
#初めに
以前、画像のUriからByteArrayに変換する処理を投稿させていただきましたが、それを利用して今度は画像が編集によって回転されている場合、逆方向に回転をさせてしっかりと縦画面表示になる様に実装していきたいと思います#導入方法
“`kotlin
implementation(“androidx.exifinterface:exifinterface:1.3.3”)
“`
###実装例“`kotlin
val imageStream: InputStream? = contentResolver.openInputStream(imageUri)val bitmap = BitmapFactory.decodeStream(imageStream)
val byteArrayOutputStream = ByteArrayOutputStream()
val compressFormat = when (mimeType) {
MediaType.Jpeg
Android, Gradle: Version Catalog と PluginManagement を使って Gradle プラグインを利用する
Gradle Version Catalog を使って、Gradle Plugin を利用する方法を解説します。
## 前提
* Gradle 7.2 以上
* Gradle 7.2 から Version Catalog に `[plugins]` セクションを使えるようになりました
* Gradle Kotlin DSL 使用
* 解説は Kotlin DSL とします## 実装
### buiildscript ブロックの削除
build.gradle.kts に buildscript ブロックを定義している場合は、削除してください。新しい Plugin DSL では classpath() 定義が不要になりました。
`(project root)/build.gradle.kts`
“`diff
-buildscript {
– repositories {
– google()
– mavenCentral()
– gradlePluginPortal()
– }
– depende
Google Play を導入せずに Windows Subsystem for Android を最大限活用する
#はじめに
2021年10月にリリースされた Windows 11 の目玉機能の一つが Windows Subsystem for Android (WSA) です。WSA によって、サードパーティ製のエミュレータなしで Android アプリを Windows 上で実行することが可能になりました。
日本国内での利用も、2022年2月現在ではマイクロソフト公式の方法ではできないものの、外部サイトを介してパッケージを直接ダウンロードすることで可能となりました。
しかしながら、現状の WSA にはパッケージの改変なしに Google Play を導入することができないという欠点があります。また、Google Play 開発者サービスのオープンソース互換アプリである microG を導入してもなかなかうまく行かない状況にありました。
そこで、本稿ではパッケージそのものを改変することなく Windows Subsystem for Android を最大限活用できるように、以下のことを目指していきたいと思います。– Google Play 開発者サービスなしでは動かないアプリを動かす
–
[Kotlin]スクロールするとヘッダーに収納されるTextViewを力技で作成してみた。[Android]
#はじめに
スクロールするとヘッダーに収納されるマーキーのタイトルを作りたくて始めた結果、力技で実装することにしました。__やりたいこと__

スクロールすると左画像の[ハチワレ女王]が右画像のようにヘッダーに収納される__力技に至った経緯__
1. CollapsingToolbarLayout + Toolbarで実装しよう!
> Toolbarにマーキーがない
2. マーキーするToolbarをカスタムビューで作ろう!
> リフレクションでTextView引っこ抜いてマーキーする設定にしたけどマーキーしない↓ とりあえず実装させた
Android: Github Actions で Gradle build daemon disappeared unexpectedly が発生するときの対処
Github Actions で Android Gradle プロジェクトをビルドするとき、プロジェクトが大きくなってくると Gradle daemon がクラッシュすることがあります。
メモリ不足により OOM (Out Of Memory) で Gradle Daemon プロセスが Kill されると以下のエラーメッセージが表示されます。
“`shell
FAILURE: Build failed with an exception.* What went wrong:
Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
“`## 対応: メモリサイズの調整
Gradle Daemon が使用するメモリサイズを調整します。Github Actions の workflow の `GRADLE_OPTS` 環境変数に `-Dorg.gradle.jvmargs` を渡します。
`.github/workflows/{workflow
Raspberry Pi4をAmazonプライムビデオ専用機に2
# Raspberry Pi4をAmazonプライムビデオ専用機に2
なんのことはないですが、1年ほど使用していて動作が不安定になってきたので
最新のLineageOSを再導入してみました。
目的は、Raspberry Pi4をAmazonプライム専用機として最導入しただけです。## 1.Raspberry PiにLineageOSを導入
### 1.1 LineageOSのダウンロード
[LineageOS 18.1 (Android 11) for Raspberry Pi 4](https://konstakang.com/devices/rpi4/LineageOS18/)上記サイトから「lineage-18.1-20210214-UNOFFICIAL-KonstaKANG-rpi4.zip」をダウンロードして、展開しておきます。
### 1.2 MicroSDカードへの書き込み
前回、同様にこのimgファイルをMicroSDカードに焼くには、[balenaEtcher](https://www.balena.io/etcher/)を使います。(v1.5.109
Android Studio でプロジェクトを作成後にリネームする
ささいなことではあるのですが
Android Studio でプロジェクト作成後に,
ちょっと気に入らないとか typo を後で発見したという理由で,
プロジェクト全体の名前をリネームしたいときがあるかもしれません.実際,適当なプロジェクトをつくって
名前を変えたいなと後で思ったのですが,
実際のところ意外と面倒であるということが分かったので,
あまりオススメされないとは思うものの
どんなものかメモとして書き残そうと思います.## まず,そのままリファクタしてみよう
`myproject1` というプロジェクトを `mysuperproject1` にリネームすることを考えます.
プロジェクトとしてルートモジュールを `Refactor` > `Rename…` からリネームできそうなので試みるのですが,
実はこれはできないということがわかります:
# はじめに
Jetpack Composeを使用している状況でActivityの`onNewIntent`や`onActivityResult`でアプリの画面状態を更新する方法についての記事となります。
Jetpack Composeでは状態を`MutableState`として保持し、`remember`を使用することで再Compose後も状態を保持することができます。ただしこれら基本的に特定のComposable関数以下のスコープ内に制限されてしまい、`onNewIntent`や`onActivityResult`からどうやって更新すればいいんや~だったたのでコードを書いてみたという流れになります。# やったこと
方針としては`MutableState`をActivityのメンバとして保持し、その値を`remember`でComposable関数に記憶させます。
1.Activityのメンバ変数に`MutableState`で変数を持たせる。
ここで定義した値を`onNewIntent`や`onActivityResult`で更新し、それらを読みこむComposable関数
Ubuntu 20.04でCommand line toolsのダウンロードからAndroidエミュレーターを動かすまで
## はじめに
Android Studio経由の説明が多いので、Command line toolsのダウンロードからAndroidエミュレーターを動かすまでの手順を残しておく。
## 環境変数ANDROID_SDK_ROOTの設定
Command line toolsはじめ、sdkをインストールするフォルダのルートをANDROID_SDK_ROOTとして環境変数に設定する。
例えば、/home/user/android/sdkを環境変数に設定する場合は、以下の通り。
~/.bashrcに書いておく。“`bash
$ export ANDROID_SDK_ROOT=/home/user/android/sdk
“`## javaのインストール
aptコマンドを使って、openjdkをインストールする。今回はopenjdk-17を使用した。
あとはPATHを通しておく。“`bash
JAVA_HOME=”/usr/lib/jvm/java-1.17.0-openjdk-amd64″
“`## Command line toolsのダウンロード
以下か
Jetpack Compose チュートリアルをただやってみるだけの記事 #1
# 初めに
この記事は、Jetpack Compose未経験のしがないAndroidエンジニアが[チュートリアル](https://developer.android.com/jetpack/compose/tutorial?hl=ja)をやってみるだけの記事です。
先日のメルカリのイベント [Android Office Hours〜2022年の技術トレンド大予想!〜](https://www.youtube.com/watch?v=8-ifCGQ20tg)でも、Jetpack Composeは今後Android開発においてデファクトスタンダードになっていくだろうと予想されていました。
Android開発で食べていく以上触っておかないといけないだろうと思い、とりあえずチュートリアルをやってみることにしました。# Jetpack Composeとは
Jetpack Composeは、GoogleがリリースしているAndroidのUI実装のツールで宣言的なUIフレームワークであるという特徴があります。
宣言的UIとは状態をUIに変換するという考え方です。
従来のXMLを用いた開発で
Android のパッケージの公開設定
パッケージの公開設定について、ハマったので記事にしておきます。
###### 問題の発生状況
Android 11 より前ではバインドできていたサービスが、下記の warning が出て見つからなくなった。
“`console
02-13 17:21:00.089 542 3921 W ActivityManager: Unable to start service Intent { act=com.ykato.sampleservice.ISampleService pkg=com.ykato.sampleservice } U=0: not found
“`###### アプリの構成
サービス (com.ykato.sampleservice)は apk としてインストールしてあり、それを テスターのサンプルアプリ(com.ykato.sampleservicetester
)からバインドして使っていました。###### 原因
下記に、記載がある通り Android 11 から自動的に公開されるアプリが制限されました。https://developer.
Android: Github Actions での最適な Gradle ビルドキャッシュ戦略
Github Actions で Android Gradle プロジェクトをビルドするときの最適な Cache 戦略をまとめます。
Android Gradle の Cache 戦略について解説していますが、Cache の種類 (Build Tool Cache, Dependencies Cache, Build Cache) の考え方は他の種類のプロジェクトにも通用します。
## 前提
以下の構成を前提とします。
* Gradle Kotlin DSL (build.gradle.kts / settings.gradle.kts)
* Gradle Version Catalog 使用
* buildSrc 使用
* Kotlin Multiplatform 使用
* Kotlin Native Compiler 設定だけに影響します## Github Actions Cache 設定
週次 Cache クリアを採用した場合の Cache 設定はこちらです。
“`yml
…
jobs:
build:
runs-on: ubuntu-la
MotionLayoutの例を試してみる(ImageFilterView)
前回はカスタム属性をやりました。
[カスタム属性](https://qiita.com/yuta317/items/a1fe49c5b705d442d484)今回はImageFilterViewを試していこうと思います。
# 公式リファレンス
https://developer.android.com/training/constraint-layout/motionlayout/examples?hl=jahttps://developer.android.com/training/constraint-layout/motionlayout/ref?hl=ja
# ImageFilterView
今回はビューの移動に伴ってビューの彩度の値を変更しようと思います。
リンク先に公式サンプルがあります。
[ImageFilterView](https://developer.android.com/training/constraint-layout/motionlayout/examples?hl=ja#imagefilterview_-_image_transiti
マテリアルなUIを単独で使用する方法
# はじめに
マテリアルなUIがかなり浸透してきていて、画像を丸く表示する為のShapeableImageViewや、枠などを設定できるMaterialCardViewなどを使用したいケースが多くなってきていますよね。
UIに枠や角丸をつけたいが故に、Drawableを大量生産している、、、歴史のあるプロジェクトではよく見かける例な気がします。
そんな時に、単独でマテリアルなUIを使用したいと思っても、基本はstyleから変えなければならず改修範囲が広く使えない、そんな経験あるのではないでしょうか?もしかしたらご存知の方も多いのかもしれませんが、styleを変更しなくてもマテリアルなUIを使用できる方法がありますので、ご紹介しようと思います。
# 設定内容
設定は非常に簡単です。
対象のマテリアルなUI、もしくは親のレイアウトに以下を付与するだけです。“`
android:theme=”@style/Theme.MaterialComponents”
“`上記を設定する事で、本来styleのparentにMaterialの設定を行わなければならない所を上記設定のみで
接続中の複数のAndroidデバイスに一括でadb installするコマンド
# 経緯
接続中の複数のAndroidデバイスに、同一のapkを一括でインストールしたい際にStack Overflowの以下の記事のjava – How can I adb install an apk to multiple connected devices? – Stack Overflow
https://stackoverflow.com/questions/8610733/how-can-i-adb-install-an-apk-to-multiple-connected-devices
この回答のワンライナーで元気に暮らしていたのですが
https://stackoverflow.com/a/8610829/2227705Android 11以降で `adb pair` コマンドで接続したデバイスはSerial Numberが長いせいか(詳細不明)xargsまわりが正常に動作してくれなくなりました。
Wi-Fi 経由でデバイスに接続する(Android 11 以降)
https://developer.android.com/studio/command-li
Androidの画面分割で固定指示してた画面が勝手に回転してさらにアクティビティが勝手に再生させられてしまう件
画面を縦向きに固定したければ
マニュフェストのactivityのところにandroid:screenOrientation=”portrait”
と書けば確かにそうなるのだが、画面分割で2画面表示にしたとき、スマホを横向きにすると、上記の設定にしているにも関わらず勝手に回転する(完全に防ぐにはOS側でrotationをoffにする必要があるがめんどくさい)。
で、回転それ自体は別に害はないのだが、回転すると、activityが再生されて計測がリセットされるのがとにかく困った。調べてみると、再生を防ぐには、同じくマニュフェストにandroid:configChanges=”keyboardHidden|screenSize|orientation”
などというふうに書けば良いとあり、これで解決しましたのでメモしておきます。
回転を止めるにはどうしたら良いのだろう。
Android開発のSDKでつまづいた
環境
Mac M1チップアプリをビルドしようとすると色々エラーがでてくる
#つまづきポイント1
buildToolsVersion 31 と 32 は
なぜかSDKファイルが壊れている云々のエラーが出た(M1だから?)
なので安定バージョンを選択“`build.gradle
buildToolsVersion “30.0.2”
“`#つまづきポイント2
・SDKとはなんぞや?
でつまづいた。Xcodeで必要なかった設定を初期設定として色々やらなければいけなかった
Android SDKからAPI Level 23 と最新API Level 32 をインストールAPILevelとはiOS開発でいうXcodeのバージョン?Swiftのバージョン?として考えるとイメージがしやすいのかな?(間違ってる気がする)
例えば
APILevel 23で開発行うとAndroid 6.0(Marshmallow) <- iPhoneで言うiOS 以前のスマホへは動作が確証されない? 逆にAPILevel32(現時点での最新)で開発を行うと23にはなかった新機能は使えるがA